Опрос по 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 На стороне сервера