This is topic Связь с контроллером по Modbus TCP in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


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

Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Здравствуйте. Появилась проблема при связи с контроллером. Когда делаю групповой запрос, значения получаю, но появляется такой баг, что через некоторое количество изменения значений все значения обнуляются. Подскажите в чем может быть проблема и как ее исправить?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Причин может быть несколько.
Уточните, как Вы наблюдаете "обнуление"? На экране, в Панели МРВ?
При обнулении у канала группового запроса (Call.ChGroupReq) какое значение у атрибута 4,I Достоверность?
Проблема с одним контроллером или несколькими?
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Обнуление наблюдаю в панеле МРВ. При обнулении у канала CALL значение атрибута _Т (достоверен).Проблема с одним контроллером.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Рекомендую проверить данные на самом контроллере.

Если канал опроса (не записи) достоверен и Вы наблюдаете "обнуление" в Панели МРВ у канала Call (в развернутом атрибуте 124, ARGSIZE), то нулевые значения считываются с самого контроллера.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Если бы это было дело в контроллере, тогда без группового запроса был бы тот же самый баг. Но если делать каждую переменную в разных компонентах, то все считывается нормально (данные не обнуляются)
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Сделайте диагностику, чтобы убедиться, что обмен идет корректно. Установите в *.cnf файл ключи:

DEBUGON=F0000400
DBG_INFO_TCP=ON
END_OF_CNF
<пустая_строка>

В окно Системные сообщения и профайлерный протокол будет писаться расшифровка кадров протокола Modbus TCP. Сделайте тест для группового запроса и для одиночного.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Снова здравствуйте. Почему в информации о проекте стоит ложное количество источников приемников? В проекте на данный момент существует 59 источников. Но скада показывает что их 180. В чем может быть проблема?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Инструментальная система лицензируется по числу "Источников/Приемников" в проекте. Поэтому она не может показывать "ложное" количество. То, что показано, то и истина.

Скорее всего, у Вас в проекте созданы источники-приемники, которые Вы не используете в узле/узлах проекта.
Конкретнее можно ответить, если Вы пришлете свой проект на электронную почту Службы технической поддержки.

Так же нам интересно узнать результат диагностики по вопросу "обнуления".
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
В итоге диагностики в системных сообщениях никакой информации не выводилось. Решила проблему привязав аргументы канала Call не к реальному значению (как делала это раньше), а к входному. В итоге обнуление больше не наблюдалось.
Вчера источников/приемников было 180. Сегодня не изменяя проект посмотрела информацию, их стало 79.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
По проблеме "обнуления".
К сожалению, Вы не сообщили в описании проблемы о наличии привязок аргументов канала Call.ChGroupReq.

Если аргумент канала Call имеет привязку, в том числе к числовому каналу, то необходимо учитывать это.

У каналов есть ряд атрибутов.
Атрибуты каналов, описаны в Справочной Системе - Каналы и системные переменные - Общие атрибуты каналов - Атрибуты каналов, отображаемые профайлером.

Принцип обработки каналов описан в разделе Справочной Системы - Каналы и системные переменные - Числовые каналы - Канал класса <интересующий Вас класс канала>.

Если вкратце, то атрибут 0,R Реальное значение является "выходом" (результатом анализа и встроенной обработки) для каналов с направлением INPUT. "Входом" является атрибут 2,In Входное значение. Формально Вы значение, считанное с устройства каналом Call записывали в "выход" числового канала, а канал его перезаписывал на правильное (в атрибуте Входное значение записан "ноль").

По вопросу об источниках/приемниках. Указанная Вами ситуация исключена. Количество источников, используемых в проекте считается точно. Если в проекте не было изменений, то и количество источников/приемников не изменится.

Если у Вас возникли проблемы с конкретным проектом, то Вы можете его нам прислать с описанием вопросов.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Когда сохраняю проект для МРВ, то становится больше тегов. Почему так? Насколько я поняла, у меня не работает групповой запрос. То есть при сохранении для МРВ каждый аргумент канала CALL считается за отдельную точку ввода вывода. В чем причина?
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Помогите разобраться в подтипах 9 и 100 для протокола ModBus.
У меня есть переменная, которую я передаю контроллеру. Переменная целочисленная (integer). Что мне для этого использовать? Rout_Bite(1) или W_Byte(15) или что-то другое?
Что мне использовать для передачи в контроллер переменных используя групповой запрос? Что использовать для считывания слов памяти из контроллера (при помощи группового запроса)? Для передачи контроллеру и считывания с контроллера переменных типа REAL?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
В TRACE MODE принято обозначение точек в/в, а не тэгов. Точкой ввода-вывода называется любой источник или приемник внешних данных, будь то сигнал контроллера, OPC-тэг или канал DDE и т.п. Описано в http://www.adastra.ru/products/overview/licence/ .
Чтобы определить правильно ли осуществляется обмен, необходима диагностика. Рекомендуем установить диагностику, см. сообщение в этом топике выше. Мы Вам направили письмо электронной почтой, чтобы детально разобраться с проблемой.


Подтипы 9 и 100 описаны в справке в разделе: Приложения - Подтипы каналов - Подтип 9 и 10. Там даны описания дополнений подтипов, в скобках указаны номера функции согласно протоколу Modbus. спецификация протокола дается на сайте https://modbus.org/specs.php , также есть неплохое описание с примерами: https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/ .
Какую функцию использовать зависит от поддержки той или иной функции Modbus сервером. Надо обратиться или к документации Modbus-устройства или к его настройкам (если он настраиваемый). Там же см. описание формата переменных.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Здравствуйте. Возможно ли через групповой запрос (канал CALL.ChGroupReq) передавать данные в контроллер? Или групповым запросом можно только читать?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Да, групповая запись поддерживается. Описано в справке в разделе Каналы и системные переменные - Канал класса CALL - Канал CALL.ChGroupReq. Разница в направлении источника и канала.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Здравствуйте. Не понимаю какой компонент в группе Modbus использовать и для чтения и для записи значений. Требуется не только читать но и передавать значения в контроллер. Пыталась использовать Rout Float (3). Поняла что его можно использовать либо для чтения, либо для записи, но не одновременно. W_Float (16), насколько я понимаю, только передает в контроллер значения.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Здравствуйте.
В описании на устройство (так называемой "карте сигналов") должно быть указано какой modbus-функцией можно обратиться к определенному регистру.

Trace Mode работает согласно протоколу ModBus.
В протоколе ModBus нет функции, которая позволяет читать и писать в один регистр.

По этому используйте два отдельных источника ModBus - один для чтения, другой для записи.
Не стоит пренебрегать групповыми запросами (Справочная Система - Каналы и Системные переменные - Канал класса Call - Канал Call.ChGroupReq - Привязка источника ModBus)

Коротко о ModBus:
ModBus RTU (https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/)

ModBus TCP (https://ipc2u.ru/articles/prostye-resheniya/modbus-tcp/)


Полная информация:
https://modbus.org/
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Если использовать групповой запрос, то какой нужен подтип? W_Word (16) или Rout_Word (3)?
Подключала и тот и тот, все равно либо читает либо пишет. Вывод в том, что единственный вариант это использовать 2 источника?
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Возникла проблема при использовании 2-х источников. Используем для температуры 2 источника разных типов (чтения и записи). Имеется 38 датчиков температуры. И для каждого датчика в переменную Sensor записывается свой Индекс. В зависимости от значения переменной Sensor изменяется значение одной переменной (один источник для всех датчиков). На графическом экране используется для переключения между датчиками ГЭ Группа кнопок. Для значения температуры используется ГЭ Текст. С помощью данного ГЭ передаем значение в канал типа Output, после чего значение передается в канал типа Input. Но проблема в том, что при переключении между датчиками, изменяя Индекс, канал типа Input меняется относительно значения Индекса, а канал типа Output остается прежним.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Yurchik1:
Если использовать групповой запрос, то какой нужен подтип? W_Word (16) или Rout_Word (3)?
Подключала и тот и тот, все равно либо читает либо пишет. Вывод в том, что единственный вариант это использовать 2 источника?

Ответ на оба вопроса дан в прошлом сообщении.

Используйте ту функцию, которая указана в "карте сигналов".

Согласно протоколу ModBus одной функцией нельзя и читать, и писать. Значит, если необходимо один регистр читать и писать, то используйте два источника - один для чтения, другой для записи.


По вопросу использования двух источников.
Из описания не совсем понятно что и как Вы реализуете. Пожалуйста, пришлите на электронную почту Службы технической поддержки Ваш проект (можно тестовый, в котором воспроизводится возникшая ситуация) с описанием. Наши специалисты изучат проект и мы дадим Вам предметные рекомендации.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2