This is topic Связь TM 6.10 с PLC Simulator Panel (Schneider electric) по ModBus TCP (новичок) 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/001498.html

Posted by Илдар (Участник № / Member № 6981) on :
 
Хочу создать симулятор работы TM 6.1 с ПЛК Modicon BMX 340. Создал программу в Unity Pro XL v.8.0, опробовал - работает. Программа простая на запуск насоса при достижении верхнего уровня в емкости. Запускаю симулятор, загружаю программу, пишу ТМ простенький проект для опроса входов и выходов, запускаю профайлер, там через Меню "Вид - Панель МРВ" просматриваю данные - всё по нулям, никаких изменений.
В ТМ в Источниках/Приемниках создал 4 группы группы MODBUS в каждой по 101 компонентов соответственно Rout_Byte(1), Rin_Byte(2), Rout_Word (3), Rin_Word(4). В параметрах компонентов указал IP 127.0.0.1 (пробовал и 192.168.0.101 и 192.168.0.101:502, такой адрес высвечивается когда наводишь мышь на PLC Simulator). Каналы указывал и от 0 до 100 и от 40000 до 40100. Ничего не помогает не могу получить данные.  -
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Встроенный Modbus-драйвер в Trace Mode 6 поддерживает стандартные команды Modbus RTU и TCP.
Специальных настроек для конкретных моделей контроллеров, поддерживающих стандарт Modbus, не требуется.
Стандартные настройки продемонстрированы в наших видеоуроках http://www.adastra.ru/products/drivers/modbus/.
Ознакомьтесь с ними, пожалуйста.

Мы не имеем возможности изучать системы программирования производителей контроллеров и организацию базы их Modbus-переменных.
Надо изучать документацию на контроллеры и информационную базу конкретной пользовательской программы, загруженной в контроллер.

Какой точно IP-адрес имеет контроллер ПЛК Modicon BMX 340?
Каков IP-адрес ПК, на котором работает профайлер Trace Mode 6?

Задайте в "Источниках":
- в поле "Адрес" - номер контроллера в сети Modbus (номер не должен быть равен 0),
- в поле "IP-адрес" - TCP=<IP-адрес контроллера>;

При запуске узла под управлением профайлера на отладочной "Панели МР" в окне "Компоненты" можно посмотреть значения каналов, участвующих в Modbus-обмене, и признаки достоверности в атрибуте 4.
В окне "Системные сообщения 1" при неудачных попытках коннекта к устройству должны быть соответствующие сообщения.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Видеоуроки просмотрел спасибо. Поле "Адрес" у меня действительно равно нулю, не знаю даже откуда взять, в настройках ничего подобного нет, можно только IP задать. Попробую получше поискать.
Значения каналов так и просматриваю на отладочной "Панели МР" в окне "Компоненты", за подсказку о признаке достоверности в атрибуте 4 спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если в настройках номера контроллера в Вашей утилите нет никаких данных, попробуйте задать во всех "Источниках" "Адрес"=1.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Четвертый атрибут "I" у меня он равен "_Т" это что означает? Какие значения он может принимать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
_T - достоверно.
_F - недостоверно.

Если "Источник" задан формально корректно, в папке узла должен автоматически создаваться файл tcp_modbus.
В этом файле должны быть записаны корректные параметры для коннекта к контроллеру.
В этом случае признак достоверности информативен.
При неудачных попытках коннекта должны быть соответствующие сообщения в окне "Системные сообщения 1".

Если файла tcp_modbus нет или в нем некорректные записи, попыток коннекта не будет и признак достоверности будет _T (не информативен).
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Я правильно понял Вас, что мне надо теперь в принципе в первую очередь следить после запуска профайлера содержимое файла "tcp_modbus"? Я нашел его в папке с одноименным именем проекта, но он пустой.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Урааа появилось содержимое! При IP 192.168.0.101!
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Корректность файла tcp_modbus - условие для успешного обмена необходимое, но не достаточное.
Надо правильно задать IP-адрес контроллера, его номер, функции Modbus, адреса Modbus-переменных.
Если файл tcp_modbus корректный, например,
UNIT=1
PORT=502
TCP=192.168.12.120
TMOUT=0
THMAIN;
FRMT=DEFAULT

можно контролировать корректность "достаточных" условий по сообщениям в окне "Системные сообщения 1" и признаку достоверности канала.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
IP переписал как 192.0.168.101:502 (хотя и фале "tcp_modbus" уже порт то указан "PORT=502"), всё равно содержимое файла "tcp_modbus" не меняется, причём я пробовал задать адрес вместо 1 как 2 в фале появилось уже UNIT=2 вместо UNIT=1, но как только задал IP как 127.0.0.1 то содержимое файла стало пустым!
Что то не понятно насчёт адресации по в ModBus RTU. Это что контроллер отвечает на все адреса кроме 0?
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Интересный баг (если это конечно баг) обнаружил. Если задавать IP адрес в поле "клема" конечно же автоматом такой же адрес появится и в поле "SRVR", но файл "tcp_modbus" будет пустым! А вот если адрес как положено вбивать в в поле "SRVR", то будет всё нормально!
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Согласно нашей документации, формат записи адреса и порта:
TCP=127.0.0.1[:502];
По умолчанию номер порта принимается 502.
При таком формате записи вводить можно в любом из полей "Клемма(+)" или "SRVR" - результат будет один и тот же.

2. По стандарту Modbus RTU (связь по последовательному интерфейсу) SLAVE должен отвечать/подтверждать только на запросы/команды, содержащие его реальный номер в сети Modbus RTU.

3. Команда/Запрос с 0-м номером устройства считаются широковещательными. Все устройства обязаны принимать такую команду/запрос, но не отвечать на них.
Соответственно МАСТЕР, пославший такую команду/запрос, не ожидает ответа и не принимает его, если он придет.

4. При обмене по TCP использование номера устройства для фильтрации принимаемых устройством запросов/команд не является обязательным. Но распознавание широковещательных запросов/команд - обязательно.
Будет ли устройство отвечать на запросы/команды, содержащими произвольные (не равные 0) номера устройств, зависит от настроек конкретного устройства.
Если в Вашем случае контроллер отвечает на запросы с любыми номерами устройств (не равными 0), это не является нарушением стандарта.
Если устройств в проекте несколько (с разными IP-адресами), желательно в проекте задавать им разные номера.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Я нашел где выставлять адрес MOdBus RTU устройства, теперь точно знаю что его адрес №1. У меня несколько вопросов.
1. После переноса источников MODBUS в RTM свойства каналов меняются, вообще становятся HEX16 (а что это кстати означает?) и разрядность становится - 16, а формат становится "аналоговый". Мне надо считывать дискретный сигнал 1 битовый, ну возможно он будет храниться как 1 байтовый.
2. Я читал что в стандарте ModBus есть 4 стандартные команды опроса на чтение состояния: 1) выходных битов 2) входных битов 3) входных регистров (16 бит) 4) выходных регистров (16 бит). Также есть стандартные команды на запись: 1) выходных битов 2) выходных регистров (16 бит). Какие компоненты источников/приемников в ТМ им соответствуют?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Из нашей документации:
" Rout_Byte(1) – считать байт данных типа out (номер дополнения к подтипу – 1);
Rin_Byte(2) – считать байт данных типа in (номер дополнения к подтипу – 2);
Rout_Word(3) – считать слово данных типа out (номер дополнения к подтипу – 3);
Rin_Word(4) – считать слово данных типа in (номер дополнения к подтипу – 4);
W_SingleCoil(5) – передать значение одного дискретного сигнала (номер дополнения к подтипу – 5);
W_Word(6) – передать слово данных (номер дополнения к подтипу – 6);
Rout_Float(3) – считать 4-байтовую переменную с плавающей точкой типа out (номер дополнения к подтипу – 8);
Rin_Float(4) – считать 4-байтовую переменную с плавающей точкой типа in (номер дополнения к подтипу – 9);
W_Float(16) – передать 4-байтовую переменную с плавающей точкой типа out (номер дополнения к подтипу – 10);
W_Word(16) – передать слово данных (номер дополнения к подтипу – 11);
W_Byte(15) – для каналов HEX 16 – передать 1 байт данных, для каналов HEX32 – передать 4 байта (номер дополнения к подтипу – 14); "

При этом надо особо обратить внимание на то, что запросы по функциям Rout_Byte(1) и Rin_Byte(2) считывают сразу 8 последовательных битов, начиная с того бита, который задан в "Источнике", залинкованном на канал HEX16.
Считывание и запись аналоговых параметров стандартного формата FLOAT осуществляются двумя последовательными регистрами, поэтому адресование последовательных аналоговых переменных должно идти через 1 (например, адреса 0, 2, 4 и т.д.).
 
Posted by Илдар (Участник № / Member № 6981) on :
 
1. После переноса источников MODBUS в RTM свойства каналов меняются, вообще становятся HEX16 (а что это кстати означает?) и разрядность становится - 16, а формат становится "аналоговый".
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Какие функции Modbus Вы используете в слое "Источники/Приемники"?

Как Вы их настраиваете?

Как "переносите" "Источники" в узел RTM?

Где "формат становится "аналоговый""?
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Пробую использовать разные - Rout_Byte(1); Rin_Byte(2).
Настраиваю - адрес - 1; тип протокола - TCP/IP, направление - INPUT; формат - дискрет; IP-адрес - 127.0.0.1:502. Далее создаю аналоги по "Создать по шаблону". Далее "Редактировать" Источник приемник, что бы открыть всю таблицу (в общем всё по вашим обучающим видео). Ну а там редактирую "CH" заданием диапазонов.
Перенос по принципу драг анд дроп (как по вашим обучающим видео) в RTM. Вот там то они и становятся каналами типа "Канал_HEX16". Далее если в эти каналы зайти (проще всего нажав "Редактировать" на перенесенную группу, она у меня называется к примеру "MODBUS_Rin_Byte", то там и видно что поле "Формат" у всех становится как "Аналог".
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. В предыдущем посте было указано, что "функции Rout_Byte(1) и Rin_Byte(2) считывают сразу 8 последовательных битов, начиная с того бита, который задан в "Источнике", залинкованном на канал HEX16".
Таким образом, Вы получили именно то, что и должно быт. Хотя по умолчанию канал HEX16 имеет разрядность 16 бит, считываться в него будет 8 бит в его младший байт.

2. Столбец "Формат" при редактировании группы каналов не функционален, это издержки унификации таблиц редакторов разных объектов.

IP-адрес лучше задать в виде
TCP=127.0.0.1;
Порт 502 можно не задавать, он такой задается по умолчанию.

У Вас все получилось правильно.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Спасибо за "У Вас все получилось правильно." Но мне очень важен результат. И мне не важно почему я не могу получить данные с Симулятора Untity Pro... меня уже терзают смутные сомнения что симулятор не работает и не отдает данные или и вовсе отсутствует на связи. Я подумываю найти программу для проверки соединения по ModBus TCP с симулятором.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Убедитесь, что в папке узла есть файл tcp_modbus и он не пуст. Примерное содержание файла
UNIT=1
PORT=502
TCP=192.168.12.16
TMOUT=0
THMAIN;
FRMT=DEFAULT

2. Загрузите узел профайлером.

3. Откройте "Панель МРВ".

4. В окне "Компоненты" выделите атрибут, например, [5]Frq любого канала.

5. В нижнем поле с именем Frq введите DEBUGON=400

6. Запустите узел на исполнение.

7. Откройте окно "Протокол 1".

В окне будут сообщения об ошибках обмена.

См. "Отладка проекта/Профайлер с поддержкой графических экранов/Панель МРВ/Вкладка 'Протокол 1'".
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Следует учитывать, что IP-адрес 127.0.0.1 имеет специальное назначение (http://www.genon.ru/GetAnswer.aspx?qid=3b50fc97-15d9-4b3f-b213-2fe6638e6af7) и для ординарной сетевой связи в локальной сети использоваться не должен.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Извините что устроил вам вынос мозга. Всему виной моя не внимательность, я думал при запуске профайлера и ТМ он автоматически запускается, а оказалось надо ещё его запустить. Всё работает. Данные приходят и уходят. Единственное что сейчас под вопросом у меня как вытаскивать битовые данные - действительно считывается целый байт и надо как то выделить из него составные биты.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. У канала HEX16 есть атрибуты Бит1, Бит2 и т.д.
Они доступны как для считывания, так и для записи.
Поэтому при привязке, например, аргументов экранов или программ можно привязываться непосредственно к этим атрибутам.
2. Кроме того, если речь идет об отображении на экране, можно использовать метод динамизации ГЭ, использующий маски, например, " Arg & Конст.", при привязке к РЕАЛЬНОМУ_ЗНАЧЕНИЮ.
3. И в программе можно при необходимости использовать маскирование на языках ST и/или FBD или функциональные блоки распаковки/упаковки байтов и слов. Аргумент программы также привязывается к РЕАЛЬНОМУ_ЗНАЧЕНИЮ.

При использовании методов по п.п.2 и 3 количество аргументов в шаблоне можно существенно сократить.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Как по учебному видео https://youtu.be/rUfJx5AvgpM?list=PLffDwaSgFH0TqIv9yoVXBpmh0VclbQ9QK&t=160 не получается:
1. Двойным кликом не открывается графический экран на редактирование. Приходится открывать правым кликом свойства экрана.
2. Не могу перенести во вкладку "Аргументы" свойств экрана компонент из канала. Здесь сразу параллельный вопрос - нужно ли отдельно создавать в RTM группу "Каналы" и затем перетаскивать туда по одному компоненту из группы MODBUS-Источник. Или же перенесённая в RTM из Источников группа MODBUS со всеми компонентами будет функционировать также?
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Ещё вопрос. У меня при создании нового проекта не предлагает так же как на видео https://youtu.be/ehMoULetB8c?list=PLffDwaSgFH0TqIv9yoVXBpmh0VclbQ9QK&t=67 выбор типа проекта - "Простой", "Стандартный", "Комплексный". Это нормально?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. "Двойным кликом ..."
Проверьте настройки мыши на различение двойного клика.
2. "Не могу перенести во вкладку "Аргументы" свойств экрана компонент из канала."
Следует различать свойства шаблона экрана и свойства канала CALL.Screen, вызывающего этот шаблон.
В таблицу аргументов ШАБЛОНА можно "перенести компонент канала", а в таблицу аргументов канала CALL.Screen - нельзя.
3. Перенесённая в RTM из Источников группа MODBUS со всеми компонентами будет функционировать корректно.
4. Процедура "выбора типа проекта" автоматически вызывается только 1 раз и ее результат запоминается. Затем при создании или открывании любых проектов сохраненные настройки будут повторяться.
Чтобы изменить эти настройки, надо в меню "Файл/Настройки ИС" открыть вкладку "Уровень сложности" и выбрать нужные свойства.
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Обмен данными по ModBus TCP между ТМ-6.1 и PLC Simulator Panel отладил, спасибо!
Кстати говоря двойным кликом свойства Экрана не открываются, только через правый клик и подменю "Свойства". При двойном клике открывается только "Редактирование шаблона", то есть начинаем работать с формами экрана.
Я не видел ни одного учебного видео где бы управление процессом происходило через Экран, всегда делается через Графическую панель. В связи счем вопрос. Я холел создать АРМ оператора управления объектом, то есть откуда бы он мог и ручном режиме управлять объектами и заносить какие то уставки.
Но среди графических элементов Экрана я не нашёл например элемента для передачи (ввода) численного значения, есть только для отображения.
Для передачи управляющего бита пытался использовать различные кнопки и выключатели.
При применении выключателей наблюдал через служебную панель МРВ - чаще всего происходит переход в единицу с мгновенным возвратом атрибута [006]D, реже бывает что два других атрибута - [000]R и [010]b1 показывают такие же результаты, но бит не уходит. (Если отправить через Input служебной панели то уходит).
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Свойства объектов в окне "Навигатора проекта" открываются только правой клавишей мыши. Иное не документировано.
В редакторе графики свойства ГЭ, ГО и экрана можно открыть двойным кликом левой клавиши мыши.

2. Из нескольких десятков видео-уроков только около 5% используют графические панели, остальные разработаны для узлов RTM и имеют графику на базе Экранов, а не Графических панелей.

3. Почти все ГЭ на экране могут иметь функции управления (см. раздел "Разработка графического интерфейса/Задание типовых свойств ГЭ/Функции управления ГЭ").

4. Видимо, Вы пытаетесь передать значения с экрана в аргумент-OUT, который привязан к РЕАЛЬНОМУ_ЗНАЧЕНИЮ канала. Следует привязывать аргумент управления к атрибуту ВХОДНОЕ_ЗНАЧЕНИЕ (см. разделы, касающиеся обработки каналов, например, "Каналы и системные переменные/Числовые каналы/Канал класса Float/Обработка в канале Float").

Посмотрите более внимательно уроки "Быстрого старта".
 
Posted by Илдар (Участник № / Member № 6981) on :
 
Почему то не получается сделать вызов экранов. Думал всё просто - создать ГЭ "Кнопка" и его свойствах "События" правым кликом на "MousePress" выбрать "Перейти на экран". Дальше во вкладке "Перейти на экран" выбрать экран из "Шаблоны_экранов" и всё. Но ничего не получается.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Переход на экран не осуществляется в режиме эмуляции в редакторе графики.
2. Для шаблона экрана, на который Вы хотите перейти, в узле должен быть канала CALL.Screen, который вызывает этот шаблон.
3. У шаблона экрана должен быть хотя бы 1 аргумент.

Тема поста не соответствует теме топика. Топик закрывается.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2