Определить оставшиеся байты

Я работаю над проектом, в котором мне нужно отправить значение между двумя частями оборудования, используя CoDeSys. Используемая система связи CAN и может передавать только в байтах, делая максимальное значение 255.

Мне нужно отправить значение выше 255, я могу разделить это более чем на один байт и восстановить его на принимающей машине, чтобы получить исходное значение.

Я думаю, что могу разделить REAL значение на 255, и если результат больше 1, то деконструируйте значение в один байт, содержащий остатки, и один байт, содержащий количество 255 в целом числе.

Например, 355 будет равен одному байту 100, а другому 1.

Хотя я могу описать это, мне очень трудно понять, как на самом деле написать это в логике.

Кто-нибудь может здесь помочь?

1 ответ

Все это обрабатывается для вас в CoDeSys, если я вас правильно понимаю. 1. CAN - Да, это в байтах, но вы не должны использовать CANopen, вы используете FB низкого уровня, который просит вас отправить кадр CAN из 8-байтового массива?

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

Если вы пытаетесь деконструировать переменные построения из одного размера в другой, это легко, и я могу поделиться этим кодом с вами.

Другие вопросы по тегам