Wientek(мастер)+2устройства slave. по ethernet
Добавлено: 19 янв 2016, 14:02
Здравствуйте!
Вопрос – как настроить работу панели Wientek-мастер с двумя slave устройствами по протоколу Modbus tcp/ip интерфейс Ethernet.
Панель wientek MT8070iH (является мастером)
ПО: EasyBuilder8000.
Описание:
IP адрес панели wientek «168.192.0.197», порт 502.
Создаю в проекте 2 устройства.
1. Устройство Slave с именем «MODBUS TCP/IP 2»
Тип «Modbus tcp/ip»
Ip адрес «168.192.0.198», порт 502
2. Устройство Slave с именем «MODBUS TCP/IP 1»
Тип «Modbus tcp/ip»
Ip адрес «168.192.0.119», порт 502
2 устройства созданы:
«MODBUS TCP/IP 2»
«MODBUS TCP/IP 1»
Далее, пишу макрос в котором опрашиваю 2 устройства по очереди;
Период выполнения макроса 7 секунд.
macro_command main()
unsigned short ushortt
float floatt
//опрос 192.168.0.198 устройство "MODBUS TCP/IP 2" ***********************************************
//считываю регистры
//1
GetData(ushortt, "MODBUS TCP/IP 2", 4x, 2, 1)
SetData(ushortt, "Local HMI", "ushort2", 1)
//2,3
GetData(floatt, "MODBUS TCP/IP 2", 5x, 3, 1)
SetData(floatt, "Local HMI", "float2", 1)
//прибавляю 1
ushortt =ushortt +1
floatt=floatt +1
//записываю новое значение
SetData(ushortt, "MODBUS TCP/IP 2", 3x, 2, 1) //1
SetData(floatt, "MODBUS TCP/IP 2", 5x, 3, 1) //2,3
//опрос 192.168.0.119 устройство "MODBUS TCP/IP 1" ***********************
//считываю значения
//1
GetData(ushortt, "MODBUS TCP/IP 1", 4x, 2, 1)
SetData(ushortt, "Local HMI", "ushort1", 1)
//2,3
GetData(floatt, "MODBUS TCP/IP 1", 5x, 3, 1)
SetData(floatt, "Local HMI", "float1", 1)
//прибавляю 1
ushortt =ushortt +1
floatt=floatt +1
//записываю новое значение
SetData(ushortt, "MODBUS TCP/IP 1", 3x, 2, 1)
SetData(floatt, "MODBUS TCP/IP 1", 5x, 3, 1)
end macro_command
В результате Wientek отправляет все запросы на 1 устройство с адресом «192.168.0.198» ("MODBUS TCP/IP 2")
Запросы которые приходят от панели wientek :
14 : 43 : 22 : 720 : 0 40 0 0 0 6 2 3 0 1 0 1 ;
14 : 43 : 22 : 752 : 0 41 0 0 0 6 2 3 0 2 0 2 ;
14 : 43 : 22 : 767 : 0 42 0 0 0 9 2 16 0 1 0 1 2 0 184 ;
14 : 43 : 22 : 783 : 0 43 0 0 0 11 2 16 0 2 0 2 4 67 57 0 0 ;
14 : 43 : 22 : 830 : 0 44 0 0 0 6 1 3 0 1 0 1 ;
14 : 43 : 22 : 845 : 0 45 0 0 0 6 1 3 0 2 0 2 ;
14 : 43 : 22 : 877 : 0 46 0 0 0 9 1 16 0 1 0 1 2 0 185 ;
14 : 43 : 22 : 892 : 0 47 0 0 0 11 1 16 0 2 0 2 4 67 58 0 0 ;
Как сделать чтобы первые 4 запроса были отправлены на адрес «192.168.0.198», а вторые четыре на адрес «192.168.0.119».
Причем если устройства поменять местами в настройках.
Список устройств:
«MODBUS TCP/IP 1»
«MODBUS TCP/IP 2»
То все запросы будут приходить на устройство «192.168.0.119» ( т е на первое устройство modbas tcp/ip в списке ).
Что делать? Ничего не могу найти в документации.
Причем ошибок компилятор не выдает никаких, все нормально загружается.
Вопрос – как настроить работу панели Wientek-мастер с двумя slave устройствами по протоколу Modbus tcp/ip интерфейс Ethernet.
Панель wientek MT8070iH (является мастером)
ПО: EasyBuilder8000.
Описание:
IP адрес панели wientek «168.192.0.197», порт 502.
Создаю в проекте 2 устройства.
1. Устройство Slave с именем «MODBUS TCP/IP 2»
Тип «Modbus tcp/ip»
Ip адрес «168.192.0.198», порт 502
2. Устройство Slave с именем «MODBUS TCP/IP 1»
Тип «Modbus tcp/ip»
Ip адрес «168.192.0.119», порт 502
2 устройства созданы:
«MODBUS TCP/IP 2»
«MODBUS TCP/IP 1»
Далее, пишу макрос в котором опрашиваю 2 устройства по очереди;
Период выполнения макроса 7 секунд.
macro_command main()
unsigned short ushortt
float floatt
//опрос 192.168.0.198 устройство "MODBUS TCP/IP 2" ***********************************************
//считываю регистры
//1
GetData(ushortt, "MODBUS TCP/IP 2", 4x, 2, 1)
SetData(ushortt, "Local HMI", "ushort2", 1)
//2,3
GetData(floatt, "MODBUS TCP/IP 2", 5x, 3, 1)
SetData(floatt, "Local HMI", "float2", 1)
//прибавляю 1
ushortt =ushortt +1
floatt=floatt +1
//записываю новое значение
SetData(ushortt, "MODBUS TCP/IP 2", 3x, 2, 1) //1
SetData(floatt, "MODBUS TCP/IP 2", 5x, 3, 1) //2,3
//опрос 192.168.0.119 устройство "MODBUS TCP/IP 1" ***********************
//считываю значения
//1
GetData(ushortt, "MODBUS TCP/IP 1", 4x, 2, 1)
SetData(ushortt, "Local HMI", "ushort1", 1)
//2,3
GetData(floatt, "MODBUS TCP/IP 1", 5x, 3, 1)
SetData(floatt, "Local HMI", "float1", 1)
//прибавляю 1
ushortt =ushortt +1
floatt=floatt +1
//записываю новое значение
SetData(ushortt, "MODBUS TCP/IP 1", 3x, 2, 1)
SetData(floatt, "MODBUS TCP/IP 1", 5x, 3, 1)
end macro_command
В результате Wientek отправляет все запросы на 1 устройство с адресом «192.168.0.198» ("MODBUS TCP/IP 2")
Запросы которые приходят от панели wientek :
14 : 43 : 22 : 720 : 0 40 0 0 0 6 2 3 0 1 0 1 ;
14 : 43 : 22 : 752 : 0 41 0 0 0 6 2 3 0 2 0 2 ;
14 : 43 : 22 : 767 : 0 42 0 0 0 9 2 16 0 1 0 1 2 0 184 ;
14 : 43 : 22 : 783 : 0 43 0 0 0 11 2 16 0 2 0 2 4 67 57 0 0 ;
14 : 43 : 22 : 830 : 0 44 0 0 0 6 1 3 0 1 0 1 ;
14 : 43 : 22 : 845 : 0 45 0 0 0 6 1 3 0 2 0 2 ;
14 : 43 : 22 : 877 : 0 46 0 0 0 9 1 16 0 1 0 1 2 0 185 ;
14 : 43 : 22 : 892 : 0 47 0 0 0 11 1 16 0 2 0 2 4 67 58 0 0 ;
Как сделать чтобы первые 4 запроса были отправлены на адрес «192.168.0.198», а вторые четыре на адрес «192.168.0.119».
Причем если устройства поменять местами в настройках.
Список устройств:
«MODBUS TCP/IP 1»
«MODBUS TCP/IP 2»
То все запросы будут приходить на устройство «192.168.0.119» ( т е на первое устройство modbas tcp/ip в списке ).
Что делать? Ничего не могу найти в документации.
Причем ошибок компилятор не выдает никаких, все нормально загружается.