Пример на языке ST реализует работу по интерфейсу RS-485: Чтение и за-пись двух параметров с одного прибора ТРМ201. Для работы примера в PLC Con-figuration должны быть подключены библиотеки SisLibCom, OwenNet, ComService.
PROGRAM PLC_PRG
VAR
get_fl_owen:OWEN_GET_REAL; (*Чтение параметра типа Real*)
send_fl_owen:OWEN_SET_REAL; (*Запись параметра типа Real*)
COM_SERVICE1: COM_SERVICE; (*открытие COM-порта*)
cmpl: BOOL; (* признак завершения операции *)
err: INT; (*номер ошибки*)
port_opened: BYTE := 0; (*состояние порта*)
Settings: COMSETTINGS; (* настройки последова-тельного порта *)
com_num: PORTS:=0; (*0 — RS-485, 1 — RS-232*)
TimeOut: TIME:=T#50ms; (*таймаут*)
Enabl: BOOL:=TRUE; (*состояние работы блока*)
wTime: WORD; (*значение времени для измери-теля*)
master1: BYTE := 0;
A: REAL; (*считанное значение из ТРМ201*)
b: REAL:=30;
END_VAR
(*Устанавливаем настройки COM-порта*)
IF port_opened=0 THEN
Settings.Port:=com_num; (*номер COM-порта*)
Settings.dwBaudRate:=115200; (*скорость*)
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
END_IF Описание интерфейса библиотек ФБ для работы с протоколом ОВЕН 19
COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF COM_SERVICE1.ready THEN
port_opened:=2;
END_IF
IF port_opened=2 THEN (*Удачно проинициализировали*)
CASE master1 OF
(*чтение параметра типа Real из прибора ТРМ201 с адресом 8 из параметр с именем PV и индексом 0*)
0: get_fl_owen(
Enable:=Enabl , (* разрешение работы блока *)
Addr:=8 , (*адрес прибора*)
AddrLen:=A8BIT , (*длина адреса*)
Name:=’pv’ , (*имя параметра, значение которого считываем*)
Index:=65535 , (*индекс параметра*)
RealType:=FLOAT24 , (*тип параметра, значение которого считываем*)
ComHandle:= Settings.Port, (*номер COM-порта*)
TimeOut:=TimeOut , (*Таймаут T#50ms*)
Complete=>cmpl , (* скопировать признак готовности результата *)
Value=>a , (*считанное значение*)
wTime=>wTime , (*значение времени для измерителя*)
Error=> err ); (* скопировать регистр ошибок *)
(*если установлен признак завершения операции, то *)
IF cmpl THEN
master1:=1;(*переходим к выполнению следующего блока*)
END_IF
1:(*Запись параметра типа Real в прибор ТРМ201 с адресом 8 в параметр с именем SP и индексом 0*)
send_fl_owen(
Enable:=Enabl , (* разрешение работы блока *)
Addr:= 8, (*адрес прибора*)
AddrLen:=A8BIT, (*длина адреса*)
Name:= ‘sp’, (*имя параметра, значение которого записываем в ТРМ201*)
Index:= 0, (*индекс параметра*) Описание интерфейса библиотек ФБ для работы с протоколом ОВЕН 20
RealType:= FLOAT24, (*тип параметра, значение которого записываем*)
Value:=b , (*параметр, значение значение которого записываем в TPM201*)
ComHandle:=Settings.Port, (*номер COM-порта*)
TimeOut:=TimeOut , (* время тайм-аута [мс] — макс. за-держка на обработку запроса *)
Complete=>cmpl , (* скопировать признак готовности результата *)
Error=> err); (* скопировать регистр ошибок *)
(*если установлен признак завершения операции, то *)
IF cmpl THEN
master1:=0;(*переходим к выполнению следующего блока*)
END_IF
END_CASE
IF Enabl = FALSE THEN
Enabl := TRUE;
END_IF
IF err <> 0 THEN
Enabl := FALSE;
END_IF
END_IF