KRModbusMaster.pas

KRModbusMaster - клиентская части протокола Modbus. Формирует пакет набора стандартных функций протокола с последующей отправкой на Slave-устройство. Полученный ответ проверяет на наличие ошибок и разбивает на составные части.

Типы данных

  • TMBMError – ошибка обработчика
  • TMBMCallBack – процедура обратного вызова при получении ответа от сервера

Константы

Коды ошибок:
  • mbmeNotConnector – не подключен модуль передачи данных
  • mbmeIncorrectID – неверный идентификатор пакета
  • mbmeIncorrectPackageLength – неверная длинна пакета
  • mbmeCRC – ошибка контрольной суммы
  • mbmeIncorrectFunction – неверный номер функции
  • mbmeIncorrectMBPackageLength – неверная длинна Modbus пакета
  • mbmeIncorrectDataLength – неверная длинна данных
  • mbmeQueueOverflowed – очередь переполнена
  • mbmeTimeOut – тайм аут
  • mbmeRealTimeError – ошибка времени выполнения
  • mbmeModbusNotActive – обработчик протокола Modbus выключен
  • mbmeClientNotActive – Modbus клиент выключен
  • MB_PARSER_ERRORS_MSG – список сообщений о ошибках

Классы

TKRModbusMaster - клиент протокола Modbus

Свойства
Методы

Преобразование кода ошибки в соответствующее сообщение

  • AError - код ошибки
  • ALevel - исходящая переменная, содержит сообщение о типа ошибки
  • Result - сообщение о ошибке

Отправляет запрос на выполнение функции чтение состояния группы дискретных регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartCoil - начальный дискретный регистр
  • ACount - количество дискретных регистров
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение функции чтение состояния группы дискретных входов

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartInput - начальный дискретный вход
  • ACount - количество дискретных входов
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение функции чтение значения регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - начальный регистр
  • ACount - количество регистров
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение функции чтение значения входящих регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - начальный входящий регистр
  • ACount - количество входящих регистров
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение пользовательской функции

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AFunc - код функции
  • AData - указатель на буфер данных
  • ADataLen - количество байт данных в буфере
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение функции записи состояния дискретного регистра

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • ACoilNum - адрес дискретного регистра
  • AData - новый статус
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение функции записи состояния группы дискретных регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartCoil - начальный дискретный регистр
  • ACount - количество дискретных регистров
  • AData - новые статусы регистров
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение функции записи значения в регистр

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - адрес регистра
  • AData - новое значение регистра
  • ACallBack - функция, которая будет вызвана после обработки запроса

Отправляет запрос на выполнение функции записи данных в группу регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - начальный регистр
  • ACount - количество регистров
  • AData - новые значения регистров
  • ACallBack - функция, которая будет вызвана после обработки запроса

Добавление пакета в очередь на отправке

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AFunc - код функции
  • APPack - указатель на буфер
  • APkLen - количество байт данных в буфере
  • ACallBack - функция, которая будет вызвана после обработки запроса
  • ARecvLen - длинна ответа. Если длинна ответа не постоянна, то устанавливается ноль

Формирование пакета функции чтение состояния группы дискретных регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartCoil - начальный дискретный регистр
  • ACount - количество дискретных регистров
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета

Формирование пакета функции чтение состояния группы дискретных входов

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartInput - начальный дискретный вход
  • ACount - количество дискретных входов
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета

Формирование пакета функции чтение значения регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - начальный регистр
  • ACount - количество регистров
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета

Формирование пакета функции чтение значения входящих регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - начальный входящий регистр
  • ACount - количество входящих регистров
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета

Формирование пакета пользовательской функции

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AFunc - код функции
  • AData - указатель на буфер данных
  • ADataLen - количество байт данных в буфере
  • APPack - указатель на буфер в который будет записан пакет функции
  • Result - длина пакета

Формирование пакета функции записи состояния дискретного регистра

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • ACoilNum - адрес дискретного регистра
  • AData - новый статус
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета

Формирование пакета функции записи состояния группы дискретных регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartCoil - начальный дискретный регистр
  • ACount - количество дискретных регистров
  • AData - новые статусы регистров
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета

Формирование пакета функции записи значения в регистр

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - адрес регистра
  • AData - новое значение регистра
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета

Формирование пакета функции записи данных в группу регистров

  • AMBType - тип протокола (mbtRTU, mbtTCP, mbtASCII)
  • AAddres - адрес устройства
  • AStartReg - начальный регистр
  • ACount - количество регистров
  • AData - новые значения регистров
  • APPack - указатель на буфер в который будет записан пакет функции
  • ARecvLen - исходящая переменная, в которую записывается длинна ответа
  • Result - длина пакета
События

Примеры:

 
Поделиться:
0
Валентин Викторович
29.12.2017 06:17
 
Так работать не хочет, ошибки не выводятся в listbox. Сделал немного по другому. Обрабатываю непосредственно ошибки тэгов.

Показать полностью
0
Валентин Викторович
28.12.2017 07:57
 
Добрый день, подскажите пожалуйста, Каким образом вытащить сообщения об ошибке и передать их в listbox. Спасибо
Показать полностью
5
Руслан Кандирал
28.12.2017 09:18
Валентин Викторович
 
Для начала вам нужно получить код ошибки, он приходит в callback функции. Пример:
Код ошибки передаем в заранее созданную переменную. Из callback функции обращаться к визуальным компонентам нельзя, так как она вызывается не из основного потока.

Затем с помощью таймера можно сделать так:
Показать полностью

Новости сайта

06.02.2018 15:53
Добавлена программа SimpleADB
Программа SimpleADB разработана в среде Delphi XE для отладки Android устройств через утилиту adb
07.10.2017 23:57
Оптимизация библиотек Modbus для контроллеров Arduino
Сделал оптимизированный вариант библиотек Modbus под Arduino, с целью снизить размер занимаемой памяти для скетча
28.03.2017 23:51
Modbus Slave RTU/ASCII для микроконтроллеров Arduino
Реализация клиентской части протокола Modbus RTU и Modbus ASCII для контроллеров Arduino и пример использования с видео обзором

Популярные статьи

Пример передачи данных по протоколу Modbus на Delphi
Пример передачи данных с контроллера ОВЕН ПЛК100 в программу на Delphi по протоколу Modbus
Modbus Slave на Arduino
Реализация клиентской части протокола Modbus RTU и Modbus ASCII для контроллеров Arduino
Набор компонентов для Delphi
Набор компонентов для Delphi включает в себя компонент для работы с файловой системой, сетью, автоматизацией и другие.