Нет ни какой разницы что при отправке в МК110-220.4К.4Р адрес - 2 DIP3 включен
PHP код:
set2, set3: MB_WR_REGS; (* Функция записи значения регистров 16 (0x10) Write Multiple Registers *)
Buffer[0] := 0;
Buffer[1] := 15; (* Битовая маска состояния дискретных выходов*)
set2(
Enable:= TRUE, (* Разрешение работы блока *)
Mode:=MB_RTU , (* Режим передачи ASCII/ RTU *)
DevAddr:=2 , (* Адрес ведомого устройства *)
FirstAddr:= 18, (* Номер первого регистра для чтения *)
Quantity:= 1, (* Количество записываемых регистров *)
ComHandle:=Settings.Port , (* Номер COM-порта *)
TimeOut:=TimeOut , (* Таймаут T#ХХХms *)
Buffer:=Buffer , (* Буфер данных *)
Complete=>cmpl , (* Скопировать признак завершения операции *)
Exception=>Error); (* Скопировать регистр ошибок *)
IF cmpl THEN (* Если завершено *)
CASE Error OF (* Делаем проверку ошибок*)
255:
Save_error(Err:= 22); (* Ошибка таймаута *)
254:
Save_error(Err:= 23); (* Аппаратная ошибка ПЛК *)
END_CASE
set2(
Enable:=FALSE , (* Завершаем работу блока *)
Mode:=MB_RTU , (* Режим передачи ASCII/ RTU *)
DevAddr:=2 , (* Адрес ведомого устройства *)
FirstAddr:= 18, (* Номер первого регистра для чтения *)
Quantity:= 1, (* Количество записываемых регистров *)
ComHandle:=Settings.Port , (* Номер COM-порта *)
TimeOut:=TimeOut , (* Таймаут T#ХХХms *)
Buffer:=Buffer); (* Буфер данных *)
master := 4;
END_IF
МК110-224.8ДН.4Р адрес - 3
PHP код:
Buffer[0] := 0;
Buffer[1] := 15; (* Записываем данные в буфер*)
set3(
Enable:= TRUE, (* Разрешение работы блока *)
Mode:=MB_RTU , (* Режим передачи ASCII/ RTU *)
DevAddr:=3 , (* Адрес ведомого устройства *)
FirstAddr:= 50, (* Номер первого регистра для чтения *)
Quantity:= 1, (* Количество записываемых регистров *)
ComHandle:=Settings.Port , (* Номер COM-порта *)
TimeOut:=TimeOut , (* Таймаут T#ХХХms *)
Buffer:=Buffer , (* Буфер данных *)
Complete=>cmpl , (* Скопировать признак завершения операции *)
Exception=>Error); (* Скопировать регистр ошибок *)
IF cmpl THEN (* Если завершено *)
CASE Error OF (* Делаем проверку ошибок*)
255:
Save_error(Err:= 32); (* Ошибка таймаута *)
254:
Save_error(Err:= 33); (* Аппаратная ошибка ПЛК *)
END_CASE
set3(
Enable:= FALSE , (* Завершаем работу блока *)
Mode:=MB_RTU , (* Режим передачи ASCII/ RTU *)
DevAddr:=3 , (* Адрес ведомого устройства *)
FirstAddr:= 50, (* Номер первого регистра для чтения *)
Quantity:= 1, (* Количество записываемых регистров *)
ComHandle:=Settings.Port , (* Номер COM-порта *)
TimeOut:=TimeOut , (* Таймаут T#ХХХms *)
Buffer:=Buffer); (* Буфер данных *)
master := 1;
END_IF
причем, признак завершения операции cmpl появляется одновременно с ошибкой = 255.
выхода на модулях включаются.