Код:
VAR
Settings:COMSETTINGS; (* настройки последовательного порта *)
COM_SERVICE1: COM_SERVICE;
OWPool : OwenPoolMaster;
ww: int16;
ScanParams: ARRAY[0..3] OF OwenPool :=
( every := T#1s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 30, AddrLen := A8BIT, Name := 'PV', Index := 16#FFFF, TimeOut := T#100ms),
( every := T#1s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 31, AddrLen := A8BIT, Name := 'PV', Index := 16#FFFF, TimeOut := T#100ms),
( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 30, AddrLen := A8BIT, Name := 'SP', Index := 16#FFFF, TimeOut := T#100ms),
( every := T#5s, IsRead := TRUE, EncodeType := OW_FL24, Addr := 31, AddrLen := A8BIT, Name := 'SP', Index := 16#FFFF, TimeOut := T#100ms);
END_VAR
(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF( NOT COM_SERVICE1.ready)THEN
(*Устанавливаем настройки COM-порта*)
Settings.Port:= 0; (*COM0 – RS485, COM1 – RS232, COM2 – ?? ???., COM3 - ?? ???., COM4 – RS232-Debug*)
Settings.dwBaudRate:=115200; (*скорость*)
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
COM_SERVICE1(Enable:= TRUE, Settings:=Settings , Task:=OPEN_TSK );
RETURN;
END_IF
(**********************************************************************************************************************************************)
OWPool(
ENABLE := TRUE,
Count := ( SIZEOF( ScanParams)/SIZEOF( ScanParams[ 0])),
Pool := ADR(ScanParams[ 0]),
IsListen := FALSE,
ComHandle := Settings.Port);
IF( ScanParams[ 0].Complete)THEN
tank2.Temperature( ENABLE := TRUE, _val := REAL_TO_INT( ScanParams[ 0].ValReal));
ww:=ScanParams[ 0].error;
END_IF;
Получаю ошибки по таймауту.