This is topic MODBUS in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/43/t/000077.html

Posted by Polag (Участник № / Member № 4573) on :
 
Добрый день.
Пытаемся добится связи между Trace Mode 6.06 и преобразователем ДВ2ТСМ-А фирмы Микрофор. Проблема в том что преобразователь не поддерживает стандартные функции чтения-записи Modbus. В техподдержке Микрофор нам сказали что необходимо использовать 25 либо 19 функцию чтения-записи Modbus'a, которых нет в Trace Mode.
Подскажите пожайлуста возможные пути решения данной проблемы.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Согласно стандарту Modbus, функции с 1 по 64 относятся к категории публичных функций. Часть из них определена в стандарте, остальные зарезервированы и не должны применяться пользователями стандарта для реализации своих функций.
Штатной поддержки этих функций в Trace Mode 6 нет.

Используя функцию 25 в качестве пользовательской, производители этого преобразователя нарушили стандарт.
Пользовательские функции в стандарте Modbus могут быть с кодами от 65 до 72 и от 100 до 110.

В Trace Mode 6 существует возможность формирования пользовательских функций Modbus с помощью каналов CALL.ChGroupReq, привязанных к переменной R_FIFO_Queue (см.документацию).
 
Posted by Polag (Участник № / Member № 4573) on :
 
Добрый день.
Воспользовался вашим советом. Создал канал CALL.ChGroupReq, выставил параметр 1, в аргументе канала ARG0 выставил значения по умолчанию 19(номер функции ModBus, котроый мне нобходимо использвать).
Привязал CALL.ChGroupReq к MODBUS.R_FIFO_Queue.
В MODBUS.R_FIFO_Queue выставил следующие значения:
Номер порта - 0x0(com1)
Адрес - 0x1
Канал - 0x200
Направление - input
формат - дискрет
Произвожу мониторинг порта, никаких посылок в порт не идет.
Подскажите пожайлуста может я что-нибудь не правильно делаю?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вы в узле COM1 с соответствующими настройками создали?

Перепроверил именно в Ваших настройках, обращения в порт осуществляются в соответствии с документацией (хотя непонятно, в какие аргументы Вы будете принимать ответ).

Пришлите, пожалуйста, проект - файл *.prj.
 
Posted by Polag (Участник № / Member № 4573) on :
 
Спасибо за ответ. Создал 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
две дополнительных пары нулей в посылке это кол-во считываемых регистров.
Подскажите можно ли настройками из посылки убрать эти пары нулей?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Видимо, первый байт команды это не адрес порта, а сетевой адрес Modbus-Slave.
1. Задайте каналу CALL.ChGroupReq ПАРАМЕТР=130.
2. Задайте в CALL.ChGroupReq 4 INPUT-аргумента типа USINT с начальными значениями 0x01, 0x19, 0x20, 0x00.
3. Далее создайте необходимое для приема ответа количество аргументов типа OUT нужного формата.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2