написал программу для PLC-150:
Код:VAR_GLOBAL I1 AT %QD7.0:REAL; di0 AT %IX0.0:BOOL; di1 AT %IX0.1:BOOL; do0 AT %QX1.0:BOOL; do1 AT %QX1.1:BOOL; do2 AT %QX1.2:BOOL; do3 AT %QX1.3:BOOL; END_VARКод:PROGRAM PLC_PRG VAR beg:BOOL:=TRUE; comPort:PORTS:=0; openComPort:DWORD; closeComPort:BOOL; inp:BOOL; outp:BOOL; xOutput:fOutput; ok:BOOL; ComSet:comsettings; vI:REAL; bytesRead:DWORD; buf: REAL; END_VARПри старте программы начинает выдавать ток с 1-ого аналогового выхода 10.1 мА (т.е. порт открыт)Код:IF di0 THEN (*завершение*) closeComPort:=SysComClose(opencomport); ELSE IF beg THEN (*инициализация*) openComPort:=SysComOpen(comPort); IF openComPort=INVALID_HANDLE THEN i1:=5.1; ELSE i1:=10.1; END_IF; ComSet.dwBaudRate:=9600; ComSet.byParity:=0; ComSet.byStopBits:=0; ComSet.dwBufferSize:=4; ComSet.dwScan:=0; ComSet.dwTimeout :=10; ComSet.Port:=comPort; ok:=SysComSetSettings(openComPort,ADR(ComSet)); IF ok THEN do3:=TRUE; END_IF; vI:=0.001; beg:=FALSE; ELSE (*цикл пока не нажата кнопка di0*) bytesread:=SysComRead(opencomport,ADR(buf),4,300); IF bytesread=4 THEN (*vI:=buf;*) I1:=buf; END_IF; IF bytesread>0 THEN do0:=((bytesread MOD 2)=1); do1:=(((bytesread/2) MOD 2)=1); do2:=(((bytesread/4) MOD 2)=1); (* do3:=(((bytesread/16) MOD 2)=1);*) END_IF; END_IF (* IF beg ELSE*) END_IF (*IF di0 ELSE*)
почему-то загорается лампочка дискретного выхода №1 вместо №4-ого (т.е. конфигурация установлена)
передаю с копма сообщение, а контроллер не ловит его, о чём говорят лампочки остальных дискретных выходов (т.е. количество принятых байт=0)
Заметил, что при логиневании CoDeSys говорит, что я не правильно задал ComSet.Port, и всегда принудительно менял значение переменной comPort на COM1
Пробовал связываться через RS-232 и RS-485 (менял подключение Rx,Tx - A,B) результат одинаковый.
Вопросы:
1. Можно ли общаться с этим контроллером через RS-232 или он только для записи в него программы?
2. Как подключаться к RS-485 (в смысле: Tx к A, Rx к B или наоборот)? Что будет если я не правильно подключу?
заранее спасибо


Ответить с цитированием