Сообщение от
Гарчев Евгений
ф.б. на запись отрабатывает не за один цикл, поэтому буфер на отправку необходимо формировать однократно перед вызовом этого ф.б. После вызова ф.б. необходимо сразу же снять флаг запуска в следующем действии (ModbusAdrDO11(enable:=false); ) и потом уже ждать завершения его работы.
Скажите я правильно вас понял:
Код:
45:IF OldDOByteAdr33=DOByteAdr33 THEN master1:=0;
ELSE
Buffer[0]:=0;
Buffer[1]:=DOByteAdr33;
ModbusAdrDO33(
Enable:= enabl,
Mode:= MB_RTU,
DevAddr:= 33,
FirstAddr:= 50,
Quantity:= 1,
ComHandle:= Settings.Port,
TimeOut:= TimeOut,
Buffer:= Buffer,
Complete=> cmpl,
Exception=> ErrorDO33,
RegCnt=> DataSize);
ModbusAdrDO33.enable:=FALSE;
IF cmpl
THEN
OldDOByteAdr33:=DOByteAdr33;
master1:=0;
END_IF
END_IF