This is topic DOS-драйвер УСО для микроМРВ in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


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

Posted by bogdem (Участник № / Member № 1076) on :
 
Необходимо написать DOS-драйвер для связи УСО (протокол ModBusRTU) в микроМРВ по прерыванию.
Как я понимаю, через настройки соответствующего канала напр. типа І (BASE, CH, GAIN/REG) можна передать любые необходимые аттрибуты данного канала. Например: BASE=AL - адрес УСО, BASE=AН тип функции ModBusRTU и количество регистров, CH=BL - мл.байт адреса первого регистра и т.д.
Вопрос: как организовать блочный обмен драйвера с микроМРВ через 17Н прерывание?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1) Почему возникла необходимость в написании драйвера ModBus RTU, чем не устраивает встроенная поддержка этого протокола в Микро МРВ?
2) Реализация алгоритма блоковых запросов должна быть создана полностью Вами в самом драйвере, штатной поддержки со стороны МикроМРВ этого механизма нет. То есть - драйвер должен сам понимать блоковые обращения, реализовывать запрос-ответ от устройства с кэшированием данных и последовательной выдачей значений базе каналов из кэша.
 
Posted by bogdem (Участник № / Member № 1076) on :
 
1. вопрос связан с "реактивностью" системы и обеспечением в ТМ "псевдопаралелизма" опроса 4-х последовательных портов (см. также: http://forum.adastra.ru/ubb/ultimatebb.php/ubb/get_topic/f/26/t/000132.html)
2. согласен, что со стороны "драйвер - УСО" реализация алгоритма блоковых запросов должна быть создана полностью Вами в самом драйвере...
3. Меня интересует организация блочного обмена со стороны "драйвер-ТM" через INT17H. Хотелось бы выбирать из сформированного драйвером массива BUFFER значения в ТМ блочным методом.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
3) В том то и дело, что сразу BUFFER данных Вы в ТМ не передадите - это должен драйвер уметь из данного буфера по одному значению "доставать" и отдавать ТМ на запросы. Поэтому я и сказал, что "Реализация алгоритма блоковых запросов должна быть создана полностью Вами в самом драйвере"...
 
Posted by bogdem (Участник № / Member № 1076) on :
 
3. я понял, что передача массива значений BUFFER в ТМ возможна только "пословно" и конечно это должно быть организовано в самом драйвере.
Попробуем вести обсуждение данной темы с другой стороны:
1. Например в примере http://forum.adastra.ru/ubb/ultimatebb.php/ubb/get_topic/f/14/t/000028.html описан прототип кода для драйвера через точку входа. Функция RWH третим параметром содержит указатель на целые числа. Вопрос: это указатель на одно значение(одно число), или на масив чисел?
2. Предположим, что необходимо написать DOS-драйвер микро МРВ для АЦП. Как в этом случае предполагается передача массива значений выборок АЦП в ТМ?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Это указатель на одно число.
2. Если предполагается, что драйвер каким-то способом умеет запрашивать у АЦП массив значений одной транзакцией, то он хранит полученный массив в своем буфере. Тогда при каждом обращении канала RWH к драйверу последний по удаленному адресу IA этого канала выбирает из буфера значение именно для него.
Если драйвер имеет возможность обращаться к памяти интеллектуального АЦП, который сам опрашивает свои каналы в собственном цикле, то драйвер должен уметь преобразовывать удаленный адрес IA вызвавшего его канала в адрес памяти АЦП и выбирать оттуда нужное значение.
В любом случае следует помнить, что вызов RWH-драйвера осуществляется в on-line-режиме: пока драйвер не ответит на текущий вызов, пересчет базы каналов будет приостановлен.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2