This is topic Запись по Modbus/TCP в HoldingRegisters in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Проблема с 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, которую можно подключить к программе как внешнюю библиотеку, у нас нет. Создание примеров по заявкам пользователей не входит в функции техподдержки. Надеемся на понимание.