1 (21-01-2021 03:20:45 отредактировано mission1976)

Тема: Требуется подсказка по CAN

Доброго здоровья..
Собственно имеется датчик позиции на выходе CAN необходимые углы вычитаны ( еще раз спасибо за пинки в нужном направлении администратору форума)
К сожалению я некоторых моментов еще не понимаю но буду усваивать..
На фото пример построения диаграммы..
получу я на выходе логическую единицу или ноль для дальнейшего построения диаграммы?
Требуется при прохождении одного сообщения получить 1 при прохождении второго 0

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

Иконка вложения CAN_ON.png 75.65 кб, скачивался 68 раз, последний раз 2021-01-21 

2

Re: Требуется подсказка по CAN

Очевидно, вы не правильно применяете функциональные блоки Триггер SR
Описание работы блока с примерами приведено здесь: https://canny.ru/docs/fbd/triggers/sr_latch/
Вы можете проверить работоспособность вашего алгоритма воспользовавшись симулятором: https://canny.ru/docs/cannylab/simulator/
Примеры приема сообщений CAN вы можете найти здесь: https://canny.ru/docs/c53md1/can/#sec-- … an-primery
Диаграммы желательно прикладывать не только в виде изображений, но и в виде исходных файлов CFG

3 (22-01-2021 01:29:38 отредактировано mission1976)

Re: Требуется подсказка по CAN

Ошибку понял, осознал..Благодарю..
На входе биты данных.... требуется начальная конвертация в логическую единицу или ноль.

Примеры приема сообщений CAN вы можете найти здесь:

Если честно, всегда с большим трудом понимаю хелпы и примеры (хотя несомненно читаю и пытаюсь понять) поскольку человеку который их создает изначально все понятно, и он оценивает свое объяснение-помощь зачастую именно с этой точки зрения, а в реальности тот кто читает не всегда может разобраться в том что человеку писавшему кажется весьма понятно и доступно..

Диаграммы желательно прикладывать не только в виде изображений, но и в виде исходных файлов CFG

Исправимся..

4 (22-01-2021 04:16:30 отредактировано mission1976)

Re: Требуется подсказка по CAN

Исправил.. и попутно возник вопрос относительно цикла выполнения программы...
На сколько важно расположение блоков на странице?
Какова последовательность выполнения, построчно с лево на право, или слева на право столбиками?
Дело в том что в моем случае происходит два потока а не один, (понятно что на физическом уровне они одновременно выполнятся не будут) но возможно будет и такой случай...

В файле суть вопроса... колонки разного цвета..

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

Иконка вложения CAN_ON1.cfd 5.17 кб, скачивался 193 раз, последний раз 2021-01-22 

5

Re: Требуется подсказка по CAN

mission1976 пишет:

На сколько важно расположение блоков на странице?
Какова последовательность выполнения, построчно с лево на право, или слева на право столбиками?

Ответы на оба вопроса здесь: https://canny.ru/docs/fbd/cfd/#sec--fbd … -diagramma

6

Re: Требуется подсказка по CAN

Это я читал, но ясности это не добавило увы..
Если следовать написаному то за одну единицу времени контролер выполняет только одну опирацию?
Если я что то понял то несмотря на наличие большого количества портов ввода вывода одновременно ( за единицу времени) он только может сравнить их состояние, а произвести действие одновременно не в состояни.
Для понимая опишу проще..
1 вход при получении на него сигнала на выход 2 подать питание.
3 вход при получении на него сигнала на выход 4 подать питание.
Вопрос при условии одновременного получения сигнала на входе 1 и 3 мы получим так же одновременно питание на выходах 2 и 4?
Если следовать описанию то как я понимаю это не возможно..
В реальности  мы получим сначала питание на выходе 2 и только по окончанию  обработки на 4м.?

7

Re: Требуется подсказка по CAN

mission1976 пишет:

Это я читал, но ясности это не добавило увы..

Я правильно понимаю, что в первых шести абзацах по ссылке, которую я привел выше, вы не нашли ответов на ваши вопросы:

mission1976 пишет:

    На сколько важно расположение блоков на странице?
    Какова последовательность выполнения, построчно с лево на право, или слева на право столбиками?

?

mission1976 пишет:

Для понимая опишу проще..

Порядок взаимодействия диаграммы с аппаратной частью контроллера описан здесь: https://canny.ru/docs/common_plc/executionenvironment/

8 (23-01-2021 01:44:50 отредактировано mission1976)

Re: Требуется подсказка по CAN

Видимо я туповат, но не вижу я там ответа на свой конкретно поставленный вопрос.
Все что там описано так или иначе относится к одной цепи последовательных действий..
А если их Две?

Сеть номер №1 

1 вход при получении на него сигнала на выход 2 подать питание.

Сеть номер №2 

3 вход при получении на него сигнала на выход 4 подать питание.

Меня интересует одновременно ли я получу на выходах 2 и 4 ожидаемый результат?
Или пока не отработает Сеть номер 1 второй поток Сети 2 не начнёт выполняться?
Что сложного в моем вопросе я не понимаю...




В принципе уже можно не отвечать..
Из симулятора при построении простейшей операции...понятно то что....

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

Вот как говорится и реле wink времени.... при простейшей операции..

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

И конечно возможно я заблуждаюсь.......

9

Re: Требуется подсказка по CAN

mission1976 пишет:

А если их Две?

Не важно сколько ветвлений в вашем алгоритме - диаграмма вычисляется целиком. И только после исполнения последнего блока диаграммы, происходит изменение состояния выходных каналов контроллера, пакетно. Что и отражено в документации по ссылке выше. Так, в частности, на рисунке 1 показано, что запись ресурсов / установка состояния контроллера происходит только после исполнения последнего блока диаграммы.

Следовательно, если я правильно понимаю вашу мысль, это:

mission1976 пишет:

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

не верно.

Что сложного в моем вопросе я не понимаю...

В каком именно?

Модераторское: Тема почищена от флуда. AlexN, mission1976 ограничимся устным предупреждением?

10 (25-01-2021 22:55:01 отредактировано mission1976)

Re: Требуется подсказка по CAN

что запись ресурсов / установка состояния контроллера происходит только после исполнения последнего блока диаграммы.

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

В любом случае спасибо за пояснение...

11

Re: Требуется подсказка по CAN

mission1976 пишет:

Ошибку понял, осознал..Благодарю..

Теперь вы неправильно используете блок "Логическое И": на входе "Значение Y" у вас константа, что лишает блок смысла.
Описание работы блока с примерами приведено здесь: https://canny.ru/docs/fbd/logicoperations/logical_and/

Вызывает вопрос о целесообразности и применение вами блока "Исключающее ИЛИ" у которого константы на обоих входах.
Описание работы блока с примерами приведено здесь: https://canny.ru/docs/fbd/logicoperations/exclusive_or/

mission1976 пишет:

На входе биты данных.... требуется начальная конвертация в логическую единицу или ноль.

Как правило - не требуется, конвертация происходит автоматически. И об этом тоже написано в документации: https://canny.ru/docs/fbd/cfd/#sec--fbd-cfd-dannye

12 (27-01-2021 00:45:38 отредактировано mission1976)

Re: Требуется подсказка по CAN

Спасибо..
Да еще подумаю об этом..
Сам не поймёшь значит в голове не отложится..

13

Re: Требуется подсказка по CAN

Подумал... и все переделал..

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

Иконка вложения CAN_ON2.cfd 4.47 кб, скачивался 192 раз, последний раз 2021-01-27 

14

Re: Требуется подсказка по CAN

Ну вот! Совсем другое дело!

15

Re: Требуется подсказка по CAN

Благодарю.

16 (31-01-2021 04:36:56 отредактировано mission1976)

Re: Требуется подсказка по CAN

Продолжение...
Шину читаем но,,, если датчик поворачивать медленно (весьма медленно) то схема отрабатывает как положено, чуть быстрее видимо не успевает фиксировать адреса..
Отработка не адекватная, может подхватить может нет...(чаще нет)

17

Re: Требуется подсказка по CAN

Хорошей практикой является использование фильтров CAN. С их помощью можно ограничить трафик CAN обрабатываемый контроллером, что сократит возможные потери сообщений с конкретными ID, если дело в этом (см.вложение)
Кроме того, дело может быть в неправильной интерпретации вами данных CAN.
Дело может прояснить лог-файл сообщений с установленным фильтром по ID=0x00C2 снятый с при быстром и медленном вращении датчика.

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

Иконка вложения CAN_ON2-3_1.cfd 4.79 кб, скачивался 166 раз, последний раз 2021-02-01 

18 (02-02-2021 00:28:13 отредактировано mission1976)

Re: Требуется подсказка по CAN

Дело может прояснить лог-файл сообщений с установленным фильтром по ID=0x00C2 снятый с при быстром и медленном вращении датчика.

Организую на днях..

Что касается фильтра... у меня в сети два устройства, Канни и датчик, больше никого.. т.е. читаем только  ID=0x00C2

19

Re: Требуется подсказка по CAN

В исходной диаграмме закралась ошибка в интерпретации данных (положение байтов). Если байты расположить правильно (D1:D0 привести к D0:D1), то получается все гораздо проще. 0x8000 - нулевое положение; движение в сторону 0x7800 (уменьшение) - поворот вправо; движение в сторону 0x8700 (увеличение) - поворот влево. При этом 1 единица значения равна 0.1 градуса (0x81C0 - 0x8000 = 448, т.е. 44.8 градуса влево).
Также использование блоков равенства не позволяло отслеживать быстрые повороты датчика (нужные значения проскакивались). Работа с диапазонами значений (использование блоков "больше"/"меньше" и т.п.) может решить эту проблему.
Исправленная диаграмма во вложении.

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

Иконка вложения c53md1_CAN_ON4.cfd 5.11 кб, скачивался 169 раз, последний раз 2021-02-02 

20

Re: Требуется подсказка по CAN

Доброго здоровья..
Файлы  быстро медленно ну на сколько это возможно руками.

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

Иконка вложения Быстро 0_лево180_0_право180_0.txt 133.81 кб, скачивался 209 раз, последний раз 2021-02-03 

Иконка вложения Медленно 0_лево180_0_право180_0.txt 427.64 кб, скачивался 165 раз, последний раз 2021-02-03 

21 (03-02-2021 06:49:59 отредактировано mission1976)

Re: Требуется подсказка по CAN

В исходной диаграмме закралась ошибка в интерпретации данных

Еще теперь это нужно переварить и понять smile

По больше меньше смысл уловил...
Ну на счет перепутанных бит данных понял (вроде по описанию делал, но возможно не верно понял)нужно было что вижу то и вводить.. D0|80 D1|00.., следовательно сдвиг на 8 бит наверно стоит убрать иначе он возвращает наши привёрнутые значения..(файлы выше)

22

Re: Требуется подсказка по CAN

mission1976 пишет:

...Ну на счет перепутанных бит данных понял (вроде по описанию делал, но возможно не верно понял)нужно было что вижу то и вводить.. D0|80 D1|00.., следовательно сдвиг на 8 бит наверно стоит убрать иначе он возвращает наши привёрнутые значения..(файлы выше)

В исходной диаграмме положение байт у констант и у регистра принятых данных CAN совпадало. Однако сравнивать только значения регистра не совсем верно, следует преобразовать его в корректное значение. Иногда данные в сообщениях идут старшим байтом вперед, иногда младшим байтом вперед. В зависимости от этого может потребоваться их преобразование тем или иным образом.
D0:D1= 0x8000=32768. Соседнее с ним значение,например D0:D1= 0x8001=32769. Тогда как при D1:D0=0x0080=128, соседнее значение будет D1:D0=0x0180=384.
По этому правильно будет действовать как в приведенной мной диаграмме (c53md1_CAN_ON4.cfd).

23 (04-02-2021 06:47:05 отредактировано mission1976)

Re: Требуется подсказка по CAN

Благодарю..

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

Наверное.... как я вижу, разумно добавить в программу регистры чтения записи и перевернутом состоянии т.е. не только D1:D0  но и D0:D1 коли уж встречается подобный тупик, (поскольку я изначально данные завел корректно)