Тема: CANNY 7 в качестве клиента Modbus RTU
С выходом CannyLab версии 0.11 beta и системного программного обеспечения CANNY 7 версии 1.23, стало возможным использовать CANNY 7 для подключения к промышленным сетям передачи данных Modbus RTU через последовательные линии данных стандарта RS-232 или UART TTL.Контроль приема Modbus RTU ведется драйвером последовательного порта автоматически. При приеме корректного пакета Modbus RTU, в регистре "Регистр признака RTU буфера приема драйвера UART#" соответствующего последовательного порта, будет установлено значение "1", в регистре "Регистр длины принятого сообщения UART#" будет установлена длина принятого пакета в байтах, включая два байта CRC.Данные принятого пакета помещаются в регистры принятого сообщения соответствующего последовательного порта.Для передаче пакета Modbus RTU, необходимо установить ненулевое значение в регистр "Регистр признака RTU буфера передачи драйвера UART#" соответствующего последовательного порта.Данные передаваемого пакета должны быть помещены в регистры сообщения передачи соответствующего последовательного порта. При этом в регистр "Регистр длины сообщения передачи UART#" требуется записать число на 2 больше размера данных.При отправке пакета Modbus RTU, контрольная сумма будет рассчитана автоматически и записана в последние 2 байта сообщения.На приведенной диаграмме, реализован алгоритм передачи CANNY 7 как ведомого устройства (Slave), состояния сконфигурированных на вход каналов 0 - 7 контроллера, по запросу головного устройства (Master).
Протокол обмена данных в такой сети будет выглядеть так:
Запрос: 20 03 00 01 00 01 D3 7B
Адрес опрашиваемого устройства: 0x20
Функция: 0x03 (чтение значений из нескольких регистров хранения)
Номер первого запрашиваемого регистра: 0x0001
Число запрашиваемых регистров: 0x0001
Контрольная сумма: 0xD37B
Ответ: 20 03 02 XX XX YY YY
Адрес отвечающего устройства: 0x20
Функция: 0x03 (результат чтения значений из нескольких регистров хранения)
Число возвращаемых байт: 0x02
Значение запрашиваемого регистра: 0xXXXX
Контрольная сумма: 0xYYYY
Исходный файл функциональной диаграммы: http://forum.canny.ru/files/rtu.cfd
Подключение RS-232: