Приношу свои извинения. В теме программирования ПЛК совсем не давно. Поставили задачу написать программу для ПЛК (segnetics matrix) для отслеживания массы груза. Используются промышленные весы. Производитель весового оборудования ответил, что для получения веса необходимо отправить команду D0 на адрес 0
Все данные в ASCII кодах, конец команды - символы с кодами 0x0D 0x0A или просто 0x0A
Запрос веса:
D0, где 0 - адрес, установленный в настройках
Ответ:
W008700+0124 C2
где 0 - адрес ответившего терминала,
08 - режим работы
7 - состояние входов, 7 значит все три входа в состоянии лог. 1.
Бит 0 соответствует датчику положения контейнера,
бит 1 - датчик заслонки,
бит 2 - датчик каретки (каплесбора?).
00 - состояние выходов, в шестнадцатеричной системе. 00 - все выключено, 1F - все включено
бит 0 - транспортер
бит 1 - загрузка
бит 2 - насос
бит 3 - каретка
бит 4 - зумер
+0124 - вес.
С2 - контрольная сумма.
Программу для контролера можно писать только на FBD.
Прошу помощи, объясните пожалуйста как отправить команду D0 и обработать ответ. Общение ПЛК с весами происходит по RS-485, протокол неизвестен.
На сколько я понял то команда D0 должна отправляется при помощи ST (не силен в нем) как-то так:
//Код команды
data[0] = 44; // D
//Адрес устройства
data[0] = 33; // 0
И еще вопрос.
Отправить команду и прочитать регистр это разные понятия? Хотя в случае чтения регистра, мы точно знаем функцию чтения/записи, адрес устройства, номер регистра, в моем же случае просто отправить команду.