PDA

Просмотр полной версии : вопрос по UNM.lib



Koion
15.04.2019, 17:51
Пытаюсь через UNM передать последовательность из 10 байт в Ethernet. Настроил в конфигурации UNM-TCP, порт задал 10000. В итого setbyte возвращает какую-то ахинею вместо положенных 10 байт и в порт ничего не отправляет.
Может кто сталкивался с таким?
При этом с чтением из Ethernet, и передачей в RS-232 проблем никаких.

Филоненко Владислав
15.04.2019, 20:40
UNM никогда не предназначалась для работы с Ethernet. То что читает - забавный побочный эффект :)
Используйте сокеты.
UNM - для совместной работы какого нибудь экзотического счётчика и обычных приборов ОВЕН/ModBus, опрашиваемых через конфигурацию. По последовательным портам ТОЛЬКО!

Koion
15.04.2019, 20:49
Но если открыть описание библиотеки, читаем: "Библиотека UNM (файл UNM.lib) – обеспечивает прием/передачу информации через встроенные порты контроллера (RS-232/RS-485/Ethernet) для расширения возможностей стандартных модулей, поставляемых в составе системы CoDeSys (работа одновременно с модулями протоколов Modbus, DCON и ОВЕН на одном физическом интерфейсе). Назначение всех программных компонентов библиотеки указано в таблице 1. ".
Получается официальное описание врёт?

Koion
16.04.2019, 11:41
IF NOT(start) THEN
ReleaseDevice(DeviceNumber);
stat:=0;
ready:=FALSE;
ELSE
IF start THEN
CASE stat OF
0:
IF(LockDevice(DeviceNumber)=1) THEN
ready:=FALSE;
stat:=1;
ELSE
stat:=0;
END_IF
1:
FOR i:=0 TO ByteCount DO
p:=ADR(command)+i;
p1:=ADR(command_string)+i;
p1^:=p^;
END_FOR
stat:=2;
2:
IF SetByte(DeviceNumber,command_string,ByteCount)=Byt eCount THEN
ready:=TRUE;
stat:=0;
ELSE
stat:=2;
END_IF
END_CASE
END_IF
END_IF

Филоненко Владислав
16.04.2019, 12:54
Я не помню других пользователей, кто UNM с TCP использовал. В описание вкралась ошибка.

Koion
19.04.2019, 18:32
Сделал через сокеты. Заодно вроде разобрался как оно работает.