[00][10][03][E9][00][0C][18] (*заголовок со всеми вытекающими*)
[00][00][00][00][00][00][00][23] (*запись в прибор №1*)
[00][00][00][00][00][00][00][24] (*запись в прибор №2*)
[00][00][00][00][00][00][00][25] (*запись в прибор №3*)
[4A][BC] (*контрольная сумма*)
дело в том, что я понятия не имею как контроллер раскладывает байты физически, на своем аппаратном уровне.
у меня есть карта памяти, для СМИ2 она может выглядеть как-то так:
;Direction - направление (read & write)
;Type - тип (битовые или регистровые)
;Baudrate - скорость слэйва
;Address - адрес слэйва в сети RS-485
;var(0-n) - адрес#тип#символьное имя#комментарий

[Request0]
Direction=read
Type=reg
Baudrate=9600
Address=26
Period=100
var0=0#long#dev#название прибора
var1=2#long#ver#версия ПО прибора
[Request1]
Direction=read
Type=reg
Baudrate=9600
Address=26
Period=100
var0=d#int#n.Err#код сетевой ошибки
var1=e#int#Status#Байт статуса
[Request2]
Direction=read
Type=reg
Baudrate=9600
Address=26
Period=100
var0=24#long#O.String#4 байта состояний сементов индикатора
var1=26#int#O.Ind.Mode#проверка состояния Мигает/Нет
[Request3]
Direction=read/write
Type=reg
Baudrate=9600
Address=26
Period=100
var0=4#int#bPS#Скорость обмена
var1=5#int#len#Длина слова данных
var2=6#int#Parity#контроль четности
var3=7#int#stopBit#количество стоповых бит
var4=8#int#rS.dL#задержка ответа прибора
var5=9#int#t.out#сетевой тайм-аут
var6=a#int#Addr#сетевой адрес
var7=b#int#Protocol#тип протокола
var8=c#int#A.Len#Длина сетевого адреса протокола ОВЕН
[Request4]
Direction=read/write
Type=reg
Baudrate=9600
Address=26
Period=100
var0=f#int#Apply#Применение настроек
var1=10#int#Ad.Ad#Код пользовательской функции
var2=11#int#typ.data#Тип переменной
var3=12#int#dP#положение десяттичной точки
var4=13#int#PeriodFlashing#период мигания
[Request5]
Direction=read/write
Type=reg
Baudrate=9600
Address=26
Period=100
var0=19#int#val.Int#переменная INT
var1=1a#int#val.Word#переменная WORD
var2=1b#long#val.Float#переменная Float
var3=1d#long#val.String1#переменная String1
var4=1f#long#val.String2#переменная String2
var5=21#long#val.Portret#переменная Portret
var6=23#int#Ind.Mode#установка Мигает/Нет
[Request6]
Direction=read/write
Type=reg
Baudrate=9600
Address=26
Period=100
var0=27#int#OWEN#временный перевод на протокол ОВЕН
а может и как-то иначе.
понимаете, как программист я избавлен от лишних подробностей протокола.
у меня есть необходимый минимум
адрес прибора, адрес регистра в этом приборе по этому адресу, тип переменной этого регистра и что сделать. я могу выбрать читать его или писать в него. все остальное делает контроллер. он сам выбирает тип функции. и если я указываю "групповые запросы" - он будет делать это групповыми функциями и т.д. и т.п.

так вот, еще раз повторяю свой вопрос:
как оформить шировещательную передачу?
по какому адресу отправлять?
в какой регистр класть?
какой тип данных использовать для этого регистра?

пробовал отправлять по адресу нуль, в регистры 1000+адрес прибора, целое - не получилось.

что я делаю не так?