Тема / Topic: Связь TM 6.10 с PLC Simulator Panel (Schneider electric) по ModBus TCP (новичок)
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Хочу создать симулятор работы 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. Ничего не помогает не могу получить данные.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Встроенный 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" при неудачных попытках коннекта к устройству должны быть соответствующие сообщения.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Видеоуроки просмотрел спасибо. Поле "Адрес" у меня действительно равно нулю, не знаю даже откуда взять, в настройках ничего подобного нет, можно только IP задать. Попробую получше поискать. Значения каналов так и просматриваю на отладочной "Панели МР" в окне "Компоненты", за подсказку о признаке достоверности в атрибуте 4 спасибо.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Если в настройках номера контроллера в Вашей утилите нет никаких данных, попробуйте задать во всех "Источниках" "Адрес"=1.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Четвертый атрибут "I" у меня он равен "_Т" это что означает? Какие значения он может принимать?
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Если "Источник" задан формально корректно, в папке узла должен автоматически создаваться файл tcp_modbus. В этом файле должны быть записаны корректные параметры для коннекта к контроллеру. В этом случае признак достоверности информативен. При неудачных попытках коннекта должны быть соответствующие сообщения в окне "Системные сообщения 1".
Если файла tcp_modbus нет или в нем некорректные записи, попыток коннекта не будет и признак достоверности будет _T (не информативен).
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Я правильно понял Вас, что мне надо теперь в принципе в первую очередь следить после запуска профайлера содержимое файла "tcp_modbus"? Я нашел его в папке с одноименным именем проекта, но он пустой.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Корректность файла tcp_modbus - условие для успешного обмена необходимое, но не достаточное. Надо правильно задать IP-адрес контроллера, его номер, функции Modbus, адреса Modbus-переменных. Если файл tcp_modbus корректный, например, UNIT=1 PORT=502 TCP=192.168.12.120 TMOUT=0 THMAIN; FRMT=DEFAULT
можно контролировать корректность "достаточных" условий по сообщениям в окне "Системные сообщения 1" и признаку достоверности канала.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
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?
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Интересный баг (если это конечно баг) обнаружил. Если задавать IP адрес в поле "клема" конечно же автоматом такой же адрес появится и в поле "SRVR", но файл "tcp_modbus" будет пустым! А вот если адрес как положено вбивать в в поле "SRVR", то будет всё нормально!
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Согласно нашей документации, формат записи адреса и порта: TCP=127.0.0.1[:502]; По умолчанию номер порта принимается 502. При таком формате записи вводить можно в любом из полей "Клемма(+)" или "SRVR" - результат будет один и тот же.
2. По стандарту Modbus RTU (связь по последовательному интерфейсу) SLAVE должен отвечать/подтверждать только на запросы/команды, содержащие его реальный номер в сети Modbus RTU.
3. Команда/Запрос с 0-м номером устройства считаются широковещательными. Все устройства обязаны принимать такую команду/запрос, но не отвечать на них. Соответственно МАСТЕР, пославший такую команду/запрос, не ожидает ответа и не принимает его, если он придет.
4. При обмене по TCP использование номера устройства для фильтрации принимаемых устройством запросов/команд не является обязательным. Но распознавание широковещательных запросов/команд - обязательно. Будет ли устройство отвечать на запросы/команды, содержащими произвольные (не равные 0) номера устройств, зависит от настроек конкретного устройства. Если в Вашем случае контроллер отвечает на запросы с любыми номерами устройств (не равными 0), это не является нарушением стандарта. Если устройств в проекте несколько (с разными IP-адресами), желательно в проекте задавать им разные номера.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Я нашел где выставлять адрес MOdBus RTU устройства, теперь точно знаю что его адрес №1. У меня несколько вопросов. 1. После переноса источников MODBUS в RTM свойства каналов меняются, вообще становятся HEX16 (а что это кстати означает?) и разрядность становится - 16, а формат становится "аналоговый". Мне надо считывать дискретный сигнал 1 битовый, ну возможно он будет храниться как 1 байтовый. 2. Я читал что в стандарте ModBus есть 4 стандартные команды опроса на чтение состояния: 1) выходных битов 2) входных битов 3) входных регистров (16 бит) 4) выходных регистров (16 бит). Также есть стандартные команды на запись: 1) выходных битов 2) выходных регистров (16 бит). Какие компоненты источников/приемников в ТМ им соответствуют?
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Из нашей документации: " 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 и т.д.).
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
1. После переноса источников MODBUS в RTM свойства каналов меняются, вообще становятся HEX16 (а что это кстати означает?) и разрядность становится - 16, а формат становится "аналоговый".
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Пробую использовать разные - Rout_Byte(1); Rin_Byte(2). Настраиваю - адрес - 1; тип протокола - TCP/IP, направление - INPUT; формат - дискрет; IP-адрес - 127.0.0.1:502. Далее создаю аналоги по "Создать по шаблону". Далее "Редактировать" Источник приемник, что бы открыть всю таблицу (в общем всё по вашим обучающим видео). Ну а там редактирую "CH" заданием диапазонов. Перенос по принципу драг анд дроп (как по вашим обучающим видео) в RTM. Вот там то они и становятся каналами типа "Канал_HEX16". Далее если в эти каналы зайти (проще всего нажав "Редактировать" на перенесенную группу, она у меня называется к примеру "MODBUS_Rin_Byte", то там и видно что поле "Формат" у всех становится как "Аналог".
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. В предыдущем посте было указано, что "функции Rout_Byte(1) и Rin_Byte(2) считывают сразу 8 последовательных битов, начиная с того бита, который задан в "Источнике", залинкованном на канал HEX16". Таким образом, Вы получили именно то, что и должно быт. Хотя по умолчанию канал HEX16 имеет разрядность 16 бит, считываться в него будет 8 бит в его младший байт.
2. Столбец "Формат" при редактировании группы каналов не функционален, это издержки унификации таблиц редакторов разных объектов.
IP-адрес лучше задать в виде TCP=127.0.0.1; Порт 502 можно не задавать, он такой задается по умолчанию.
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Спасибо за "У Вас все получилось правильно." Но мне очень важен результат. И мне не важно почему я не могу получить данные с Симулятора Untity Pro... меня уже терзают смутные сомнения что симулятор не работает и не отдает данные или и вовсе отсутствует на связи. Я подумываю найти программу для проверки соединения по ModBus TCP с симулятором.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
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'".
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Следует учитывать, что IP-адрес 127.0.0.1 имеет специальное назначение (http://www.genon.ru/GetAnswer.aspx?qid=3b50fc97-15d9-4b3f-b213-2fe6638e6af7) и для ординарной сетевой связи в локальной сети использоваться не должен.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Извините что устроил вам вынос мозга. Всему виной моя не внимательность, я думал при запуске профайлера и ТМ он автоматически запускается, а оказалось надо ещё его запустить. Всё работает. Данные приходят и уходят. Единственное что сейчас под вопросом у меня как вытаскивать битовые данные - действительно считывается целый байт и надо как то выделить из него составные биты.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. У канала HEX16 есть атрибуты Бит1, Бит2 и т.д. Они доступны как для считывания, так и для записи. Поэтому при привязке, например, аргументов экранов или программ можно привязываться непосредственно к этим атрибутам. 2. Кроме того, если речь идет об отображении на экране, можно использовать метод динамизации ГЭ, использующий маски, например, " Arg & Конст.", при привязке к РЕАЛЬНОМУ_ЗНАЧЕНИЮ. 3. И в программе можно при необходимости использовать маскирование на языках ST и/или FBD или функциональные блоки распаковки/упаковки байтов и слов. Аргумент программы также привязывается к РЕАЛЬНОМУ_ЗНАЧЕНИЮ.
При использовании методов по п.п.2 и 3 количество аргументов в шаблоне можно существенно сократить.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Как по учебному видео https://youtu.be/rUfJx5AvgpM?list=PLffDwaSgFH0TqIv9yoVXBpmh0VclbQ9QK&t=160 не получается: 1. Двойным кликом не открывается графический экран на редактирование. Приходится открывать правым кликом свойства экрана. 2. Не могу перенести во вкладку "Аргументы" свойств экрана компонент из канала. Здесь сразу параллельный вопрос - нужно ли отдельно создавать в RTM группу "Каналы" и затем перетаскивать туда по одному компоненту из группы MODBUS-Источник. Или же перенесённая в RTM из Источников группа MODBUS со всеми компонентами будет функционировать также?
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
1. "Двойным кликом ..." Проверьте настройки мыши на различение двойного клика. 2. "Не могу перенести во вкладку "Аргументы" свойств экрана компонент из канала." Следует различать свойства шаблона экрана и свойства канала CALL.Screen, вызывающего этот шаблон. В таблицу аргументов ШАБЛОНА можно "перенести компонент канала", а в таблицу аргументов канала CALL.Screen - нельзя. 3. Перенесённая в RTM из Источников группа MODBUS со всеми компонентами будет функционировать корректно. 4. Процедура "выбора типа проекта" автоматически вызывается только 1 раз и ее результат запоминается. Затем при создании или открывании любых проектов сохраненные настройки будут повторяться. Чтобы изменить эти настройки, надо в меню "Файл/Настройки ИС" открыть вкладку "Уровень сложности" и выбрать нужные свойства.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Обмен данными по ModBus TCP между ТМ-6.1 и PLC Simulator Panel отладил, спасибо! Кстати говоря двойным кликом свойства Экрана не открываются, только через правый клик и подменю "Свойства". При двойном клике открывается только "Редактирование шаблона", то есть начинаем работать с формами экрана. Я не видел ни одного учебного видео где бы управление процессом происходило через Экран, всегда делается через Графическую панель. В связи счем вопрос. Я холел создать АРМ оператора управления объектом, то есть откуда бы он мог и ручном режиме управлять объектами и заносить какие то уставки. Но среди графических элементов Экрана я не нашёл например элемента для передачи (ввода) численного значения, есть только для отображения. Для передачи управляющего бита пытался использовать различные кнопки и выключатели. При применении выключателей наблюдал через служебную панель МРВ - чаще всего происходит переход в единицу с мгновенным возвратом атрибута [006]D, реже бывает что два других атрибута - [000]R и [010]b1 показывают такие же результаты, но бит не уходит. (Если отправить через Input служебной панели то уходит).
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Свойства объектов в окне "Навигатора проекта" открываются только правой клавишей мыши. Иное не документировано. В редакторе графики свойства ГЭ, ГО и экрана можно открыть двойным кликом левой клавиши мыши.
2. Из нескольких десятков видео-уроков только около 5% используют графические панели, остальные разработаны для узлов RTM и имеют графику на базе Экранов, а не Графических панелей.
3. Почти все ГЭ на экране могут иметь функции управления (см. раздел "Разработка графического интерфейса/Задание типовых свойств ГЭ/Функции управления ГЭ").
4. Видимо, Вы пытаетесь передать значения с экрана в аргумент-OUT, который привязан к РЕАЛЬНОМУ_ЗНАЧЕНИЮ канала. Следует привязывать аргумент управления к атрибуту ВХОДНОЕ_ЗНАЧЕНИЕ (см. разделы, касающиеся обработки каналов, например, "Каналы и системные переменные/Числовые каналы/Канал класса Float/Обработка в канале Float").
Илдар
Junior Member / Новичок
Участник № / Member № 6981
отправлено / posted
Почему то не получается сделать вызов экранов. Думал всё просто - создать ГЭ "Кнопка" и его свойствах "События" правым кликом на "MousePress" выбрать "Перейти на экран". Дальше во вкладке "Перейти на экран" выбрать экран из "Шаблоны_экранов" и всё. Но ничего не получается.
Сообщения / Posts 17 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Переход на экран не осуществляется в режиме эмуляции в редакторе графики. 2. Для шаблона экрана, на который Вы хотите перейти, в узле должен быть канала CALL.Screen, который вызывает этот шаблон. 3. У шаблона экрана должен быть хотя бы 1 аргумент.