Uploaded by Руслан Гафаров

Опрос по modbus ScPro

advertisement
Опрос по modbus-rtu, modbus- tcp
Обмен данными со сторонними устройствами.
Обмен по Modbus (PLC Slave)
Modbus TCP:
1. Устанавливаем настройки контроллеру. Задаем Ip Адрес, по которому будем обращаться к
PLC
Далее смотрим адреса регистров и функций, по которым будем обращаться
Например, к выходам (Q) мы можем обращаться в режиме чтения по 1(Read Code)
функции, в режиме записи-5/15 (Write Code), обращение с позиции 0 (Protocol Address) и
т.д.
2. Далее запускаем программу, вычитывающую данные Modbus Poll. Настраиваем
подключение
Далее указываем функции(чтения/записи), адрес, с которого начать считывать (см рисунок
Modbus Protocol Address –> Protocol Address) Например для данного случая мы считываем
10 регистров, начиная с 0 области %MW.
Если все подключено верно, в результате увидим данные, что крутятся на контроллере в
указанной области.
Задание:
1. С переменного резистора преобразовать входное значение с кода АЦП в физическую
величину в диапазоне 0.0-50.0 (°С) любым изученным методом
2. Передать это значение в таблицу %MW
3. Считать полученное значение Modbus Poll-ом
Обмен по Modbus TCP(PLC MASTER)
Modbus TCP:
1. Устанавливаем настройки контроллеру. Задаем Ip Адрес
Далее, смотрим настройки устройств, к которым будем обращаться. Например, с
устройства с адресом 192.168.69 пишем и читаем данные в адреса Data Buffer
2. Далее запускаем программу Modbus Slave. Настраиваем подключение
Если все подключено верно, в результате увидим, что данные со слейв устройства попали
в контроллер
Задание:
1.В устройстве модбас слейв имеются некоторые значения типа real
2. Вычитать эти значения в регистровую область %mw
3. Преобразовать регистры %mw в значение типа Real и поместить в переменную таблицы
Varable Table
Modbus RTU (PLC Slave):
1. Устанавливаем настройки контроллеру. Задаем COM1 (или/и) COM2 Адрес, по которому
будем обращаться к PLC
Далее смотрим адреса регистров и функций, по которым будем обращаться
Например, к выходам (Q) мы можем обращаться в режиме чтения по 1(Read Code)
функции, в режиме записи-5/15 (Write Code), обращение с позиции 0 (Protocol Address) и
т.д.
2. Для примера в качестве modbus master устройства будем использовать ноутбук ,
подключаем по Ethernet ноутбук с контроллером. Настраиваем Moxa Uport 1150, после
установки ПО. В диспетчере задач настраиваем порт (2-4 проводное подключение, RS-232485 и тд, в нашем случае 2 – проводное RS 485)
3. Далее запускаем программу, вычитывающую данные Modbus Poll. Настраиваем
подключение
Указываем Slave ID устройства, в нашем случае это COM1 порт, адрес мы устанавливали 1. Далее
указываем функции(чтения/записи), адрес, с которого начать считывать (см рисунок Modbus
Protocol Address –> Protocol Address) Например для данного случая мы считываем 10 регистров,
начиная с 0 области %MW.
Если все подключено верно, в результате увидим данные, что крутятся на контроллере в
указанной области.
Обмен данными по Modbus RTU Master (PLC Master)
1. Конфигурируем контроллер следующим образом
No. – номер запроса по порядку. Необходим для контроля ответа на запрос. Для первого запроса порта
COM1 признаком отсутствия ответа будет являться значение "1" первого бита переменной %SW513, для
второго запроса – второй бит переменной %SW513, для семнадцатого запроса – первый бит переменной
%SW517. Для первого запроса порта COM2 признаком отсутствия ответа будет являться значение "1"
первого бита переменной %SW517, для второго запроса – второй бит переменной %SW517, для
семнадцатого запроса – первый бит переменной %SW518. Function code – Код функции (см. "1.4.1
Описания кода функции" данного руководства); Slave address – Адрес ведомого устройства (slave);
Register address – Адрес начального регистра; Register number – Количество регистров; Data buffer – буфер
данных в памяти ПЛК, куда будут скопированы (для функций 1, 2, 3, 4) или откуда будут взяты (для
функций 5, 6, 15, 16) данные; Control bit (M) – бит в области памяти ПЛК %M, при установке которого в "1"
ПЛК выполнит этот запрос до тех пор, пока не получит ответ, при получении ответа данный бит будет
установлен в "0". В случае, если настройка запроса неверна, СКПро сообщит об этом, с указанием типа
ошибки.
В примере описано чтение (Function code 3) слейв устройства с адресом 5 (slave address 5), читать будет
начиная с 10 регистра(Register address 10) на слейв устройстве в колличестве 5 регистров (Register number
5) и ложить будет в регистр, начиная с %MW0010 (Data Buffer). Описана запись- Function code 16) слейв
устройства с адресом 5 (slave address 5), писать будет начиная с 20 регистра (Register address 20) на слейв
устройстве в колличестве 3 регистров (Register number 3), брать данные будет с контроллера, начиная с
области %MW0050
2. Для примера в качестве modbus master устройства будем использовать ноутбук ,
подключаем по Ethernet ноутбук с контроллером. Настраиваем Moxa Uport 1150, после
установки ПО. В диспетчере задач настраиваем порт (2-4 проводное подключение, RS-232485 и тд, в нашем случае 2 – проводное RS 485)
3. Настраиваем подключение в программе Modbus Slave. Указываем что это 5 устройство,
режим чтения (Function 03), отображать, начиная с 10- го 15-ть регистров.
И само подключение – Serial Port, Указываем COM порт с MOXA и настройки опроса
4. Если все настроено правильно, то увидим данные, которые контроллер получает (это
начиная с %MW0010на контроллере из обрасти, начиная с 10 в слейв устройстве) и
которые передает (это начиная с %MW0050на контроллере в слейв устройство в область,
начиная с 20)
Обмен данными по Modbus FreePort (PLC Master, ноут slave) чтение и запись
1. Конфигурируем контроллер следующим образом. Указываем в качестве Protocol FreePort,
это конфигурируемый порт пользователем
2. Для примера в качестве modbus устройства будем использовать ноутбук , подключаем по
Ethernet ноутбук с контроллером. Настраиваем Moxa Uport 1150, после установки ПО. В
диспетчере задач настраиваем порт (2-4 проводное подключение, RS-232-485 и тд, в
нашем случае 2 – проводное RS 485)
3. Настраиваем подключение в программе Modbus Slave. Указываем что это 5 устройство,
режим чтения (Function 03), отображать, начиная с 10- го 15-ть регистров.
И само подключение – Serial Port, Указываем COM порт с MOXA и настройки опроса
4. Вызываем в программе функциональный блок MODRW и прописываем ему значения
PORT 1 -COM 1 контроллера, ADR 5- адрес модбас слейв устройства (в нашем случае ноута
с программой Modbus Slave), CODE 16- функция записи 16, R 20 – в 20 регистр на слейв
устройстве, N 3- количество -3 регистра, DATA %MW0025- данные взять с области %
MW0025 контроллера. Если необходимо вычитать данные в контроллер используем
функцию 03
5. Если все подключения выполнены верно, то увидим как с контроллера уходят значения в
слейв устройство
SW21 (состояние отправки COM1), SW23 (состояние отправки COM2)
0: в процессе отправки 1: успешная отправка
SW22 (состояние приема COM1), SW24 (состояние приема COM2)
0: в процессе получения 1: успешное получение
Коммуникации по протоколу TCP
Для достижения TCP-связи требуются функциональные блоки TCON, TDISCON, TSEND, TRECV.
TCON устанавливает коммуникационное соединение, TDISCON отключает коммуникационное
соединение, TSEND отправляет сообщение, а TRECV принимает сообщение.
Для того чтобы установить соединение, его нужно инициализировать. Инициализация
происходит при помощи функционального блока TCON. На стороне клиента
инициализируем соединение :
EN: Включение функционального блока, тип данных: BOOL, функциональный блок TCON
включается восходящим импульсом;
ID: Номер подключения, тип данных: WORD, каждая установленная связь по Ethernet между
клиентом и сервером должна унифицироваться использованием уникального
идентификационного номера, этот номер будет один и тот же для клиента и для сервера,
для всех функций, с которыми будут обмениваться данными этот клиент и этот сервер:
TDISCON, TSEND, TRECV, TCON. В данном случае значение 2.
CON: Настройки параметров, тип данных: ETH_PARAM, контакты задаются следующим образом.
TYPE: Выбор типа протокола связи порта, тип данных DWORD, 1 для TCP-клиента, 2 для TCPсервера, 3 для протокола UDP;
TIMEOUT: Настройка времени ожидания связи (отправка/получение), тип данных WORD,
десятичная дробь по умолчанию, единица измерения 10 мс;
PORT: Настройка номера порта, тип данных WORD. Обратите внимание, чтобы избежать установки
значения 502, этот номер порта занят системой, здесь установите, например, 501;
IPADDR: Когда контроллер - TCP-сервер (TYPE=2) IP адрес указывать не обязательно- этот
параметр оставляйте пустым; Когда контроллер является клиентом (TYPE=1) указываем
IP-адрес сервера, к которому необходимо подключиться. На первом месте стоит
младший байт, то есть IP-адрес ранжируется снизу вверх. IP-адрес, представленный на
рисунке выше, составляет: 192.168.1.100.
RSVD: Системой зарезервирован в режиме ожидания и в настоящее время не используется.
STA: Вывод состояния связи, тип данных WORD расшифровка ниже):

0x01: Операция продолжается

0x02: Операция прошла успешно

0x81: Внутренняя ошибка

0x82: Идентификатор подключен

0x83: Идентификатор не подключен

0x84: Ошибка подключения

0x85: Истекло время ожидания операции

0x86: Тип является незаконным

0x87: Достигнуто максимальное количество подключений

0x88: Слишком частые операции

0x89: Ошибка отправки/получения
После настройки инициализации подключения необходимо отправить данные на контроллер
сервера с помощью функционального блока TSEND
На стороне сервера
Download