-
Вложений: 1
ПЛК154 и связь по RS232
Имеется ПЛК154-УМ (прошивка 2.10.5), провод RS232 (без перемычки), HyperTerminal и сл. код в ПЛК:
Код:
IF NOT COM_OPEN THEN
RES1 := SysComOpen(COM_PORT);
IF RES1 = 16#FFFFFFFF THEN
RES2 := SysComClose(COM_PORT);
RES1 := SysComOpen(COM_PORT);
END_IF
COM_OPEN := RES1 <> 16#FFFFFFFF;
END_IF
IF NOT COM_OPEN THEN RETURN; END_IF
IF NOT COM_INIT THEN
COM_SETTINGS.Port := COM_PORT;
COM_SETTINGS.dwBaudRate := 1200;
COM_SETTINGS.byStopBits := 0;
COM_SETTINGS.byParity := 2;
COM_SETTINGS.dwTimeout := 0;
COM_SETTINGS.dwBufferSize := 0;
COM_SETTINGS.dwScan := 0;
COM_SETTINGS.cByteSize := 7; (* ??? *)
COM_SETTINGS.Size := SIZEOF(COM_SETTINGS);
RES2 := SysComSetSettingsEx(COM_PORT, ADR(COM_SETTINGS));
COM_INIT := RES2 = 0;
END_IF
IF NOT COM_INIT THEN RETURN; END_IF
IF Timer1.Q OR NOT Timer1.IN THEN
Timer1(IN := FALSE);
COM_SND_RES := SysComWrite(COM_PORT, ADR(COM_CMD), SIZEOF(COM_CMD), 0);
Timer1(IN := TRUE, PT := T#1s);
ELSE
Timer1;
END_IF
Настройки HyperTerminal Вложение 3271
COM_CMD это строка 'N'.
Результат тишина, в настройках HyperTerminal'а вместо 7 ставлю 8 бит данных. Странно, но работает: получаю сообщения "N" от ПЛК.
Похоже COM_SETTINGS.cByteSize никак не влияет на биты данных. Как сменить на 7 бит?
Нужно подключить прибор со своим протоколом обмена. А тут такое :(
-
-
Спасибо за совет проблему решил при помощи UNM.
Вот код:
Код:
(* Захват интерфейса *)
IF NOT COM_LOCK THEN
COM_LOCK := LockDevice(0) = 1;
IF NOT COM_LOCK THEN
ReleaseDevice(0);
COM_LOCK := LockDevice(0) = 1;
END_IF
END_IF
(* Отбой *)
IF NOT COM_LOCK THEN RETURN; END_IF
(* Отправка сообщения *)
IF Timer1.Q OR NOT Timer1.IN THEN
Timer1(IN := FALSE);
COM_SND := SetByte(0, 'N', 1);
Timer1(IN := TRUE, PT := T#1s);
ELSE
Timer1;
END_IF
Насчёт SysLibCom в примерах используется COM_SERVICE, а у него параметры соединения задаются, как COMSETTINGS. В моём же случае используется тип COMSETTINGSEX тк нужно было задать количество бит данных.
Проверил с последней прошивкой с сайта, результат аналогичный моему предыдущему посту.
-
Вложений: 1
Поторопился!!! HyperTerminal сбил с толку. Проверил при помощи Advanced Serial Port Monitor, он сказал следующее: UART receiver framing error. С прибора данные при помощи Advanced Serial Port Monitor считываются нормально. С ПЛК прибор не соединяется.
Что это за работа такая с COM портом, что просто соединение с нужными параметрами нельзя установить.
Скриншот:Вложение 3309
BaudRate = 1200;
Parity = even;
Data bits = 7;
Stop bits = 1;
-
Тут надо убедиться, что 3-х вольтовое (кажется, но точно не 12 В) питание драйвера порта RS323 не является проблемой иногда для теплосчетчиков с батареечным питанием это принципиально :-( Это надо уточнить у производителя.