Polag
Junior Member / Новичок
Участник № / Member № 4573
отправлено / posted
Добрый день. Пытаемся добится связи между Trace Mode 6.06 и преобразователем ДВ2ТСМ-А фирмы Микрофор. Проблема в том что преобразователь не поддерживает стандартные функции чтения-записи Modbus. В техподдержке Микрофор нам сказали что необходимо использовать 25 либо 19 функцию чтения-записи Modbus'a, которых нет в Trace Mode. Подскажите пожайлуста возможные пути решения данной проблемы.
Сообщения / Posts 12 | Из / From: Russian federation
| IP / IP: IP адрес / IP address |
отправлено / posted
Согласно стандарту Modbus, функции с 1 по 64 относятся к категории публичных функций. Часть из них определена в стандарте, остальные зарезервированы и не должны применяться пользователями стандарта для реализации своих функций. Штатной поддержки этих функций в Trace Mode 6 нет.
Используя функцию 25 в качестве пользовательской, производители этого преобразователя нарушили стандарт. Пользовательские функции в стандарте Modbus могут быть с кодами от 65 до 72 и от 100 до 110.
В Trace Mode 6 существует возможность формирования пользовательских функций Modbus с помощью каналов CALL.ChGroupReq, привязанных к переменной R_FIFO_Queue (см.документацию).
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Polag
Junior Member / Новичок
Участник № / Member № 4573
отправлено / posted
Добрый день. Воспользовался вашим советом. Создал канал CALL.ChGroupReq, выставил параметр 1, в аргументе канала ARG0 выставил значения по умолчанию 19(номер функции ModBus, котроый мне нобходимо использвать). Привязал CALL.ChGroupReq к MODBUS.R_FIFO_Queue. В MODBUS.R_FIFO_Queue выставил следующие значения: Номер порта - 0x0(com1) Адрес - 0x1 Канал - 0x200 Направление - input формат - дискрет Произвожу мониторинг порта, никаких посылок в порт не идет. Подскажите пожайлуста может я что-нибудь не правильно делаю?
Сообщения / Posts 12 | Из / From: Russian federation
| IP / IP: IP адрес / IP address |
отправлено / posted
Вы в узле COM1 с соответствующими настройками создали?
Перепроверил именно в Ваших настройках, обращения в порт осуществляются в соответствии с документацией (хотя непонятно, в какие аргументы Вы будете принимать ответ).
Polag
Junior Member / Новичок
Участник № / Member № 4573
отправлено / posted
Спасибо за ответ. Создал COM порт, посылки пошли. Нам необходима комаанда на чтение одного регистра т.е. 01 19 20 00 D1 7F где 01 адрес порта 19 номер команды 20 00 адрес регитра D1 и 7F crc Настраивая канал MODBUS.R_FIFO_Queueмы получаем посылку слдующего содержания 01 19 20 00 00 00 D1 7F две дополнительных пары нулей в посылке это кол-во считываемых регистров. Подскажите можно ли настройками из посылки убрать эти пары нулей?
Сообщения / Posts 12 | Из / From: Russian federation
| IP / IP: IP адрес / IP address |
отправлено / posted
Видимо, первый байт команды это не адрес порта, а сетевой адрес Modbus-Slave. 1. Задайте каналу CALL.ChGroupReq ПАРАМЕТР=130. 2. Задайте в CALL.ChGroupReq 4 INPUT-аргумента типа USINT с начальными значениями 0x01, 0x19, 0x20, 0x00. 3. Далее создайте необходимое для приема ответа количество аргументов типа OUT нужного формата.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |