Просмотр полной версии : ПЛК100-K-L ModBusTCP Master-Slave
Никак не могу подключиться к ПЛК100-K-L с помощью Siemens S7-1200... Ни в режимах Мастер-Слейв, ни наоборот с каждой стороны...Интерфейс Modbus TCP. Быть может у кого есть опыт в данном направлении? Буду признателен за любую помощь
kondor3000
29.03.2022, 23:01
По Сименсу не подскажу, а вот наладить опрос ПЛК100 можно на примере моего поста, опрос производит Овен ОПС сервер по TCP/IP, программа ставится за пару минут. На скрине приведена конфигурация ПЛК, которую вам надо повторить на своём ПЛК. ПЛК100 - слейв с адресом 1.
Когда разберётесь с опросом ПЛК100 , разберётесь и со связью с Сименсом. Сименс соответственно можно сделать мастером.
Мой пост со скрином опроса https://owen.ru/forum/showthread.php?t=10555&page=839
Овен ОПС сервер https://owen.ru/product/new_opc_server
Здесь есть примеры обмена через библиотеку https://owen.ru/forum/showthread.php?t=16814
ПЛК100 требует при запросе указывать ID устройства. Без него не ответит.
я понял, спасибо, как мне указывать в самой программе codesys область памяти, которую хочу использовать для передачи/получения? Блок памяти? Я с codesys особо не работал - в основном с симатиком, не могли бы вы более подробно указать- как программируется сам алгоритм работы ПЛК100 и его настройки? Благодарю
Меня вот это видео, как я понял, запутало - я сделал по аналогии,но как я понял, необходимо в алгоритм добавлять функцию, в которой все потребуется указывать...
Видео https://www.youtube.com/watch?v=5VO0iE_1Va8&t=996s
kondor3000
30.03.2022, 23:01
я понял, спасибо, как мне указывать в самой программе codesys область памяти, которую хочу использовать для передачи/получения? Блок памяти? Я с codesys особо не работал - в основном с симатиком, не могли бы вы более подробно указать- как программируется сам алгоритм работы ПЛК100 и его настройки? Благодарю
Меня вот это видео, как я понял, запутало - я сделал по аналогии,но как я понял, необходимо в алгоритм добавлять функцию, в которой все потребуется указывать...
Видео https://www.youtube.com/watch?v=5VO0iE_1Va8&t=996s
Вам надо, чего попроще посмотреть. Не смотрите, что там ПЛК110 подключается к СПК, вам главное принцип создания Модбас (ТСР) Слейва понять. На ПЛК100 тоже самое, только таргет при создании проекта будет не ПЛК 110-32, а ПЛК 100. https://www.youtube.com/watch?v=WhldODV1Cco
Потом можно посмотреть подключение к Скаде https://www.youtube.com/watch?v=B03Fi_P2sqk
Спасибо...я еще уточню, пока не просмотрел то, что вы скинули , но обязательно это сделаю - вот я доьавлб в программу блок mb_server, все к нему подведу и задам нужные значения переменным, вопрос : та область памяти, с которой я хочу работать, настраивается в конфигурации плк? Я видел там добавляется мастер, слейв, протокол и уже переменные, с которыми мы будем работать по обмену или передачи данных так?
kondor3000
01.04.2022, 09:25
Спасибо...я еще уточню, пока не просмотрел то, что вы скинули , но обязательно это сделаю - вот я доьавлб в программу блок mb_server, все к нему подведу и задам нужные значения переменным, вопрос : та область памяти, с которой я хочу работать, настраивается в конфигурации плк? Я видел там добавляется мастер, слейв, протокол и уже переменные, с которыми мы будем работать по обмену или передачи данных так?
Да, только есть нюансы, все переменные в конфигурации, в ПЛК - слейве будут глобальные и энергонезависимые. Если ПЛК - мастер, то переменные будут просто глобальные. Переменным лучше дать имена в конфигурации и из программы обращаться к ним по именам.
А например через вывод символьной конфигурации, Содесис ОРС 0.2 и Скаду, можно получить доступ вообще ко всем переменным проекта.
А зачем тогда нужны программные функции мастера? слейва? если все попросту в конфигурации задается... Я пробовал таким образом сделать, как указано на видео с подключением к панели - у меня связь не устанавливается 60040
kondor3000
01.04.2022, 23:15
А зачем тогда нужны программные функции мастера? слейва? если все попросту в конфигурации задается... Я пробовал таким образом сделать, как указано на видео с подключением к панели - у меня связь не устанавливается 60040
Для новичков удобнее конфигурация, для продвинутых есть обмен через библиотеки. А то что у вас не работает, скорее всего ошибки в настройках. Я проверял на ПЛК 154, у меня всё работало через конфигурацию и вообще без каких либо ФБ (функц. блоков) .
ЗЫ Просмотрел руководство на ПЛК100 и ничего не нашёл по поводу ID, зато нашёл примеры подключения двух ПЛК 100, там ничего нет вообще, кроме конфигурации, так что на счёт ID это всё фигня. Вот примеры соединения 2 ПЛК 100 по Модбас TCP между собой:
Если ПЛК слейв то как бы и библиотеки не нужны, хватает конфигурации, ибо когда спросили, тогда и ответ будет дан.
Адресация в ПЛК с 0, но в программах иногда необходимо ставить с 1.
Не забываем по ID, почему то сотая серия не будет отвечать если просто задать IP и порт.
Не забываем о выравнивании переменных кратно своей длине данных, есть в документации по программированию ПЛК.
Начните банально с одной переменной int и потом шагните к float и все будет видно.
kondor3000
02.04.2022, 00:12
melky , у меня вопрос, где в обмене через конфигурацию надо указать ID для ПЛК100 ?
Просмотрел руководство, там ничего такого нет. Нашел примеры связи двух ПЛК100 (выложил выше), там тоже никакого ID. Откуда такая информация?
kondor3000 ID это адрес слейва в Modbus RTU сети. Смотрите описание пакета Modbus TCP запроса - там фигурирует тоже ID устройства.
По крайней мере со стороны Scada если не указать этот ID и данный байт будет 0х00 то ПЛК не ответит...
https://ipc2u.ru/articles/prostye-resheniya/modbus-tcp/#opisanie
Unit Identifier для сотой серии обязателен. Единственное не знаю, он должен быть не равен 0 и быть любым и потом игнорируется или обязательно должен соответствовать адресу RTU. Лень доставать 100-ку чтобы проверить.
kondor3000 ID это адрес слейва в Modbus RTU сети. Смотрите описание пакета Modbus TCP запроса - там фигурирует тоже ID устройства.
По крайней мере со стороны Scada если не указать этот ID и данный байт будет 0х00 то ПЛК не ответит...
а что тогда он имеет ввиду когда пишет?
По Сименсу не подскажу, а вот наладить опрос ПЛК100 можно на примере моего поста, опрос производит Овен ОПС сервер по TCP/IP, программа ставится за пару минут. На скрине приведена конфигурация ПЛК, которую вам надо повторить на своём ПЛК. ПЛК100 - слейв с адресом 1.
kondor3000
02.04.2022, 11:17
Адрес слейва указывается для всех приборов, хоть панель, хоть ПЛК, хоть модуль.
При чём здесь ПЛК100 и указание его ID? По словам melky, адрес слейва ПЛК100, это и есть ID. Тогда зачем тогда об этом упоминать отдельно?
В выложенном примере указан адрес слейва 2, никакого ID в примере нет.
И не важно какой это ПЛК, я делал опрос ПЛК 154, и указывал адрес слейва 1, но отдельно про ID ничего не пишу.
В симатике опрос устройств по TCP работает по принципу клиент-сервер, где клиент ОТПРАВЛЯЕТ, а сервер отвечает....Таким образом, чтоб опросить ПЛК100 (который в режиме слейв) мне нужно чтоб контроллер сименс работал как клиент... только в таком режиме он может отправлять запросы...Это полная ерунда выходит
А плк100 может быть мастером только для RS связи? Спасибо
60048
В симатике опрос устройств по TCP работает по принципу клиент-сервер, где клиент ОТПРАВЛЯЕТ, а сервер отвечает....Таким образом, чтоб опросить ПЛК100 (который в режиме слейв) мне нужно чтоб контроллер сименс работал как клиент... только в таком режиме он может отправлять запросы...Это полная ерунда выходит
А плк100 может быть мастером только для RS связи? Спасибо
60048
Так получается ПЛК100 в режиме Slave и будет сервером.
kondor3000
02.04.2022, 18:15
И да, после коннекта с сервером (модбас-клиентом) на овен-плк100 (110...), если клиент (модбас-мастер) будет жевать сопли в тишине более 10сек (около) сервер закроет коннект принудительно. Это фиксированное поведение сервера (модбас-слейва) в конфигурации. Для программного сервера можно запиливать иное поведение
Это вообще не проблема, можно сделать бит проверки связи, одним включается раз в секунду, другим сбрасывается, не сбросил больше 3-5 сек , соединение капут. И никогда ничего не закроется, пока связь есть.
kondor3000 я просто однажды не указал ID в пакете TCP и ПЛК не ответил. Хотя какая ему разница на этот ID если у нас к одному IP адресу и по порту 502 в сотке может подключаться только один клиент? 100-ка не дает на один порт несколько сокетов, по крайней мере через Конфигуратор точно.
capzap какая разница, что там в OPC ? если речь идет о подключении другим устройством? указан там ID или нет никто кроме автора не знает.
Связь наладил, все щас хорошо, НО ни читать, ни писать в регистры ПЛК100 не могу...почему? - да фиг знает....ерунда полная, ошибок нет, а значения попросту не меняются....
PS по RTU на примее работы с ТРМ201 все хорошо работает...
60049
60050
60051
60052
Валенок а посмотреть по ссылке, что давал, где указывается ID не судьба? у меня вместо номера там было 0x00
Кстати у Modbus TCP есть еще MBAP Header, на который практически все производители ЛОЖАТ, так вот однажды людям попалось устройство, которое требовало этот MBAP Header. а это простой счетчик запросов по факту..
Doomers а адрес так и указывается 0x40001 или все-таки 1 или 0 с указанием Holding Registers функций 0x03 ?
з.ы. просто не знаю Siemens настолько
Да так и пишется, с RTU все хорошо, а этот ПЛК100 уже весь мозг выел...я новый чистый проект создал, чтоб отбросить все сомнения....НО - статус функции "чтение данных", а вот данных я не вижу, все по нолям....фигня полная вообще
60053
В TiaPortal есть возможность посмотреть пакет TCP который отправляется от Simens до 100-ки ?
Если это симуляция на ПК то можно WireShark-ом посмотреть, вот чем смотреть между ПЛК я честно не знаю...
MB_Data_Len почему 1 если вы три регистра создали ?
Да так и пишется, с RTU все хорошо, а этот ПЛК100 уже весь мозг выел...я новый чистый проект создал, чтоб отбросить все сомнения....НО - статус функции "чтение данных", а вот данных я не вижу, все по нолям....фигня полная вообще
60053
У ОВЕН нет монополии на модбас, смотрите любое видео про MB_CLENT и сравнивайте что делаете не так в своем проекте, овеновский слейв не причем. Говорите есть соединение, покажите скрином Devices & networks вкладка Connections
Валенок какое устройство уже не помню, надо по форуму лазить и искать. первые два байта заголовка это Transaction Id - можете проверить на ПЛК 100(110) всегда там нули ставить и ПЛК будет отвечать. Да и многие устройства из мне знакомых просто игнорируют этот параметр.
Но таки попалось какое-то устройство. которое требовало наличие счетчика и не отвечало, если там были нули.
MB_Unit_ID - то, о чем я говорил, без этого ID сотка не ответит. Хотя честно не пробовал с 0xFF а с 0x00 оно не отвечает.
Валенок не равными, а увеличиваться и не быть равными нулю это если по протоколу. Но большинство кладут на номер транзакции с высокой....
з.ы. на счет смотреть - WireShark умеет смотреть только физические интерфейсы своего ПК, то есть что ПК отправляет. Какого-то ПО, которое может сниферить сеть между сторонними устройствами я на знаю. Я об этом больше говорил. То есть если ПЛК работает на ПК в эмуляции то фозможно можно посмотреть Шарком, хотя не факт. Пример с виртуальной машиной где интерфейс в брижде Шарк не отловит.
..не равными, а увеличиваться.
Вы хоть вникните - чему и кто должен быть равен
"В пакете ответа от сервера эти два байта обязаны быть равными значениям в пакете запроса"
не быть равными нулю это если по протоколу
Это где ?
Several MODBUS transactions can be activated simultaneously on the same TCP Connection.
Remark: If this is done then the MODBUS transaction identifier must be used to uniquely identify the matching requests and responses.
The transaction identifier is used to associate the future response with the request.
So, at a time, on a TCP connection, this identifier must be unique. There are
several manners to use the transaction identifier:
- For example, it can be used as a simple "TCP sequence number" with a
counter which is incremented at each request.
- It can also be judiciously used as a smart index or pointer to identify a
transaction context in order to memorize the current remote server and the
pending MODBUS request.
Ну, с чего начинать ID транзакции с 0 или с 1 не сказано. Выше цитаты из протокола, но как писал ранее, за несколько лет столкнулись только с одним устройством, которое требовало наличие ID транзакций и не отвечало, когда оно было равным нулю. И мало того, не отвечало на повторный ID если ответ был передан.
Я человек простой. Тупо промт :
Несколько транзакций MODBUS могут быть активированы одновременно на одном TCP-соединении.
Примечание: Если это сделано, то идентификатор транзакции MODBUS должен использоваться для однозначной идентификации соответствующих запросов и ответов...
Про некий "0" ничего не вижу. Но заметил.
А счетик, умножитель или рандом - пофиг.
Видео уже с десяток пересмотрел - все аналогично....Не совсем понял, зачем вам скрин с Connections из Device & networks, сконфигурировать ПЛК100 в ТИА каким образом смогу? - на него даже GSD файла нет...
60056
Валенок вот скажите, где в протоколе указано, что ID транзакции ДОЛЖЕН быть НОЛЬ ? не допускается, а именно должен ?
Doomers у вас Siemens реальный или возможен запуск на виртуальном? Или через онлайн отладку можно пакет TCP увидеть ?
Любой парсер Modbus пакета сразу покажет ху из ху...
.. вот скажите, где в протоколе указано, что ID транзакции ДОЛЖЕН быть НОЛЬ ? не допускается, а именно должен ?...
Тоже интересно - КТО такое утверждает ?
У меня все живое....Пакет отсмотреть - даже не слышал о таком, не исключаю, но даже не слышал....
60056
я не эту картинку спрашивал, вот же какую надо 60059, если Вы действительно получили соединение то там должна отображаться строчка
И смотрите как люди показывают свои настройки для обмена 60060
Doomers к сожалению не знаю TiaPortal, если в онлайн отладке есть подключение есть там возможность смотреть посылаемые пакеты TCP или нет ?
А чтобы посмотреть трафик TCP надо на ПК две сетевые поставить и организовать на нем коммутатор, потому что тот же WireShark по другому не сможет увидеть чужие пакеты.
У меня никаких строк нет...
60063
60064
У меня никаких строк нет...
60063
60064
в свойствах контроллера, IP адрес когда задавали, сам то сетевой интерфейс создали? На скрине не видно что сеть существует 60065
В онлайне есть, подсеть добавил...
60067
у ПЛК100 какой адрес, покажите скрин выполнение команды PLCInfo
ЗЫ за одно и адрес компа в этой сети, если с контроллером не получится придется смотреть пакеты, для этого скачивайте симулятор https://www.hmisys.com/downloads/PeakHMISlaveSimulatorInstall.exe и в сименсе указывайте адрес ПК с запущенным симулятором слейва и смотрите приходят ли пакеты
ну, все должно работать
Опрос клиентом кто обеспечивает, как в видео меркер времени?
Да, тактобит при условии,что нет ошибок
60069
переводите опрос на ПК, потому что в коннекшенах должен быть полностью зеленый квадрат, а там видна какая то ошибка
Вот и проблема с сименом...не могу подключиться к симулятору...странно...Симулятор пишет - все ок, а вот симен - подключается без конца и все, связи нет
60070
Я рекомендовал каким симулятором воспользоваться, Вы решили поступить по своему. Еще бы рекомендовал ни когда не прислушиваться к мнению мелкого, он полтемы исписал якобы знаниями протокола и только вводит в заблуждение из за злополучного ID. Никакого отношения Local ID не относиться к адресу слейва(UnitID), адрес слейва можно отредактировать в ДБ мобас клиента, это описано в статье на которую ссылался Валенок. По умолчанию , его значение не равно 1, возможно это мешает 60071 Еще, заметил что в конфигурации плк100 было три регистра, а в ФБ модбас клиента, Вы стали оправшивать 6 регистров, это тоже может быть ошибкой
Филоненко Владислав
03.04.2022, 14:07
Для новичков удобнее конфигурация, для продвинутых есть обмен через библиотеки. А то что у вас не работает, скорее всего ошибки в настройках. Я проверял на ПЛК 154, у меня всё работало через конфигурацию и вообще без каких либо ФБ (функц. блоков) .
ЗЫ Просмотрел руководство на ПЛК100 и ничего не нашёл по поводу ID, зато нашёл примеры подключения двух ПЛК 100, там ничего нет вообще, кроме конфигурации, так что на счёт ID это всё фигня. Вот примеры соединения 2 ПЛК 100 по Модбас TCP между собой:
А в конфигурации есть настройка SlaveID. Т.к. по умолчанию у мастера и slave они совпадают - то пример и работает...
kondor3000
03.04.2022, 15:27
А в конфигурации есть настройка SlaveID. Т.к. по умолчанию у мастера и slave они совпадают - то пример и работает...
Почему никто не читает? Где ID вы нашли? Есть Слейв адрес 2, нет нигде ID в конфигурации. 60074 60075
Три раза одно и тоже пишут и никто не сказал где ID находится.
Адрес слейва указывается для всех приборов, хоть панель, хоть ПЛК, хоть модуль.
При чём здесь ПЛК100 и указание его ID? По словам melky, адрес слейва ПЛК100, это и есть ID. Тогда зачем тогда об этом упоминать отдельно?
Шлюз точный при такой-то маске сети ?
Еще раз для непонятливых, если в пакете мастера TCP вместо ID (смотреть протокол Modbus TCP) 0x00 вместо адреса (лень доставать и проверять на 100-ке с 0xFF или другим отличным от указанного в конфигурации) 100-ка НЕ ОТВЕТИТ на TCP запросы, будет просто ТИШИНА.
Валенок по вашей ссылке если там 0xFF ПЛК будет отвечать? вот честно лень доставать 100-ку и ставить еще CodeSys при этом.
Да и capzap предлагал на ПК поставить программу и Сименсом опросить, а уж на ПК увидеть пакеты TCP на раз делается.
И еще раз спрошу, когда у ПЛК маска сети /24 а шлюз прописан из другой сети вкуда ПЛК будет оправлять ответ, даже получив запрос ?
Филоненко Владислав
04.04.2022, 08:10
Почему никто не читает? Где ID вы нашли? Есть Слейв адрес 2, нет нигде ID в конфигурации. 60074 60075
Три раза одно и тоже пишут и никто не сказал где ID находится.
В документации Модбас адрес зовут SlaveID. Для нашего рынка мы понимаем, что доки (тем более на англицком) читают неохотно, потому используем неправильное, но понятное название адрес!
Филоненко Владислав
04.04.2022, 08:17
Валенок по вашей ссылке если там 0xFF ПЛК будет отвечать? вот честно лень доставать 100-ку и ставить еще CodeSys при этом.
Да и capzap предлагал на ПК поставить программу и Сименсом опросить, а уж на ПК увидеть пакеты TCP на раз делается.
И еще раз спрошу, когда у ПЛК маска сети /24 а шлюз прописан из другой сети вкуда ПЛК будет оправлять ответ, даже получив запрос ?
Если поставит адрес 255 - то будет
kondor3000
04.04.2022, 08:28
В документации Модбас адрес зовут SlaveID. Для нашего рынка мы понимаем, что доки (тем более на англицком) читают неохотно, потому используем неправильное, но понятное название адрес!
Спасибо, на 6 странице хоть с одним вопросом разобрались, про второй вопрос уже не пишу, а то ещё на 10 страниц растянется.
а где в блоке функции ModBus Client вообще указывается ID устройства, к которому подключаюсь?
60289
Всем спасибо за помощь... выяснил все исходя из того,что писали тут умные люди, относительно обязательного указания ID устройства в подключении...плюс опытным путем проверил - взял Siemens LOGO 8.3, создал подключение с ПЛК100, НО так обязательно необходимо указывать ID устройства, как итог- все работает... начал искать, как указать в TIA Portal, в итоге все получилось. Единственное ,что странно- это отсутствие инфы на этот счет по Siemens`у... Всем спасибо, еще раз
60290
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot