Код:
(*Записываем задание*)
wVar:=REAL_TO_WORD(PCHV[i].rReference/100*16384);
IF wVarwOldReference THEN
SendModbus06( (*Функция 06 - Запись значения регистра*)
Enable:=bEnable, (*Разрешение работы блока*)
Mode:=MB_RTU, (*Режим передачи ASCII/ RTU*)
DevAddr:=i+1, (*Адрес ведомого устройства*)
RegAddr:=16#C359, (*Номер регистра для записи*)
ComHandle:=csSettings.Port, (*Номер COM-порта*)
TimeOut:=tTimeOut, (*Максимальная задержка ведомого устройства на обработку запроса*)
Value:=wVar, (*Значение регистра*)
Complete=>bComplete, (*Признак завершения операции*)
Exception=>byException); (*Исключения протокола MODBUS или ошибки:
0x00 – ошибок или исключений MODBUS не обнаружено,
0xFE – аппаратная ошибка ПЛК,
0xFF – ошибка таймаута.*)
IF bComplete THEN
IF byException=0 THEN (*Если нет ошибок*)
wOldReference:=wVar;
PCHV[i].bErrorCon:=FALSE;
byLoss[i]:=0;
ELSE
IF byLoss[i]>byLossMax THEN
PCHV[i].bErrorCon:=TRUE;
ELSE
byLoss[i]:=byLoss[i]+1;
END_IF;
END_IF;
byStep:=byStep+1; (*Переходим к следующей команде*)
END_IF;
ELSE
byStep:=byStep+1;
END_IF;