В теории все вроде понятно, на практике PLC WinNT 2.4.7.38 (DEMO) отказывается открывать com-порт в примере по записи через Modbus с сайта owen.ru
Код:
PROGRAM PLC_PRG
VAR
get1_modbus: MB_RD_HOLD_REGS;
get2_modbus: MB_RD_INP_REGS;
get3_modbus: MB_RD_HOLD_REGS;
Buffer: ARRAY[0..255] OF BYTE;
cmpl: BOOL;
port_opened: BYTE := 0;
Init: BOOL;
Settings:COMSETTINGS;
com_num: PORTS:=2;
enabl: BOOL;
err: INT;
TimeOut: TIME:=T#50ms;
Exception: BYTE;
DataSize: WORD;
master1: BYTE:= 1;
t: DWORD;
A: WORD := 0;
x:WORD;
x1: WORD;
x2: WORD;
x3: WORD;
d: REAL;
ptr_D:POINTER TO BYTE;
COM_SERVICE1: COM_SERVICE;
END_VAR
Код:
t:=t+1;
IF (t MOD 1000)=0 THEN
A := A + 1;
IF A > 9999 THEN
A := 0;
END_IF
END_IF
IF port_opened=0 THEN
Settings.Port:=com_num;
Settings.dwBaudRate:=115200;
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=1;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
END_IF
COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
IF COM_SERVICE1.ready THEN (*здесь всегда false получается*)
port_opened:=2;
END_IF
виртуальные com-порты создавал с помощью com0com и virtual serial port driver 6.9 - проверял их через HyperTerminal все работает правильно