This is topic Запись по Modbus/TCP в HoldingRegisters in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001318.html

Posted by dzukpp (Участник № / Member № 6383) on :
 
Проблема с Modbus/TCP.
Имеется W_Word(16) привязаный к каналу CALL.ChGroupReq.
Пытаюсь записать одновременно (в скрипте или по событию нажатия кнопки) три аргумента канала CALL.ChGroupReq. В результате на стороне сервера изменение данных происходит по очереди с существенной задержкой. Такое впечптление как-будто вместо одного модбас запроса с передачей 3-х элементов, посылается три разных запроса с изменением 1-го элемента.
В чем может быть проблема?
Заранее благодарю.
 
Posted by Nico (Участник № / Member № 5342) on :
 
поставить debug=400(отладка сети)
аргументы Chgr долдны быть OUT
 
Posted by dzukpp (Участник № / Member № 6383) on :
 
quote:
Отправитель / Originally posted by Nico:
поставить debug=400(отладка сети)
аргументы Chgr долдны быть OUT

Вы имеете ввиду то что советует товарищ Adastra Tech Support "файл конфигурирования запуска узла TMCom_xx.cnf (см."Приложения/Задание параметров работы мониторов") с ключом DEBUGON=400"? Я из документации не понял, файл TMcom_<ordinal>.cnf это как? что вставить вместо <ordinal>. Я пробовал подставлять 0 и 1. Ничего нового в логах не появилось. Последняя строка
quote:
INF_TCP:HOST 127.0.0.1:63573 connect to 127.0.0.1:5204
Связь то есть. Чтение данных с сервера идет на ура. Проблемы только с тем, что модбасные ячейки на сервер поступают не одновременно, а по очереди, с интервалом порядка менее 500мс.

Аргументы CALL.ChGroupReq OUT, тип INT и UINT.
 
Posted by Жигалов Денис Николаевич (Участник № / Member № 6035) on :
 
quote:
Отправитель / Originally posted by dzukpp:
quote:
Отправитель / Originally posted by Nico:
поставить debug=400(отладка сети)
аргументы Chgr долдны быть OUT

Вы имеете ввиду то что советует товарищ Adastra Tech Support "файл конфигурирования запуска узла TMCom_xx.cnf (см."Приложения/Задание параметров работы мониторов") с ключом DEBUGON=400"? Я из документации не понял, файл TMcom_<ordinal>.cnf это как? что вставить вместо <ordinal>. Я пробовал подставлять 0 и 1. Ничего нового в логах не появилось. Последняя строка
quote:
INF_TCP:HOST 127.0.0.1:63573 connect to 127.0.0.1:5204
Связь то есть. Чтение данных с сервера идет на ура. Проблемы только с тем, что модбасные ячейки на сервер поступают не одновременно, а по очереди, с интервалом порядка менее 500мс.

Аргументы CALL.ChGroupReq OUT, тип INT и UINT.

Вместо <ordinal> ставится номер узла.
Это Название проекта_Номер...находится в папке узла.
TMCom_xx.cnf - так можно оставить если проект находится на компьютере. ХХ меняется если проект находится в контролере вроде как то так.
 
Posted by Nico (Участник № / Member № 5342) on :
 
отключите канал
поменяйте значения аргументов
включите канал

теперь одновременно ?
чем проверяется одновременность поступления ?
 
Posted by dzukpp (Участник № / Member № 6383) on :
 
quote:
Отправитель / Originally posted by Nico:
отключите канал
поменяйте значения аргументов
включите канал

Отключить канал это значит присвоить атрибуту канала "Выключить" (3,С) false. Я правильно понимаю? Пробовал отключать менять потом включать. В результате после включения канала данные также приходят по очереди.

quote:
Отправитель / Originally posted by Nico:
чем проверяется одновременность поступления ?

Одновременность проверял самописной консольной програмкой, выводит в консоль раз в 300мс весь массив и там видно что данные обновляются не одновременно. Можно конечно предположить, что я где-то что-то наворочил, но этой програмке уже 100 лет и все это время она работала исправно.

В общем вопрос по прежнему открыт.
 
Posted by dzukpp (Участник № / Member № 6383) on :
 
Еще вопрос в догонку. Есть ли способ послать произвольную строку в TCP сокет? Я особо не расчиттываю на положительный ответ, но вдруг.
 
Posted by Nico (Участник № / Member № 5342) on :
 
канал записи OUTPUT(пишет все по изменению рельного значения) или INPUT( пишет по одному значению )
 
Posted by dzukpp (Участник № / Member № 6383) on :
 
quote:
Отправитель / Originally posted by Nico:
канал записи OUTPUT(пишет все по изменению рельного значения) или INPUT( пишет по одному значению )

Это к вопросу о Modbus/TCP?
Сейчас у меня канал CALL.ChGroupReq типа OUTPUT, атрибуты этого канала типа OUT. В среде Трейс Моуд данные изменяются одним скриптом, на модбас сервер приходят по очереди.
 
Posted by Nico (Участник № / Member № 5342) on :
 
.ну тогда наверное тех-под просить пусть проект смотрят
.script пишет непосредственно в аргументы OUT Chgr
.INPUT Chgr обратно их считать
 
Posted by Nico (Участник № / Member № 5342) on :
 
реальное значение OUT Chgr кто устанавливает в 1 ?
после записи оно должно сбрасываться в 0
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Посмотрим. Пришлите проект и папку проекта, с которой Вы работали в техподдержку электронной почтой.
 
Posted by dzukpp (Участник № / Member № 6383) on :
 
отправил проект на forum@adastra.ru
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Адрес техподдержки: hotline@adastra.ru

В параметрах используемого компонента в слое источники/Приемники установлено направление Input. Необходимо установить Output.

Для отработки, запишите во атрибут "Входное значение" канала CALL#1 значение "1".
 
Posted by dzukpp (Участник № / Member № 6383) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:

В параметрах используемого компонента в слое источники/Приемники установлено направление Input. Необходимо установить Output.

Для отработки, запишите во атрибут "Входное значение" канала CALL#1 значение "1".

Спасибо, заработало.

Причем я не заметил разницы в слое источники/Приемники установлено направление Input или Output. Данные приходят одновременно и так и так.

Я меняю значение атрибута "Входное значение" на 1 при каждом нажатии на кнопку, через некоторое время значение этого атрибута сбрасывается опять в 0. Т.е каждый раз когда мне нужно отправить данные кучей по нажатию на кнопку или по скрипту, мне необходимо выставить "входное значение" канала в 1 и присвоить необходимым аргументам канала необходимые значения. Я прав?
 
Posted by dzukpp (Участник № / Member № 6383) on :
 
И еще в догонку. Можете прислать пример (проект для Visual Studio) dll, которую можно подключить к программе как внешнюю библиотеку?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Сначала надо задать нужные значения аргументам канала CALL, и только после их установки посылать "1" в ВХОД канала. Строго реализовать это можно только программным путем.

2. Готового примера dll, которую можно подключить к программе как внешнюю библиотеку, у нас нет.
Создание примеров по заявкам пользователей не входит в функции техподдержки. Надеемся на понимание.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2