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/000197.html

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

http://www.adastra.ru/products/drivers/modbus/
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Спасибо, подскажите еще как работать в TM6 со словами памяти %MW?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Если в устройстве есть возможность обратиться к этой области по Modbus, то стандартно как к любому другому регистру в зависимости от поддерживаемой функции. Обратитесь к документации на устройство, где должна быть карта соответствия адресов данных слов с номерами регистров Modbus.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Если работать с регистрами, для каждой переменной свой адрес, то использовать групповую запись не получается, так как адрес пишется именно для компонента в источниках/приемниках. Как тогда быть в этой ситуации? Есть другой вариант?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Если адреса разные и в промежуток между ними нельзя писать, то остается работать с одиночным запросами, один адрес - один источник - один канал.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
как произвести распаковку слов побитно?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
В каналах класса HEX в атрибутах 10..25 уже есть значения отдельных битов. См. справку: каналы и системные переменные TRACE MODE - Числовые каналы - канал класса HEX.

Можно выполнить распаковку с помощью программы. Например в языке FBD встроены блоки для распаковки слов/байтов/битов в разделе Побитовые.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
То есть, если я запишу значение в атрибут к примеру бит 4, то при передачи в контроллер слова памяти (16 бит) значение запишется именно в 4 бит данного слова?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Да, запись значений в эти атрибуты равнозначна изменению соответствующих битов/байтов входного значения канала.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Каналы типа Float разбить на биты можно только программно? Как в таких каналах данные передаются в контроллер?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Уточните какую задачу Вы планируете решить.

Если есть необходимость работать с битами, то удобнее использовать канал Hex16.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
у менять есть переменные типа bool, int, dint, real.
Работаю с протоколом Modbus TCP. Для экономии точек ввода/вывода нужно использовать одну точку на несколько переменных, если это возможно. С типом bool я так поняла можно использовать атрибуты канала HEX16 для распаковки слова на биты, и использовать 16 бит на 16 переменных. А вот как быть с другими типами данных?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Если кратко, согласно протоколу ModBus, под разные типы регистров заложены разные modbus-функции (команды опроса/записи). Принципиально нельзя регистр с данными типа bool и регистр с типом данных real считывать одной функцией.

Для экономии точек ввода/вывода можете использовать групповые запросы
Пример групповых запросов по 3 и 4 функциям https://youtu.be/_2jF515uuPQ
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
То есть, у меня стоит задача выводить значения переменных разных типов. У каждой переменной свой адрес (к примеру %MW101). И если у каждой переменной, свой адрес, то я не могу использовать групповой запрос. Следовательно, у каждой переменной должен быть свой тег. И экономить теги не получится?
Помогите понять как читать и передавать значения переменных по адресам слов %MW? Нигде не могу найти информацию или примеры.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Если адреса разнесены и групповой запрос исключен, используйте одиночные запросы. Если не хватает мощности Инструментальной среды обратитесь в отдел продаж за апгрейдом, контакты: http://www.adastra.ru/about/howtofind/

Найдите соответствие адреса этих слов функциям и адресам Modbus TCP для данного устройства. У нас есть видеоурок по настройке контроллера ПЛК 160, где есть описание настройки контроллера как Modbus Slave устройства с упоминанием внутренней адресации: https://youtu.be/cmUQDohX_ms
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Не получается читать биты из контроллера. Создаю компонент, ввожу адрес, канал, тип вызова, IP контроллера. Переношу группу Modbus в узел RTM.
Аргумент экрана привязываю к биту канала. Но значение не считывается. В чем ошибка?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Канал при это достоверен? В реальном его значении появились данные, если смотреть в дереве проекта в Панеле МРВ? Если недостоверен, что в его 240 атрибуте?
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
240 атрибут же для канала Call. У меня канал HEX16. В атрибуте 4 (достоверность) пишет _Т, значит достоверен. В реальном значении данных нет
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Если атрибут Достоверность _T, то канал достоверен и нет ошибок обмена.

Скорее всего Вы считываете не тот регистр.

Пришлите на электронный адрес технической поддержки (адрес указан в Личном Кабинете в разделе "Получить техническую поддержку") проект, папку проекта и описание какой регистр Вы пытаетесь считать.
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
Поняла в чем проблема. Но теперь не понимаю другое. У меня переменная типа bool изменяет значение каждую секунду на 0 и 1. В профайлере меняется значение и 1 бита (атрибут 10) и 1 байта (атрибут 100) и 0-3 битов (атрибут 104) тоже. Как это понять?
 
Posted by Yurchik1 (Участник № / Member № 8907) on :
 
помогите разобраться. не могу передать значение канала в контроллер. Создаю компонент W_Word. Задаю значения адреса, канала, типа, ip контроллера. Привязываю канал к данному компоненту. Но ничего не происходит. Значение в профайлере меняется, а значение в контроллере нет
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Данные атрибуты специфические для каналов HEX и содержат значения соответствующих битов/групп битов Реального значения канала.
В справке описано в разделе Каналы и системные переменные - Числовые каналы - Канал класса HEX.

Источник/приемник и канал должны быть направления OUT, после записи значения в канал анализируйте его достоверность. Если недостоверен, то стандартно отлаживать обмен.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2