Вход

Просмотр полной версии : проблемы с Com портом на плк-150



alhoresm
05.10.2010, 13:04
написал программу для 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



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-ого аналогового выхода 10.1 мА (т.е. порт открыт)
почему-то загорается лампочка дискретного выхода №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 или наоборот)? Что будет если я не правильно подключу?
заранее спасибо

Александр Приходько
06.10.2010, 09:09
программу выложите пожалуйста с указанием полной маркировки контроллера плк150-х-х. укажите версию прошивки контроллера.

alhoresm
07.10.2010, 09:13
контроллер плк150-220.и-l
версия таргет файлов 2.0-4
контроллер не я прошивал, как узнать версию прошивки - не знаю, но с диском, который мне дали была версия прошивки 2.01.8

Филоненко Владислав
07.10.2010, 10:31
воспользуйтесь наконец стандартным примером работы с Com-портом. он есть на диске

alhoresm
07.10.2010, 10:48
при загрузке стандартного примера codesys ругается, да и в моей программе практически всё то же самое написано

Александр Приходько
14.10.2010, 11:35
Советую поставить актуальную версию прошивки и соответствующий таргет файл:
http://www.owen.ru/catalog/78552813

alhoresm
19.10.2010, 08:21
новую прошивку и таргет файлы уже установил, но теперь порт не открывается.. (openComPort=INVALID_HANDLE)