1

Тема: А как записать (и прочитать соответственно) по отдельности из D1 и D0?

Добрый день!

Может вопрос и простой, но все же прошу пояснить: у меня есть CAN-сообщение из 8 байт.
Передавать мне нужно что-то типа:
056 057 058 059 060 061 062 063

Но регистр сообщения передачи CAN двойной, например CAN0 D1:D0.
Поэтому у меня получается передать что-то типа:
056 056 057 057 058 058 059 059

А как записать (и прочитать соответственно) по отдельности из D1 и D0?

Модераторское: вынесено в отдельную тему. см. правила форума

2

Re: А как записать (и прочитать соответственно) по отдельности из D1 и D0?

см.здесь:

https://forum.canny.ru/viewtopic.php?id=745

https://forum.canny.ru/viewtopic.php?id=726

https://forum.canny.ru/viewtopic.php?pid=10197#p10197

3 (01-07-2022 11:03:39 отредактировано arctic)

Re: А как записать (и прочитать соответственно) по отдельности из D1 и D0?

Спасибо!

Разобрался. Теперь хочу уточнить по обратной задаче - считывание данных.
Принимаю из CAN следующее сообщение:
001 002 066 002 000 000 000 100

Для обработки данных регистров D0 и D1 использую конвертер 1:16. Вроде бы правильно работает.
А в регистре D2 (значение 066) у меня уставка. Поскольку я не могу видеть, что приходит в контроллер, решил проверить путем сравнения с активацией диодов.
Но как-то странно получается. Программу прилагаю.
В ней:
светодиод №3 всегда горит, независимо от изменения уставки.
светодиод №4 вообще не загорается.

Что делаю не так?

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

Иконка вложения forum.cfd 2.99 кб, скачивался 85 раз, последний раз 2022-07-01 

4

Re: А как записать (и прочитать соответственно) по отдельности из D1 и D0?

Что делаю не так?

Навскидку - значение на выходе блока №46 будет >62 при любом ненулевом значении на его входе.

Рекомендую воспользоваться симулятором CannyLab для отладки вашего алгоритма: https://canny.ru/docs/cannylab/simulator/

Документация по встроенным функциональным блокам с примерами: https://canny.ru/docs/fbd/#sec--fbd-funkcionalnye-bloki

Общие рекомендации по разработке: https://canny.ru/docs/tips_tricks/solut … ents_tips/

5

Re: А как записать (и прочитать соответственно) по отдельности из D1 и D0?

Нужен не сколько симулятор, сколько возможность посмотреть онлайн.
Мне нужно считать по отдельности два регистра:
D2: (значение, например) 066
D3: (значение, например) 002.

Моя проблема была в том, что я не совсем понимал, что может быть на входе "Регистра чтения D3:D2".
Результат "мучений" - в прикреплённом скриншоте.

Может рассмотреть возможность реализации в среде разработке одинарного входного/выходного регистра?
Мне такое вот понадобилось.

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

Иконка вложения Pic.jpg 137.56 кб, скачивался 26 раз, последний раз 2022-07-01