Определить оставшиеся байты
Я работаю над проектом, в котором мне нужно отправить значение между двумя частями оборудования, используя CoDeSys. Используемая система связи CAN
и может передавать только в байтах, делая максимальное значение 255.
Мне нужно отправить значение выше 255, я могу разделить это более чем на один байт и восстановить его на принимающей машине, чтобы получить исходное значение.
Я думаю, что могу разделить REAL
значение на 255, и если результат больше 1, то деконструируйте значение в один байт, содержащий остатки, и один байт, содержащий количество 255 в целом числе.
Например, 355 будет равен одному байту 100, а другому 1.
Хотя я могу описать это, мне очень трудно понять, как на самом деле написать это в логике.
Кто-нибудь может здесь помочь?
1 ответ
Все это обрабатывается для вас в CoDeSys, если я вас правильно понимаю. 1. CAN - Да, это в байтах, но вы не должны использовать CANopen, вы используете FB низкого уровня, который просит вас отправить кадр CAN из 8-байтового массива?
Если это ваши собственные два пользовательских контроллера (вы программируете оба из них в CoDeSys), просто используйте переменные сети. NETvariables позволяет вам передавать переменные любого типа, и вы можете взять список переменных с одного контроллера и импортировать его на другой контроллер, и все данные отобразятся. Вам не нужно делать какие-либо переменные манипуляции, это ручка для вас под капотом. Но я не знаю специфики вашей системы и того, что вы пытаетесь сделать.
Если вы пытаетесь деконструировать переменные построения из одного размера в другой, это легко, и я могу поделиться этим кодом с вами.