Дополнительные возможности

Вопросы по программе Lectus Modbus OPC/DDE server
sim31
Сообщения: 12
Зарегистрирован: 08 окт 2014, 15:37

Дополнительные возможности

Сообщение sim31 »

Можно ли добавить опции

1. Обмен данными через файл.
Создать при необходимости такое же дерево файлов типа
c:\lectus\group1\item1.txt
c:\lectus\group1\item2.txt
...

содержащими значение переменных, и обновлять их раз в минуту например. Очень удобно для считывания посторонними программами, хоть напрямую, хоть через dropbox, хоть http сервер если в его каталог бросить. И добавить просто, одна опция в настройках, может еще "период обновления" мгновенно при изменении или раз в N минут/секунды, при условии что переменная изменена, для снижения нагрузки на диск. Я бы сразу перевел все переменные на чтение в такой режим, проще и нагляднее, в Intouch есть кроме DDE (на котором сижу), OPC, опция типа ReadFile, главное чтобы после переменной типа 12.3434 была CR LF, что логично, конец строки.

2. Обмен данными по TCP-UDP, так же для упрощения работы с посторонними программами. Например соединяемся терминальной программой с лектусом 127.0.0.1:9999 пишем ему типа get он в ответ шлет:
group1.item1=2.3333444
group1.item2=5.444
...

3. Опция modbus снифера. Например у нас есть панель оператора что постоянно опрашивает контроллер. Если подключиться паралельно по RS485 каналу все данные видны наглядно, раз в секунду запрос и ответ. Но не считать их, только если свою программу написать и разбирать данные. Если бы лектус мог сам разобрать данные и построить дерево переменных, цены бы ему не было :)

4. Опция автоматического поиска живых переменных в адресном пространстве контроллера. Типа есть неизвестный контроллер, минимум документации, но отвечает на некоторые modbus запросы, при наличии времени можно вполне найти значения переменных соответствующих показаниям датчиков, обычно все в стандартном диапазоне первые 40 значений.

5. Чтение данных modbus asci/rtu через TCP/master-slave, UDP протоколы напрямую из конвертеров Ethernet->RS485, это конверторы Moxa (возможно через свой API), Tibbo (чисто TCP->RS), и даже GSM модемы Robustel M1000 Pro. Сейчас на модем данные шлет программа типа "COM to TCP", COM2 ассоциируется с 192.168.x.x:9999, это GPRS модем за 30 км, связка работает, но появлется эмулятор СОМ порта, от которого бы хотелось избавиться
Изображение
Странно что такой возможности нет, Modbus TCP есть, Modbus есть, а Modbus через TCP-UDP нет.
admin
Администратор
Сообщения: 578
Зарегистрирован: 05 сен 2010, 00:51

Re: Дополнительные возможности

Сообщение admin »

1. 2. Обмен может производится через реестр
3. 4. Вряд ли получиться. Мало информации. Как минимум непонятен тип данных
5. Используйте опцию "Modbus через TCP" в настройках TCP/IP подключения
sim31
Сообщения: 12
Зарегистрирован: 08 окт 2014, 15:37

Re: Дополнительные возможности

Сообщение sim31 »

1. Про реестр не знал, интересная и полезная возможность, буду иметь ввиду. Но по удобству и наглядности с файлом не сравнить. Или с получением данных через web интерфейс, удобно и для своих скриптов, и web интерфейс может вообще заменить простую scada. Вон даже у роутиеров есть web интерфейс и у программы virtual com зачем то есть web интерфейс.

2. Тип данных, действительно не определить, задача автоматически не решается. А вот помочь инженерам, вполне возможно. Хотя бы указать на область данных, которые отличны от 0 или проявляют какую-то активность. Далее можно уже примерно определить вручную, данные 1 байт или 4 байта, как они изменяются во времени. Но это уже другая утилита получается, аналитическая какая-то.

3. "Modbus через TCP" действительно заработал! Я думал те вкладки относятся только к Modbus TCP. Это замечательная возможность! :) Посмотрел что все наши коммуникационные устройства Moxa Nport поддерживают режим TCP сервер, понемногу уберу режим virtual COM и переведу на прямое TCP подключение.
Но странно что нет аналогичного UDP соединения "modbus через udp", все устройства работают в таком режиме, мне кажется он быстрее, удобнее и проще. TCP режим избыточен для столь простого применения, и его избыточность приводит к замедлению передачи данных. Особенно на GPRS модемах, где пинги 2000 мс, предполагаю что TCP соединение перед передачей данных шлет много избыточных данных.

Далее, вот пример фичи одной. У меня есть модем с адресом 192.168.1.1 на нем висит 2 устройства, разные RS485 адреса, разные режимы работы modbus rtu и modbus asci (скорость одинакова 38400). Когда каждому устройству назначал разные COM порты (COM1 и COM2), всё работало. Lectus ругался иногда, что данные неожиданно приходили, так COM1 и COM2 были виртуальные, но пересылали данные к одному устройству, это решалось заданием периода опроса разными. А вот когда установил TCP соединение напрямую, Modbus через TCP, то Lectus не смог разрешить парадокс и все данные обрабатывал как mudbus asci:

Код: Выделить всё

18:22:15.010 [656] (192.168.3.1:9999) Tx: [17] ":01 03 00 01 00 2F CC CR LF "
18:22:18.445 [656] (192.168.3.1:9999) Rx: [199] ":01 03 5E 00 00 F0 07 FF FF 00 00 00 00 00 00 00 00 F0 07 FF FF 00 00 00 00 00 00 00 32 00 00 57 48 42 4A 8A 85 00 00 00 00 F0 0D 57 12 00 00 00 00 00 00 00 01 00 00 56 EE 3F 80 00 00 00 00 00 00 F0 07 FF FF 00 00 00 00
18:22:18.445 [656]  00 00 00 01 00 00 57 36 3F 80 00 00 00 00 00 00 F0 07 FF FF 00 00 00 00 A7 CR LF "
18:22:18.455 [656] (192.168.3.1:9999) Tx: [8] "ч
18:22:21.149 [656] (192.168.3.1:9999) Rx: [5] "чѓ Б"
18:22:21.149 [656] Ошибка приема/передачи (192.168.3.1:9999 Адрес:247)
18:22:21.159 [656] (192.168.3.1:9999) Tx: [8] "ч
18:22:21.359 [1276] (192.168.3.3:9999) Rx: [7] "ч
18:22:21.369 [1276] (192.168.3.3:9999) Tx: [8] "ч
Для меня это не критично, так как устройство что сейчас modbus asci я могу переконфигурировать в mosbus rtu, а для кого-то это может стать проблемой.
Если убрать устройство modbus asci из опроса, всё работает и отображается хорошо.
modbus asci выбрал из-за наглядности, и модем может отсылать пакет по символу LF не выжидая таймаут 200 мс.
sim31
Сообщения: 12
Зарегистрирован: 08 окт 2014, 15:37

Re: Дополнительные возможности

Сообщение sim31 »

1)
Свойства "типизированной переменной" задаются в шестнадцатеричном виде, свойства "стандартной переменной" в десятичном, нормальном 40 001 и так далее. Мне кажется неудобно задавать свойства "типизированной переменной" в шестнадцатеричной форме, обычно адреса указаны в десятичной форме. Нужно обязательно отображение и в десятичной форме.

Например задаю переменные с адресами 13, 17, 20, 21, 56, 222, и еще несколько десятков, типы float, word, dword, как стандартные их задать не могу (не все word). Поэтому приходится включать калькулятор и переписывать все адреса на бумажке в hex формате и записывать обратно в lectus, странно как-то.

А вот отображение в свойствах переменной в таблице, десятичный формат есть в скобках.

На форме "изменить переменную" как-раз есть место для отображения или ввода переменной в десятичном формате.

2)
Мне кажется свойства "старшим байтом вперед", "старшим регистром вперед" нужно сделать включенными по умолчанию, все данные что я обрабатывал идут в таком формате. По умолчанию они выключены.

3)
Кнопки светофор "остановить опрос", "режим симуляции", мне кажется надо оставить только в меню, там они подписаны словами и понятно к чему. Я долго не мог понять что они значат, интуитивно непонятные и пользователи по ошибке их могут нажать. Если свойства переменных изменить сложно (несколько нажатий нужны), то кнопки нажать случайно намного проще.
sim31
Сообщения: 12
Зарегистрирован: 08 окт 2014, 15:37

Re: Дополнительные возможности

Сообщение sim31 »

sim31 писал(а):Например задаю переменные с адресами 13, 17, 20, 21, 56, 222, и еще несколько десятков, типы float, word, dword, как стандартные их задать не могу (не все word). Поэтому приходится включать калькулятор и переписывать все адреса на бумажке в hex формате и записывать обратно в lectus, странно как-то.

А вот отображение в свойствах переменной в таблице, десятичный формат есть в скобках.

На форме "изменить переменную" как-раз есть место для отображения или ввода переменной в десятичном формате.
Пока проблему решил с помощью Excel, в нем есть не очевидная возможность переводить десятичные цифры в 16-ричные, двоичные, 8-ричные, выбираются в ячейке как любая формула
(другие функции - категория инженерные):
http://www.pro-radio.ru/computers/4981/
http://forum.ixbt.com/topic.cgi?id=23:31549
... Есть функции ШЕСТН.В.ДЕС и ДЕС.В.ШЕСТН. С помощью них и формул можно без проблемм работать с шестнадцатиричными таблицами.
sim31
Сообщения: 12
Зарегистрирован: 08 окт 2014, 15:37

Re: Дополнительные возможности

Сообщение sim31 »

Неожиданно столкнулся с новой проблемой, дело в самом протоколе Modbus. Например считываем переменную типа float из 4х байт или 2 регистров. Её можно считать одним правильным методом, одним неправильным.
1. Правильный метод. Указываем точный адрес, например 10, корректный метод считывания, "старшим байтом вперед", старшим регистром назад, вроде так наиболее похоже на правду.
2. Неправильный метод, но отличия в сотых долях аналоговой величины (число 55.123777888 вместо, например 55.13387878778), которую при быстром изменении заметить невозможно. Такова особенность переменной float, основные данные, мантиса и степень хранятся в истинно старшем регистре, а во младшем регистре важны несколько бит буквально, остальные аналоговый шум по сути. Указываем считывание "старшим регистром вперед", но и в адресе переменной указываем на 1 единицу больше, адрес 11, вместо 10. Переменная точно так же считывается. Единицу легко пропустить, так как в modbus есть странности с номером регистра и адресацией регистра типа 40 001.

На глазок числа типа float в общей структуре данных никак не выделяются, с word проще, там число 5 так и буде 00 05h. У float есть только одна закономерность, обычные числа, разумного порядка типа 55.1, в float начинаются как 40h ... 43h а далее совершенно случайные байты. Если переменная float соседствует с нулями или обычными word переменными легко определяется этот начальный байт и соответственно правильная структура регистров.

Калькулятора чтобы float переводил в 4 байта не нашел, в моем случае бы пригодился, например что 55.1 это 42 D1 F3 A0.
admin
Администратор
Сообщения: 578
Зарегистрирован: 05 сен 2010, 00:51

Re: Дополнительные возможности

Сообщение admin »

В дополнительных свойствах "Старшим байтом вперед" установлена по умолчанию, т.к. в стандарте Modbus прописан именно такой порядок данных в регистре. Она может быть сброшена например тогда когда повторно создается узел после сброса галочки "Старшим байтом вперед". Чтобы каждый раз не редактировать одно и то же.

Про "Старшим регистром вперед" - у каждого производителя по своему.
Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя