Работа с Ethernet в M340

Также полезно почитать эту ссылочку http://se-automation.in.ua/2011/06/transparent-ready-modbus-tcp.html
 
1. Настройка IP в ЦПУ со встроенным Ethernet и NOE
Modicon M340 модули и CPUs с Ethernet могут получать IP адрес различным способом в зависимости от положения поворотных переключателей на задней части модуля.
 STORED  - выставляется в UNITY PROНижний переключатель в положении STORED. В этом случае IP адрес определяется настройками конфигурации UNITY PRO 
по имени устройства (через DHCP)IP адрес выдается DHCP-сервером по имени устройства. Имя состоит из двух частей.
1-я часть определяется типом модуля:
    BMX_2020_xxy (BMX P34 2020 CPU)
    BMX_2030_xxy (BMX P34 2030/20302 CPU)
    BMX_0100_xxy (BMX NOE 0100 and BMX PRA 0100 modules)
    BMX_0110_xxy (BMX NOE 0110 module)
2-я часть задается переключателями от 00 до 159.
Например: Для модуля BMX NOE 0100, значение 120 (12 x 10 - верхний переключатель) и 6 (6 x 1-нижний переключатель) указывает на номер 126. Таким образом его имя будет BMX_0100_126. 
CLEAR IP  -по MAC адресу Нижний переключатель в положении CLEAR IP. IP адрес определяется по MAC адресу устройства в формате IP=84.x.y.z , где 84-фиксированое значение, x,y,z - последние 3 поля из MAC адреса модуля.
Например, если модуль имеет MAC=00-00-53-12-01-C4, то IP у него будет IP=84.18.1.196
 BOOTP - выдается сервером BOOTP   Нижний переключатель в положении BOOTP. IP адрес выдается сервером BOOTP.  
 выдается сервером в зависимости от конфигурации UNITY PRO (STORED)

Нижний переключатель в положении STORED. В этом случае IP адрес определяется настройками конфигурации UNITY PRO (From a server)
для BOOTP: поле Device Name оставить пустым
для DHCP: в поле Device Name вписывается название устройства

 отключен Нижний переключатель в положении Disabled. Коммуникация отключена

 2. Создание и настройка Ethernet коммуникаций в UNITY PRO.
 
 
1 - создать новое соединение
2 - для соединение выбрать тип модуля (Model Family)
3 - определить IP адрес, маску, адрес шлюза (при необходимости)
4 - в настройках порта Ethernet подключить соединение: выбрать функцию и соединение
 
 3. Доступ к данным M340 по Modbus/TCP .
Наличие доступа к М340 по Ethernet (правильная настройка порта + разрешения Access Control) уже гарантирует Вам доступ к данным по Modbus/TCP. Иными словами Modbus/TCP сервер в М340 уже по умолчанию доступен. Вам будут доступны области данных %M и %MW используя следующие функции Modbus:
Function code
Quantum memory address
M340 and Premium memory address
Meaning
1
16#0XXX
%M
Read output bits, refer to note below.
2
16#1XXX
%M
Read input bits
3
16#4XXX
%MW
Read consecutive integer values (until 125 registers for Premium/Atrium PLCs)
4
16#3XXX
%MW
Read consecutive input integer values (until 124 registers for Premium/Atrium PLCs)
5
16#0XXX
%M
Write single output bit
6
16#4XXX
%MW
Write single integer value
15
16#0XXX
%M
Write n output bits
16
16#4XXX
%MW
Write consecutive integer values
23
16#4XXX
%MW
Read/write consecutive integer values
   
  4. Сервис Modbus/TCP клиент.
Если нужно реализовать функции Modbus/TCP клиента, можно использовать два сервиса: Modbus I/O Scaning или TCP/IP Messaging.
Сервис TCP/IP Messaging дает возможность обмениваться по Modbus/TCP, используя процедуры:  
READ_VAR - чтение переменных
WRITE_VAR - записи переменных
DATA_EXCH - обмен сообщениями с приложением-сервером (используется 502-й порт)
 
The table below lists the Modbus function codes and their use as a client on Premium, Quantum and M340 PLCs.
Function code
Quantum memory address
M340 and Premium memory address
Modbus request
Communication function
1
16#0XXX
%M
Read output bits
READ_VAR
2
-
%I
Read input bits, see 1)
READ_VAR
3
16#4XXX
%MW
Read consecutive integer values (until 125 registers for Premium/Atrium PLCs)
READ_VAR
4
-
%IW
Read consecutive input integer values (until 124 registers for Premium/Atrium PLCs), see 1)
READ_VAR SEND_RER for Premium/Atrium PLCs
15
16#0XXX
%M
Write n output bits
WRITE_VAR
16
16#4XXX
%MW
Write consecutive integer values
WRITE_VAR
 
 
 Ниже показан пример чтения 40 входных регистров ('%IW' - Input Regusters) начиная с 0-го с использованием процедуры Read_Var, и записи 40-ка выходных/внутренних регистров ('%MW' - Holding Registers) с использованием процедуры Write_Var.
Параметры PARA_RD и PARA_WR (массивы из 4-х INT) используются для контроля за обработки коммуникационных процедур: равность TRUE 0-го бита 0-го слова указывает на то, что предыдущий вызов ещё не обработан; 1-е и слово используется для контрля за ошибками; 2-е для таймаута; 3-е для контроля за количеством принятых байт. В примере чтение и запись производится 1раз/с но только при условии окончании обработки предыдущего вызова (NOT PARA_RD[0].0).
Следует обратить внимание на 2-е (начиная с нуля) слово из массива параметров GEST (PARA_RD[2] и PARA_WR[2]). Для Modbus/TCP туда обязательно нужно прописать таймаут (в сотнях миллисекунд), иначе, при отсутствии связи, клиентская функция повиснет в ожидании ответа навсегда (до перегрузки ПЛК). Если, например, задать PARA_RD[2]=30, то при отсутствии связи на протяжении 3 секунд, функция обработается с ошибкой, то есть PARA_RD[0].0=0 (т.е. функция обработана) и PARA_RD[1]="значения кода ошибки таймаута". 
Функция ADDM переводит символьный адресс в спец. формат нужный входу ADR. Символьный адрес состоит из имени коммуникации(в нашем случае 'Ethernet_1') и IP-адреса Сервера Modbus/TCP (берется в фигурные скобки). Если же нужно обращаться к Modbus RTU Slave через шлюз, то после фигурных скобок с IP шлюза указывается адрес Slave.  Например 'Ethernet_1{192.168.9.42}6' - обращение к 6-му Slave подключеному к шлюзу с IP=192.168.9.42     
 Для того, чтоб приведенный пример скомпилировался (Build), нужно разрешить использование динамических массивов: Tools->Project settings->Allow Dynamic Arrrays
 
 
ą
1.png
(303k)
Александр Пупена,
13 авг. 2013 г., 1:19
Comments