Вход

Просмотр полной версии : ПЛК100-K-L ModBusTCP Master-Slave



Doomers
29.03.2022, 21:28
Никак не могу подключиться к ПЛК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

melky
30.03.2022, 10:27
ПЛК100 требует при запросе указывать ID устройства. Без него не ответит.

Doomers
30.03.2022, 17:56
я понял, спасибо, как мне указывать в самой программе 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

Doomers
31.03.2022, 22:47
Спасибо...я еще уточню, пока не просмотрел то, что вы скинули , но обязательно это сделаю - вот я доьавлб в программу блок mb_server, все к нему подведу и задам нужные значения переменным, вопрос : та область памяти, с которой я хочу работать, настраивается в конфигурации плк? Я видел там добавляется мастер, слейв, протокол и уже переменные, с которыми мы будем работать по обмену или передачи данных так?

kondor3000
01.04.2022, 09:25
Спасибо...я еще уточню, пока не просмотрел то, что вы скинули , но обязательно это сделаю - вот я доьавлб в программу блок mb_server, все к нему подведу и задам нужные значения переменным, вопрос : та область памяти, с которой я хочу работать, настраивается в конфигурации плк? Я видел там добавляется мастер, слейв, протокол и уже переменные, с которыми мы будем работать по обмену или передачи данных так?

Да, только есть нюансы, все переменные в конфигурации, в ПЛК - слейве будут глобальные и энергонезависимые. Если ПЛК - мастер, то переменные будут просто глобальные. Переменным лучше дать имена в конфигурации и из программы обращаться к ним по именам.

А например через вывод символьной конфигурации, Содесис ОРС 0.2 и Скаду, можно получить доступ вообще ко всем переменным проекта.

Doomers
01.04.2022, 18:52
А зачем тогда нужны программные функции мастера? слейва? если все попросту в конфигурации задается... Я пробовал таким образом сделать, как указано на видео с подключением к панели - у меня связь не устанавливается 60040

kondor3000
01.04.2022, 23:15
А зачем тогда нужны программные функции мастера? слейва? если все попросту в конфигурации задается... Я пробовал таким образом сделать, как указано на видео с подключением к панели - у меня связь не устанавливается 60040

Для новичков удобнее конфигурация, для продвинутых есть обмен через библиотеки. А то что у вас не работает, скорее всего ошибки в настройках. Я проверял на ПЛК 154, у меня всё работало через конфигурацию и вообще без каких либо ФБ (функц. блоков) .

ЗЫ Просмотрел руководство на ПЛК100 и ничего не нашёл по поводу ID, зато нашёл примеры подключения двух ПЛК 100, там ничего нет вообще, кроме конфигурации, так что на счёт ID это всё фигня. Вот примеры соединения 2 ПЛК 100 по Модбас TCP между собой:

melky
01.04.2022, 23:20
Если ПЛК слейв то как бы и библиотеки не нужны, хватает конфигурации, ибо когда спросили, тогда и ответ будет дан.
Адресация в ПЛК с 0, но в программах иногда необходимо ставить с 1.
Не забываем по ID, почему то сотая серия не будет отвечать если просто задать IP и порт.
Не забываем о выравнивании переменных кратно своей длине данных, есть в документации по программированию ПЛК.

Начните банально с одной переменной int и потом шагните к float и все будет видно.

kondor3000
02.04.2022, 00:12
melky , у меня вопрос, где в обмене через конфигурацию надо указать ID для ПЛК100 ?
Просмотрел руководство, там ничего такого нет. Нашел примеры связи двух ПЛК100 (выложил выше), там тоже никакого ID. Откуда такая информация?

melky
02.04.2022, 09:40
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-ку чтобы проверить.

capzap
02.04.2022, 09:55
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 ничего не пишу.

Doomers
02.04.2022, 15:21
В симатике опрос устройств по TCP работает по принципу клиент-сервер, где клиент ОТПРАВЛЯЕТ, а сервер отвечает....Таким образом, чтоб опросить ПЛК100 (который в режиме слейв) мне нужно чтоб контроллер сименс работал как клиент... только в таком режиме он может отправлять запросы...Это полная ерунда выходит
А плк100 может быть мастером только для RS связи? Спасибо
60048

IVM
02.04.2022, 16:10
В симатике опрос устройств по TCP работает по принципу клиент-сервер, где клиент ОТПРАВЛЯЕТ, а сервер отвечает....Таким образом, чтоб опросить ПЛК100 (который в режиме слейв) мне нужно чтоб контроллер сименс работал как клиент... только в таком режиме он может отправлять запросы...Это полная ерунда выходит
А плк100 может быть мастером только для RS связи? Спасибо
60048

Так получается ПЛК100 в режиме Slave и будет сервером.

kondor3000
02.04.2022, 18:15
И да, после коннекта с сервером (модбас-клиентом) на овен-плк100 (110...), если клиент (модбас-мастер) будет жевать сопли в тишине более 10сек (около) сервер закроет коннект принудительно. Это фиксированное поведение сервера (модбас-слейва) в конфигурации. Для программного сервера можно запиливать иное поведение

Это вообще не проблема, можно сделать бит проверки связи, одним включается раз в секунду, другим сбрасывается, не сбросил больше 3-5 сек , соединение капут. И никогда ничего не закроется, пока связь есть.

melky
02.04.2022, 19:28
kondor3000 я просто однажды не указал ID в пакете TCP и ПЛК не ответил. Хотя какая ему разница на этот ID если у нас к одному IP адресу и по порту 502 в сотке может подключаться только один клиент? 100-ка не дает на один порт несколько сокетов, по крайней мере через Конфигуратор точно.

capzap какая разница, что там в OPC ? если речь идет о подключении другим устройством? указан там ID или нет никто кроме автора не знает.

Doomers
02.04.2022, 20:50
Связь наладил, все щас хорошо, НО ни читать, ни писать в регистры ПЛК100 не могу...почему? - да фиг знает....ерунда полная, ошибок нет, а значения попросту не меняются....
PS по RTU на примее работы с ТРМ201 все хорошо работает...
60049
60050
60051
60052

melky
02.04.2022, 22:07
Валенок а посмотреть по ссылке, что давал, где указывается ID не судьба? у меня вместо номера там было 0x00

Кстати у Modbus TCP есть еще MBAP Header, на который практически все производители ЛОЖАТ, так вот однажды людям попалось устройство, которое требовало этот MBAP Header. а это простой счетчик запросов по факту..

melky
02.04.2022, 22:10
Doomers а адрес так и указывается 0x40001 или все-таки 1 или 0 с указанием Holding Registers функций 0x03 ?
з.ы. просто не знаю Siemens настолько

Doomers
02.04.2022, 22:17
Да так и пишется, с RTU все хорошо, а этот ПЛК100 уже весь мозг выел...я новый чистый проект создал, чтоб отбросить все сомнения....НО - статус функции "чтение данных", а вот данных я не вижу, все по нолям....фигня полная вообще
60053

melky
02.04.2022, 22:25
В TiaPortal есть возможность посмотреть пакет TCP который отправляется от Simens до 100-ки ?

Если это симуляция на ПК то можно WireShark-ом посмотреть, вот чем смотреть между ПЛК я честно не знаю...

MB_Data_Len почему 1 если вы три регистра создали ?

capzap
02.04.2022, 22:29
Да так и пишется, с RTU все хорошо, а этот ПЛК100 уже весь мозг выел...я новый чистый проект создал, чтоб отбросить все сомнения....НО - статус функции "чтение данных", а вот данных я не вижу, все по нолям....фигня полная вообще
60053

У ОВЕН нет монополии на модбас, смотрите любое видео про MB_CLENT и сравнивайте что делаете не так в своем проекте, овеновский слейв не причем. Говорите есть соединение, покажите скрином Devices & networks вкладка Connections

melky
02.04.2022, 22:52
Валенок какое устройство уже не помню, надо по форуму лазить и искать. первые два байта заголовка это Transaction Id - можете проверить на ПЛК 100(110) всегда там нули ставить и ПЛК будет отвечать. Да и многие устройства из мне знакомых просто игнорируют этот параметр.

Но таки попалось какое-то устройство. которое требовало наличие счетчика и не отвечало, если там были нули.

MB_Unit_ID - то, о чем я говорил, без этого ID сотка не ответит. Хотя честно не пробовал с 0xFF а с 0x00 оно не отвечает.

melky
02.04.2022, 23:49
Валенок не равными, а увеличиваться и не быть равными нулю это если по протоколу. Но большинство кладут на номер транзакции с высокой....

з.ы. на счет смотреть - WireShark умеет смотреть только физические интерфейсы своего ПК, то есть что ПК отправляет. Какого-то ПО, которое может сниферить сеть между сторонними устройствами я на знаю. Я об этом больше говорил. То есть если ПЛК работает на ПК в эмуляции то фозможно можно посмотреть Шарком, хотя не факт. Пример с виртуальной машиной где интерфейс в брижде Шарк не отловит.

Валенок
03.04.2022, 00:05
..не равными, а увеличиваться.
Вы хоть вникните - чему и кто должен быть равен
"В пакете ответа от сервера эти два байта обязаны быть равными значениям в пакете запроса"


не быть равными нулю это если по протоколу

Это где ?

melky
03.04.2022, 00:32
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 если ответ был передан.

Валенок
03.04.2022, 01:03
Я человек простой. Тупо промт :

Несколько транзакций MODBUS могут быть активированы одновременно на одном TCP-соединении.
Примечание: Если это сделано, то идентификатор транзакции MODBUS должен использоваться для однозначной идентификации соответствующих запросов и ответов...

Про некий "0" ничего не вижу. Но заметил.
А счетик, умножитель или рандом - пофиг.

Doomers
03.04.2022, 08:30
Видео уже с десяток пересмотрел - все аналогично....Не совсем понял, зачем вам скрин с Connections из Device & networks, сконфигурировать ПЛК100 в ТИА каким образом смогу? - на него даже GSD файла нет...
60056

melky
03.04.2022, 09:28
Валенок вот скажите, где в протоколе указано, что ID транзакции ДОЛЖЕН быть НОЛЬ ? не допускается, а именно должен ?

Doomers у вас Siemens реальный или возможен запуск на виртуальном? Или через онлайн отладку можно пакет TCP увидеть ?
Любой парсер Modbus пакета сразу покажет ху из ху...

Валенок
03.04.2022, 09:37
.. вот скажите, где в протоколе указано, что ID транзакции ДОЛЖЕН быть НОЛЬ ? не допускается, а именно должен ?...
Тоже интересно - КТО такое утверждает ?

Doomers
03.04.2022, 10:04
У меня все живое....Пакет отсмотреть - даже не слышал о таком, не исключаю, но даже не слышал....

capzap
03.04.2022, 10:05
60056

я не эту картинку спрашивал, вот же какую надо 60059, если Вы действительно получили соединение то там должна отображаться строчка
И смотрите как люди показывают свои настройки для обмена 60060

melky
03.04.2022, 10:13
Doomers к сожалению не знаю TiaPortal, если в онлайн отладке есть подключение есть там возможность смотреть посылаемые пакеты TCP или нет ?
А чтобы посмотреть трафик TCP надо на ПК две сетевые поставить и организовать на нем коммутатор, потому что тот же WireShark по другому не сможет увидеть чужие пакеты.

Doomers
03.04.2022, 11:12
У меня никаких строк нет...
60063
60064

capzap
03.04.2022, 11:15
У меня никаких строк нет...
60063
60064

в свойствах контроллера, IP адрес когда задавали, сам то сетевой интерфейс создали? На скрине не видно что сеть существует 60065

Doomers
03.04.2022, 11:23
В онлайне есть, подсеть добавил...
60067

capzap
03.04.2022, 11:26
у ПЛК100 какой адрес, покажите скрин выполнение команды PLCInfo

ЗЫ за одно и адрес компа в этой сети, если с контроллером не получится придется смотреть пакеты, для этого скачивайте симулятор https://www.hmisys.com/downloads/PeakHMISlaveSimulatorInstall.exe и в сименсе указывайте адрес ПК с запущенным симулятором слейва и смотрите приходят ли пакеты

Doomers
03.04.2022, 11:29
Вот
60068

capzap
03.04.2022, 11:32
ну, все должно работать
Опрос клиентом кто обеспечивает, как в видео меркер времени?

Doomers
03.04.2022, 11:35
Да, тактобит при условии,что нет ошибок

60069

capzap
03.04.2022, 11:44
переводите опрос на ПК, потому что в коннекшенах должен быть полностью зеленый квадрат, а там видна какая то ошибка

Doomers
03.04.2022, 13:37
Вот и проблема с сименом...не могу подключиться к симулятору...странно...Симулятор пишет - все ок, а вот симен - подключается без конца и все, связи нет
60070

capzap
03.04.2022, 14:03
Я рекомендовал каким симулятором воспользоваться, Вы решили поступить по своему. Еще бы рекомендовал ни когда не прислушиваться к мнению мелкого, он полтемы исписал якобы знаниями протокола и только вводит в заблуждение из за злополучного 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. Тогда зачем тогда об этом упоминать отдельно?

melky
03.04.2022, 18:20
Шлюз точный при такой-то маске сети ?

Еще раз для непонятливых, если в пакете мастера TCP вместо ID (смотреть протокол Modbus TCP) 0x00 вместо адреса (лень доставать и проверять на 100-ке с 0xFF или другим отличным от указанного в конфигурации) 100-ка НЕ ОТВЕТИТ на TCP запросы, будет просто ТИШИНА.

melky
03.04.2022, 19:49
Валенок по вашей ссылке если там 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 страниц растянется.

Doomers
11.04.2022, 19:18
а где в блоке функции ModBus Client вообще указывается ID устройства, к которому подключаюсь?
60289

Doomers
11.04.2022, 19:33
Всем спасибо за помощь... выяснил все исходя из того,что писали тут умные люди, относительно обязательного указания ID устройства в подключении...плюс опытным путем проверил - взял Siemens LOGO 8.3, создал подключение с ПЛК100, НО так обязательно необходимо указывать ID устройства, как итог- все работает... начал искать, как указать в TIA Portal, в итоге все получилось. Единственное ,что странно- это отсутствие инфы на этот счет по Siemens`у... Всем спасибо, еще раз
60290