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

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

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

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

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

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

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


person SilverShotBee    schedule 13.09.2015    source источник
comment
Ваш вопрос очень похож на ваш старый вопрос: stackoverflow.com/questions/31369151/ . Почему мои решения, представленные в моем последнем ответе, не решают вашу проблему? Примечание. Вы используете значение REAL, и вы всегда должны отправлять все 4 байта в REAL, не имеет значения, превышает ли значение 255. Поскольку все 4 байта необходимы для точности арифметики с плавающей запятой.   -  person Felix Keil    schedule 14.09.2015


Ответы (1)


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

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

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

person Steve Pfeifenroth    schedule 14.11.2015