1 (11-07-2016 01:34:13 отредактировано a.dav)

Тема: Прошу оценить диаграмму

Жду заказанный SDK Kit и решил пока поупражняться. Оцените правильность и работоспособность.
Исходные данные:
Два датчика DS18B20 на одной шине должны управлять насосом и вентиллятором.
0-левой датчик на теплообменнике, 1-й на подводящей трубке.
Термостаты:
При нагевании теплообменника до 70 включается циркуляция, при остывании до 65 -выключается.
При нагревании подводящей трубки до 70 включается вентиллятор, при остывании до 65 - выключается.
При перегреве подводящей трубки до 75 выключается циркуляция, при остывании до 70 - включается.
Работа вентиллятора и помпы ограниченна скоростью автомобиля и оборотами двигателя, получаемыми из CAN шины.
Вентиллятор выключатся при 40 кмч, включается при 30. Помпа выключается при 1000rpm, включается при 900rpm.
(данные для CAN оставленны из примеров, т.к. жду SDK. Нужно подключаться к машине. Теоретически известна только
скорость шины - 125кб\сек)

И в конце кусок для отладки - мониторинга темпераур на компе\планшете через rs232-usb адаптер и Hyper-terminal.

Вопросы:
работоспособность
Физическое подключение rs232
Как выловить параметры скорости и оборотов из CAN шины....

Вложений в сообщении

Иконка вложения 1.png 288.79 кб, скачивался 166 раз, последний раз 2016-07-11 

2

Re: Прошу оценить диаграмму

Добавил математику для оборотов.

Вложений в сообщении

Иконка вложения 2.png 311.67 кб, скачивался 213 раз, последний раз 2016-07-11 

3

Re: Прошу оценить диаграмму

a.dav пишет:

Вопросы:
работоспособность...

Внешне диаграмма выглядит вполне работоспособной. Явных ошибок не обнаружено, все хорошо структурировано.
Не дожидаясь получения контроллера можете проверить работоспособность диаграммы и отладить ее в симуляторе CannyLab.

a.dav пишет:

Физическое подключение rs232...

Способ подключения CANNY7 к ПК показан, например, тут: http://forum.canny.ru/viewtopic.php?id=46
Может потребоваться переходник COM->USB.

a.dav пишет:

Как выловить параметры скорости и оборотов из CAN шины...

Нужно запрограммировать CANNY7 для работы в качестве CAN-монитора (см. http://wiki.canny.ru/index.php?title=CA … N)_monitor, снять LOG с автомобиля в разных режимах его работы и провести анализ полученных данных.

a.dav пишет:

Добавил математику для оборотов.

В математике для RPM выходное значение блока №51 (Сложение) равно значению сети RPM_Word. Какое именно преобразование требовалось сделать? Проверьте работу этого фрагмента в симуляторе.

В Формирователе для UART регистр установки сообщения UART1 D3:D2 должен быть, как в примере, откуда взято решение, равен " :" (пробел и двоеточие), в представленном варианте на месте D3 - непечатный символ '/0'. Но это не критично.

4

Re: Прошу оценить диаграмму

Математику прогонял в симуляторе. Конечные значения выдаёт корректные.

Смысл сего действа: Под id 010C выдаётся значение в виде двух байтов (A и B) соответственно. Их требуется обработать по формуле ((A*256)+B)/4. Результатом будут обороты. (И это подтверждено практикой на другом оборудовании)

Вот я и сгородил "формулу". Сначала выделяем байты, потом считаем. Хотя промежуточный итог - озадачивает smile)

http://elm-scanner.ru/obd-2/obd-pids   информация для примера.

5

Re: Прошу оценить диаграмму

А вообще по симулятору непонятка (замечание).

Плохо, что нет никаких  "тумблерров" служебных отладочных чтобы менять входные параметры в процессе выполнения программы.
Полупроверка получается.
Приходится выходить из симулятора, менять параметр и смотреть дальше

Или я чего-то недопонял?

6

Re: Прошу оценить диаграмму

a.dav пишет:

Или я чего-то недопонял?

В режиме симулятора, можно принудительно изменить значение любой сети через контекстное меню, доступное по нажатию на ней правой кнопки мыши: http://wiki.canny.ru/index.php?title=%D … 0.B8.D0.B9

7

Re: Прошу оценить диаграмму

Я уже нашёл эту возможность...
Мы же инструкцию читаем в самом крайнем случае wink))

А назначение на клавиши ПК было-бы в некоторых случаях гораздо удобней. (как кто-то писал на форуме)

8

Re: Прошу оценить диаграмму

Ctrl+двойной клик левой кнопкой - быстрый способ установки значения в 1.
Симулятор будем развивать, в него еще многое можно добавить.

9

Re: Прошу оценить диаграмму

Спасибо за подсказку.
Мне кажется тут важнее не логические значения, а числовые.
привязал например QWERTY к входному регистру или к константе, с разными числовыми значениями. И щёлкаешь, смотришь на результат.
Логику и так достаточно просто отлаживать. ИМХО

10

Re: Прошу оценить диаграмму

a.dav пишет:

Математику прогонял в симуляторе. Конечные значения выдаёт корректные.

Смысл сего действа: Под id 010C выдаётся значение в виде двух байтов (A и B) соответственно. Их требуется обработать по формуле ((A*256)+B)/4. Результатом будут обороты. (И это подтверждено практикой на другом оборудовании)

Вот я и сгородил "формулу". Сначала выделяем байты, потом считаем. Хотя промежуточный итог - озадачивает smile)

http://elm-scanner.ru/obd-2/obd-pids   информация для примера.

Из регистра чтения CAN D7:D6 в именованную сеть "RPM_Word" передается 16-битное (двухбайтовое) числовое значение (0х0000...0хFFFF=0...65535), с которым можно сразу работать как с числом.
Из него, при необходимости, можно выделить отдельные байты, но в данном случае достаточно просто выполнить деление на 4 (либо сдвиг вправо на 2) чтобы получить требуемый результат.

11

Re: Прошу оценить диаграмму

Нарисовал близкую к финальной диаграмму.  Прошу оценить.

Часть которая взаимодействует с CANом - проверена, и работает. (ещё раз спасибо за ID speed & rpm)
Часть формирователь для RS232 - работает.
Часть с термометрами - не проверял.

Есть три вопроса:
1. Как организовать спящий режим при отсутствии, и пробуждение при наличии +5в (лог.1) на входе 2 ?
     При том, что по CAN есть непрерывный обмен.
2. Как организовать в спящем режиме периодическое моргание красного светодиода (например 1 раз в несколько секунд)
3. Как организовать оптимальней выдачу в строку через UART информации о включении/выключении насоса/вентиллятора например символом "*", или строкой "ON" ?

Вложений в сообщении

Иконка вложения my_7_debug.cfd 14.82 кб, скачивался 371 раз, последний раз 2016-07-18 

12

Re: Прошу оценить диаграмму

a.dav пишет:

Нарисовал близкую к финальной диаграмму.  Прошу оценить.

В общем, ошибок не обнаружено, все должно корректно работать.
Нет смысла находить среднее арифметическое показаний скорости, достаточно использовать какое-либо одно показание, т.к. разница между ними не превышает 0,5км/ч, что не является принципиальным - погрешность показаний спидометра больше (графики скоростей по разным показаниям во вложении).

a.dav пишет:

1. Как организовать спящий режим при отсутствии, и пробуждение при наличии +5в (лог.1) на входе 2?
При том, что по CAN есть непрерывный обмен.

На практике, когда CAN не спит, нет особого смысла переводить контроллер в спящий режим, т.к. его потребление на фоне остальных устройств и систем незначительно.
Организовать такое решение на CANNY7 возможно, но задача достаточно нетривиальная: требовалось бы менять конфигурацию драйвера CAN, что в свою очередь влечет автоматическую перезагрузку контроллера.
Нужно исходить из целесообразности данного решения. Возможно просто следует использовать управляющий сигнал с входа №2 для активации работы алгоритма, а в сон уходить при отсутствии активности CAN - когда и автомобиль спит.

a.dav пишет:

2. Как организовать в спящем режиме периодическое моргание красного светодиода (например 1 раз в несколько секунд).

Находясь в режиме пониженного энергопотребления контроллер периодически просыпается на 1 проход диаграммы. Это можно использовать для моргания красным светодиодом (вариант решения - см.вложение: используя особенности режима сна, светодиод будет включаться 1 раз в 2 секунды на 1 секунду).
Также следует подумать о целесообразности применения такой индикации. Можно индицировать рабочий режим, а в режиме сна - выключать светодиод вообще.
Более подробная информация о режиме сна доступна в Wiki.

a.dav пишет:

3. Как организовать оптимальней выдачу в строку через UART информации о включении/выключении насоса/вентиллятора например символом "*", или строкой "ON" ?

Это делается аналогично выводу строки с температурой датчиков. Нужно определиться с форматом строки вывода (что должно выводиться и в каком виде), помня при этом что на один проход диаграммы в UART может быть отправлено не более 16 байт. Можно отправлять и более длинные строки, но за несколько проходов диаграммы.

Вложений в сообщении

sleep_blink.png, 17.3 кб, 766 x 130
sleep_blink.png 17.3 кб, скачивался 335 раз, последний раз 2016-07-18 

Иконка вложения volvo_speed.png 40.23 кб, скачивался 193 раз, последний раз 2016-07-18 

13

Re: Прошу оценить диаграмму

Сделал практически законченную диаграмму. Прошу оценить.

Правильно ли выполнен режим сна?  Сон просто по неактивности CAN. Будет ли просыпаться?

Изменил формироватьель для UART. На отладочной плате всё выводит правильно.

Добавил большой блок с формирователем звуковых предупреждений на пьезоизлучателе. Подключен к выходу 7.

Не будет ли он тормозить всю схему, если нет предпосылок для сработок?

И мне не нравится его огромный вид. Как оптимизировать? Если можно.

Вложений в сообщении

Иконка вложения my_7_debug.cfd 21.62 кб, скачивался 376 раз, последний раз 2016-07-19 

14

Re: Прошу оценить диаграмму

a.dav пишет:

Сделал практически законченную диаграмму. Прошу оценить.

Особых замечаний нет. Но. В диаграмме работа идет только с положительными значениями температуры, ее знак нигде не проверяется. Знак может быть у каждой температуры свой, но нигде не проверяется кому он принадлежит... отдельно сохраняются только целые части значений температуры. Но он (знак) выводится в UART.

a.dav пишет:

Правильно ли выполнен режим сна?  Сон просто по неактивности CAN. Будет ли просыпаться?

Режим сна сделан правильно. Просыпаться будет. Но запрет сна по наличию принятых данных CAN тут не нужен. Активность задействованных интерфейсов уже содержится в соответствующем регистре (подробнее см. wiki)
Дополнительный вход запрета сна может использоваться для того, чтобы не разрешить контроллеру уйти в сон при выполнении критических частей пользовательского алгоритма, например, чтобы он не уснул когда воспроизводится звуковой сигнал и т.п.

a.dav пишет:

Не будет ли он тормозить всю схему, если нет предпосылок для сработок?

Добавление любых новых блоков немного удлиняет цикл выполнения диаграммы. В данном случае на диаграмме блоков не много, сколько-нибудь чувствительного замедления работы диаграммы это не вызовет (подробнее см. wiki).

a.dav пишет:

И мне не нравится его огромный вид. Как оптимизировать? Если можно.

Оптимизировать можно, но возможно что этого не требуется. Вариант альтернативного решения во вложении качестве примера того, что есть и другие подходы.

Вложений в сообщении

Иконка вложения buzzer.cfd 2.65 кб, скачивался 350 раз, последний раз 2016-07-19 

15

Re: Прошу оценить диаграмму

DS18B20 насколько я помню ниже -55грд не умеет измерять. Да и вероятность температур -60 - 85 надеюсь не высокая...,
а если и будут, то маловероятно будет смысл в контроллере как таковом. ))))
Поэтому я решил знак игнорировать в триггерах.
В выводе через UART знак сохраняется для информации зимой.

Оптимизировать звук пожалуй не буду. Ваш алгоритм не проще....

А вот про затормаживание работы диаграммы вопрос был в задержках 1500мс, 200мс и т.п.
Я так понимаю, что диаграмма затормозится на это время лишь в случае отработки этих задержек.

16

Re: Прошу оценить диаграмму

a.dav пишет:

Я так понимаю, что диаграмма затормозится на это время лишь в случае отработки этих задержек.

Нет, это не так.
Каждый блок, добавляемый на диаграмму, увеличивает продолжительность одного цикла исполнения диаграммы на некоторую, условно фиксированную величину, порядка 30-50 микросекунд, в зависимости от типа блока и больше ни от чего. Условно говоря, все блоки на диаграмме исполняются параллельно, не задерживая друг друга.