This is topic Драйвер обмена по последовательному порту in forum TRACE MODE 5 бесплатная версия / TRACE MODE 5 Free version at Форум TRACE MODE: техническая поддержка.


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

Posted by Titanic (Участник № / Member № 1191) on :
 
Добрый день.
1 Попробовал разработать свой драйвер, используя подтип КОНТР1. В SCADA Trace Mode это оказалось достаточно просто. Однако, в TMHelp нигде не нашел описание переменных следующих структур:
1.1 Удаленный адрес канала – IA, массив unsigned short int i[3];
1.2 Назначение переменных структур FOUR_BYTE, TWO_BYTE;
1.3 назначение следующих переменных структуры RSDATA:
1.3.1 p.V.c[0], p.V.c[1], p.V.c[2], p.V.c[3];
1.3.2 p.V.i[1];
1.3.3 p.F.fmt[2];
1.3.4 p.F.ind[1];
Если это не резервные переменные, то прошу сообщить их назначение.
2 Существуют ли способы формирования атрибута «Время» канала на уровне редактора базы каналов. И, если да, то какие?
3 Возможно ли управление вносимой в отчет тревог меткой времени?
Заранее благодарен.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1) Массив unsigned short int i[3] - то же самое что и unsigned char c[6], только двухбайтные значения. Это же union. i[3] используется для более удобной передачи двухбайтовых переменных из настроек канала, но можно и "склеить" из 2х однобайтовых с[6], получится то же самое.
Структуры FOUR_BYTE, TWO_BYTE, а также назначение переменных структуры RSDATA:
p.V.c[0], p.V.c[1], p.V.c[2], p.V.c[3];
p.V.i[1];
p.F.fmt[2];
p.F.ind[1];
Являются внутренними переменными системы ТМ, трогать их не надо (также как и знать их назначение). [Улыбка / Smile]

2) Не совсем понятен вопрос про атрибут "время" - что Вы имели в виду? Зачем формировать его в РБК, ведь это атрибут реального времени и формируется он сервером МРВ, Вы можете его только считывать.

3) Нет.
 
Posted by Titanic (Участник № / Member № 1191) on :
 
Спасибо за ответ!
Появился новый вопрос по блоковым запросам. В разработанном мной драйвере данные нормально считываются со Slave – устройства по сети Modbus (функция 03) и записываются в каналы. При старте сервер матобработки правильно устанавливает каналам признаки принадлежности к запросу. Пример профайлера:
RS:Loaded protocol ModbusX
RSIN RS=0 ADDR=1 by CH=1 Q=3
RSIN RS=0 ADDR=1 by CH=2 Q=2
RSIN RS=0 ADDR=1 by CH=3 Q=1
RSIN RS=0 ADDR=1 by CH=4 Q=0
Проблема в следующем – при создании N каналов принадлежащих одному блоковому запросу сервер матобработки посылает в сеть несколько запросов вместо одного:
Адрес канала = 1 Количество запрашиваемых каналов = N (первый правильный запрос)
Адрес канала = N/2 Количество запрашиваемых каналов = N/2
Адрес канала = N/2+N/4 Количество запрашиваемых каналов = N/4
Адрес канала = N/2+N/4+N/8 Количество запрашиваемых каналов = N/8

Адрес канала = N Количество запрашиваемых каналов = 1
Буду очень признателен, если подскажите место, где я мог допустить ошибку.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1) Относительно ошибки - без исходников трудно сказать. Вероятно что-то неправильно с блоковыми запросами - в zCompare() может быть ошибка.
2) А зачем Вы драйвер ModBus пишите свой, чем не устраивает штатная реализация?
 
Posted by Titanic (Участник № / Member № 1191) on :
 
Тело функции zCompare_xxx очень простое:
ecли count меньше 121 и ia0.c 2 + count == ia1.c 2 вернуть 1;
иначе вернуть 0;
Почему тогда сервер матобработки при старте правильно устанавливает каналам признаки принадлежности к запросу (видно из профайлера)?
Штатная реализация драйвера ModBus меня не устраивает по следующим причинам:
1. Функцией ModBus 16 - отсутствует возможность выполнения блокового запроса.
2. Функции ModBus 03,04 - ограничен размер блокового запроса 65-ю регистрами.
3. Не реализована широковещательная посылка данных.
4. Значения параметров, считанных с интеллектуальных Slave-устройств по сети ModBus необходимо сохранять с определенными метками времени.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2