PDA

Просмотр полной версии : Связь двух ПЛК по ethernet



alexhome
13.10.2017, 16:07
Прошу оказать помощь в организации связи двух ПЛК ОВЕН (100K-L и 110(M02) ).
О ПЛК:
ПЛК ОВЕН 100K-L - Modbus TCP подключение (slave) (Доступа к ПО нет, контроллер чужой)

PLCInfo
PLC model MODEL PLC 100
Binary VERSION 2.16.0
Need Target version 2.10
Compiled: 13:14:11 Nov 7 2016
MAC 6A:77:00:FF:DE:F4
IP 10.0.6.10
GATE 10.0.6.1
MASK 255.255.255.0
PIC upper version is 09
Licence limited to 360 bytes
No DAC
PIC lower version is 0a

Выдержка из описания прибора с контроллером: "Подключение должно быть произведено к порту Ethernet с разъёмом RJ-45. Настройки:
- IP по-умолчанию 10.0.6.10
- Порт 502
Регистры с номерами 0-12.
Чтение регистров должна быть выполнено функцией 3. Описание регистров приведено в таблице 1."


ПЛК ОВЕН 110(М02) (master) (Доступ к ПО есть) -
PLCInfo
PLC model MODEL PLC 110-60
Binary VERSION 0.3.67
Need Target version >= 3.10
Compiled: 13:05:36 Feb 8 2017
STM32 binary version 114
MAC 6A:77:00:FF:FB:DC
IP 10.0.6.9
GATE 10.0.6.1
MASK 255.255.0.0
конфигурация в приложенном файле.
Данные из ПЛК 100 не поступают. ПЛК 110 постоянно показывает ошибки связи (код 81, 84, 89).336593366033661

krollcbas
14.10.2017, 02:51
1. Определяете в подчиненном ПЛК100 (slave) н-ное количество переменных для обмена
2. Параметрируете правильно порты, чтоб контроллеры могли достучаться друг для друга
3. Настраиваете ПЛК110(master),так чтоб он слал телеграммы к подчиненному узлу

У вас указан порт RS232, нужно TCP

alexhome
14.10.2017, 10:44
[QUOTE=krollcbas;260201]1. Определяете в подчиненном ПЛК100 (slave) н-ное количество переменных для обмена
2. Параметрируете правильно порты, чтоб контроллеры могли достучаться друг для друга
3. Настраиваете ПЛК110(master),так чтоб он слал телеграммы к подчиненному узлу


К ПЛК100 у меня доступа нет, поэтому переменные задать не могу, но производитель прибора дал адреса регистров для чтения и уверял меня, что ПЛК100 настроен как modbus tcp slave.
ПЛК110 настроен как modbus tcp master (видно из конфигурации). Что значит "слал телеграммы"?

alexhome
14.10.2017, 10:48
У вас указан порт RS232, нужно TCP[/QUOTE]


В документации на конфигуратор ПЛК указано, что для Modbus (master) у него нет явного TCP-порта, а есть настройка последовательного порта в режим TCP.

capzap
14.10.2017, 11:00
[QUOTE=krollcbas;260201]1. Определяете в подчиненном ПЛК100 (slave) н-ное количество переменных для обмена
2. Параметрируете правильно порты, чтоб контроллеры могли достучаться друг для друга
3. Настраиваете ПЛК110(master),так чтоб он слал телеграммы к подчиненному узлу


К ПЛК100 у меня доступа нет, поэтому переменные задать не могу, но производитель прибора дал адреса регистров для чтения и уверял меня, что ПЛК100 настроен как modbus tcp slave.
ПЛК110 настроен как modbus tcp master (видно из конфигурации). Что значит "слал телеграммы"?

и что до плк100 есть пинг? Телнет по 502 порту подключается к контроллеру?

alexhome
14.10.2017, 12:51
[QUOTE=alexhome;260212]

и что до плк100 есть пинг? Телнет по 502 порту подключается к контроллеру?

С ПЛК100 проверяю связь по ethernet с помощью codesys, подключение проходит успешно, но программу конечно не меняю.

Филоненко Владислав
15.10.2017, 14:10
еще у ModBus TCP есть slave ID, как и у serial. По умолчанию это №1, но пользователь может поменять
учитывая код 81 в ответе, коннект проходит, но slave не отвечает, т.к. slave ID не тот

melky
15.10.2017, 15:40
Согласно последнему посту от Филоненко Владислав подстверждаю. Де факто в ПЛК100 не Modbus TCP а что-то вроде Modbus RTU поверх TCP.
По крайней мере при подключении со Scada системы так же надо устанавливать адрес слейва, который прописан в ПЛК в конфигурации.

melky
15.10.2017, 17:43
Валенок в нормальном запросе Modbus TCP не участвует номер слейва, его там ваще не присутствует...

00 00 Transaction identifier 0x0000 (0)
00 00 Protocol identifier 0 = MODBUS protocol
00 06 Length 0x0006 (6)
01 Unit identifier 0x01 (1)
03 Function code 0x03 (3) - Read Holding Registers
00 00 Starting address 0x0001 (1)
00 20 Quantity 0x0020 (32)

Подключал устройства, которым не требовалось указывать адрес слейва для RTU режима, как для ПЛК100 и все прекрасно работало...
ПЛК100 без данного указания отвечать не будет, поэтому и предположил, что внутри ПЛК100 организован шлюз...

Филоненко Владислав
16.10.2017, 15:16
Согласно последнему посту от Филоненко Владислав подстверждаю. Де факто в ПЛК100 не Modbus TCP а что-то вроде Modbus RTU поверх TCP.
По крайней мере при подключении со Scada системы так же надо устанавливать адрес слейва, который прописан в ПЛК в конфигурации.
неверный вывод, смотрим стандарт

Филоненко Владислав
16.10.2017, 15:17
Валенок в нормальном запросе Modbus TCP не участвует номер слейва, его там ваще не присутствует...
01 Unit identifier 0x01 (1)


А Unit identifier это что, по Вашему?

melky
16.10.2017, 23:00
Филоненко Владислав я к тому, что много устройств не требуют вводить Unit identifier вообще. то есть там можно оставлять 0 и все работает, так как участвет только IP и Port.
И в зависимости от Scada систем иногда при подключении по Modbus TCP такой параметр даже некуда прописать, а без него ПЛК Овен не ответит.

capzap
17.10.2017, 07:09
Филоненко Владислав я к тому, что много устройств не требуют вводить Unit identifier вообще. то есть там можно оставлять 0 и все работает, так как участвет только IP и Port.
И в зависимости от Scada систем иногда при подключении по Modbus TCP такой параметр даже некуда прописать, а без него ПЛК Овен не ответит.

Т.е. на основе некоторого частного случая Вы делаете вывод о протоколе в целом, Вам вообще известно что на каждый запрос есть ответ, например поставили ноль, а слейв имеет адрес по умолчанию единицу, что будет у мастера и слейва?

melky
17.10.2017, 09:06
При TCP запросах какая разница какой адрес слейва для RTU режима ? и да, Овен, это пока первый прибор, которому для подключения по TCP пришлось прописывать Unit identifier, остальные, что попадались как-то обходились без этого параметра, так как прибор однозначно идентифицируется по IP.

capzap
17.10.2017, 09:15
При TCP запросах какая разница какой адрес слейва для RTU режима ? и да, Овен, это пока первый прибор, которому для подключения по TCP пришлось прописывать Unit identifier, остальные, что попадались как-то обходились без этого параметра, так как прибор однозначно идентифицируется по IP.

Вы сейчас просто пытаетесь отстоять свою точку зрения что у овен рту поверх ТСР. Вот на скрине эмулятор слейва ТСР, если видите то адрес задается
Стандарт есть, идентификация в нем описана, сами же выложили. Кто как делает это его личное дело, я тоже пишу слейв не заморачиваюсь по адресу, просто в обратку отправляю первые байты пришедшего запроса, но я не утверждаю что соблюдаю стандарт

alexhome
17.10.2017, 11:45
Получен первый положительный результат. При установке в модуле Universal Modbus Device значение параметра ModuleSlaveAddress равное 1 получен ответ от ПЛК100, правда вместо нормальных данных пришла какая-то абракадабра, но ошибок связи уже практически нет (очень редко появляется код 81). И конечно же оба контроллера должны находится в одной подсети.

alexhome
18.10.2017, 12:24
Рано радовался!
Пытаюсь 2 дня повторить связь, и ничего не выходит, постоянно висит ошибка 84, последний адрес равен 0.

alexhome
18.10.2017, 16:29
Все получилось!
Обязательно надо выставлять следующие параметры:
1. NetMode - TCP;
2. ModulSlaveAddress - адрес слейв устройства;
3. ModulIP - обязательно через двоеточие, а не через точку;
4. Byte Sequence - Native
33742