QJ71MB91 (Write Single Coil (FC: 05)), Реализовываем Write Single Coil (Function: 05) собственными силами |
Здравствуйте, гость ( Вход | Регистрация )
QJ71MB91 (Write Single Coil (FC: 05)), Реализовываем Write Single Coil (Function: 05) собственными силами |
7.04.2017 - 12:57
Сообщение
#1
|
|
Читатель Группа: Пользователи Сообщений: 1 Регистрация: 7.04.2017 Пользователь №: 10849 |
Салют коллеги.
Сегодня хочу поведать Вам с какими трудностями мы столкнулись при настройке записи Modbus Function:05 (Write Single Coil) и описать путь решения данной задачи. Начнем с задачи: в наличии контроллер Q06UDEH, к нему прикручен модуль QJ71MB91. Нужно прочитать пул регистров (Function: 04), пул битов(Function:02), и записать 3 катушки(Function:05) со Slave-контроллера. Первым делом я решил сходить на сайт Mitsubishi и поискать подходящую библиотеку для настройки передачи данных по Modbus от нашего Masterа(QJ71MB91) к Slave (стороннему контроллеру). Из четырех имеющихся библиотек подходящей оказалась только одна QJMB91ModbusSerial_V120, так как оказалась более универсальной, по сравнению с остальными, которые сделаны для конкретного оборудования. Взял ее, внедрил в GX Works 2 и начал курить мануал. В результате чтения выяснилось, что данная библиотека поддерживает только следующие функции: 01h, 02h, 03h, 04h, 0Fh, 10h, 17h. Естественно функции 05 среди них нет. Остальные библиотеки, имеющиеся на сайте Mitsubishi так же не поддерживают F05. Было решено Read функции 02 и 04 реализовывать через QJMB91ModbusSerial_V120 lib, что в общем то легко получилось. А Write функцию 05 настраивать собственными силами. Реализация Write Single Coil (FC:05) началась как обычно с курения манула: QJ71MB91 MODBUSInterfaceModule GX Configurator-MB (SW1D5C-QMBU-E) Art. no. 168869 01042009 SH(NA)-080578ENG Version G В результате чтения выяснилось, что 01h, 02h, 03h, 04h, 0Fh, 10h, 17h (которые поддерживает библиотека QJMB91ModbusSerial_V120) используют для передачи целого массива данных функцию Z.MBRW. Но F:05 передает только отдельно каждому регистру данные и использует совсем другую функцию Z.MBREQ, видимо поэтому писатели из Mitsubishi не стали реализовывать F:05 в своей библиотеке и просто забили (БРАВО профессионалам!! :-D) Пакет данных, передаваемый F:05, выглядит следующим образом: 1.JPG ( 65.52 килобайт ) Кол-во скачиваний: 14 Далее в мануале удалось найти пример применения Function:05 написанный на LD на стр. 10.23 (256): 2.JPG ( 92.98 килобайт ) Кол-во скачиваний: 13 3.JPG ( 81.18 килобайт ) Кол-во скачиваний: 14 Начал разбираться, что куда надо писать и параллельно писать свою программу. Нужно отправить: F:05, Slave №5, адрес регистра 0002h, значение FF00h. Подвох заключался в написании сообщения слэйву, там мудовое построение сообщения. Эх и налюбились мы с этим. Ну как бы логично, нужно присвоить D1101 = 5h (Номер функции=05), D1102 = 0002h (адрес регистра), и D1103 = FF00 (Значение ON), как на картинке чуть выше. А вот и нет. Это было просто не Mitsubishi, если бы они не начали играться со старшими и младшими байтами в слове. В итоге путем брутфорса (как обычно), получить вывести рабочую формулу: 4.JPG ( 136.28 килобайт ) Кол-во скачиваний: 11 Объясню, как писать сообщение слэйву: Слэйв должен получить сообщение (hex): 05 0002 FF00 (контрольную сумму в конце я упускаю, формируется автоматом) 5.jpg ( 77.29 килобайт ) Кол-во скачиваний: 6 Итого получилось D1101 = 0005h, D1102=FF02h, а D1103=0000h. Все теперь работает и команда работает. Можно питать свой функциональный блок и использовать для записи F:05. Надеюсь кому то поможет, удачи! |
|
|
8.04.2017 - 14:31
Сообщение
#2
|
|
Гуру Группа: Пользователи Сообщений: 1003 Регистрация: 19.08.2009 Пользователь №: 9149 |
Сами создаём себе трудности, сами же их героически преодолеваем... Насколько помню, SlySnake, этот модуль не нуждается в библиотеках, а все настройки обмена с ведомыми, включая Автообновление, с легкостью выставляются через соответствующую утилиту, предназначенную для конфигурирования модуля.
-------------------- Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
|
|
|
Текстовая версия | Сейчас: 10.11.2024 - 21:56 |