Тема / Topic: Запись по Modbus/TCP в HoldingRegisters
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
отправлено / posted
Проблема с Modbus/TCP. Имеется W_Word(16) привязаный к каналу CALL.ChGroupReq. Пытаюсь записать одновременно (в скрипте или по событию нажатия кнопки) три аргумента канала CALL.ChGroupReq. В результате на стороне сервера изменение данных происходит по очереди с существенной задержкой. Такое впечптление как-будто вместо одного модбас запроса с передачей 3-х элементов, посылается три разных запроса с изменением 1-го элемента. В чем может быть проблема? Заранее благодарю.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
отправлено / posted
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мс.
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 - так можно оставить если проект находится на компьютере. ХХ меняется если проект находится в контролере вроде как то так.
Сообщения / Posts 112 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
отключите канал поменяйте значения аргументов включите канал
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
отправлено / posted
quote:Отправитель / Originally posted by Nico: отключите канал поменяйте значения аргументов включите канал
Отключить канал это значит присвоить атрибуту канала "Выключить" (3,С) false. Я правильно понимаю? Пробовал отключать менять потом включать. В результате после включения канала данные также приходят по очереди.
quote:Отправитель / Originally posted by Nico: чем проверяется одновременность поступления ?
Одновременность проверял самописной консольной програмкой, выводит в консоль раз в 300мс весь массив и там видно что данные обновляются не одновременно. Можно конечно предположить, что я где-то что-то наворочил, но этой програмке уже 100 лет и все это время она работала исправно.
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
отправлено / posted
Еще вопрос в догонку. Есть ли способ послать произвольную строку в TCP сокет? Я особо не расчиттываю на положительный ответ, но вдруг.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
канал записи OUTPUT(пишет все по изменению рельного значения) или INPUT( пишет по одному значению )
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
отправлено / posted
quote:Отправитель / Originally posted by Nico: канал записи OUTPUT(пишет все по изменению рельного значения) или INPUT( пишет по одному значению )
Это к вопросу о Modbus/TCP? Сейчас у меня канал CALL.ChGroupReq типа OUTPUT, атрибуты этого канала типа OUT. В среде Трейс Моуд данные изменяются одним скриптом, на модбас сервер приходят по очереди.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
.ну тогда наверное тех-под просить пусть проект смотрят .script пишет непосредственно в аргументы OUT Chgr .INPUT Chgr обратно их считать
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
реальное значение OUT Chgr кто устанавливает в 1 ? после записи оно должно сбрасываться в 0
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Посмотрим. Пришлите проект и папку проекта, с которой Вы работали в техподдержку электронной почтой.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
отправлено / posted
quote:Отправитель / Originally posted by AdAstra Technical Support: В параметрах используемого компонента в слое источники/Приемники установлено направление Input. Необходимо установить Output.
Для отработки, запишите во атрибут "Входное значение" канала CALL#1 значение "1".
Спасибо, заработало.
Причем я не заметил разницы в слое источники/Приемники установлено направление Input или Output. Данные приходят одновременно и так и так.
Я меняю значение атрибута "Входное значение" на 1 при каждом нажатии на кнопку, через некоторое время значение этого атрибута сбрасывается опять в 0. Т.е каждый раз когда мне нужно отправить данные кучей по нажатию на кнопку или по скрипту, мне необходимо выставить "входное значение" канала в 1 и присвоить необходимым аргументам канала необходимые значения. Я прав?
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
dzukpp
Junior Member / Новичок
Участник № / Member № 6383
отправлено / posted
И еще в догонку. Можете прислать пример (проект для Visual Studio) dll, которую можно подключить к программе как внешнюю библиотеку?
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Сначала надо задать нужные значения аргументам канала CALL, и только после их установки посылать "1" в ВХОД канала. Строго реализовать это можно только программным путем.
2. Готового примера dll, которую можно подключить к программе как внешнюю библиотеку, у нас нет. Создание примеров по заявкам пользователей не входит в функции техподдержки. Надеемся на понимание.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |