Форум TRACE MODE: техническая поддержка   
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » Драйверы / Device Drivers » DOS-драйвер УСО для микроМРВ

   
Автор / Author Тема / Topic: DOS-драйвер УСО для микроМРВ
bogdem
Junior Member / Новичок
Участник № / Member № 1076


Icon 1 отправлено / posted      Профиль для / Profile for bogdem           Редактировать/удалить сообщение / Edit/Delete Post 
Необходимо написать DOS-драйвер для связи УСО (протокол ModBusRTU) в микроМРВ по прерыванию.
Как я понимаю, через настройки соответствующего канала напр. типа І (BASE, CH, GAIN/REG) можна передать любые необходимые аттрибуты данного канала. Например: BASE=AL - адрес УСО, BASE=AН тип функции ModBusRTU и количество регистров, CH=BL - мл.байт адреса первого регистра и т.д.
Вопрос: как организовать блочный обмен драйвера с микроМРВ через 17Н прерывание?

Сообщения / Posts 26 | Из / From: Ukraine  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
1) Почему возникла необходимость в написании драйвера ModBus RTU, чем не устраивает встроенная поддержка этого протокола в Микро МРВ?
2) Реализация алгоритма блоковых запросов должна быть создана полностью Вами в самом драйвере, штатной поддержки со стороны МикроМРВ этого механизма нет. То есть - драйвер должен сам понимать блоковые обращения, реализовывать запрос-ответ от устройства с кэшированием данных и последовательной выдачей значений базе каналов из кэша.

Сообщения / Posts 17105 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
bogdem
Junior Member / Новичок
Участник № / Member № 1076


Icon 1 отправлено / posted      Профиль для / Profile for bogdem           Редактировать/удалить сообщение / Edit/Delete Post 
1. вопрос связан с "реактивностью" системы и обеспечением в ТМ "псевдопаралелизма" опроса 4-х последовательных портов (см. также: http://forum.adastra.ru/ubb/ultimatebb.php/ubb/get_topic/f/26/t/000132.html)
2. согласен, что со стороны "драйвер - УСО" реализация алгоритма блоковых запросов должна быть создана полностью Вами в самом драйвере...
3. Меня интересует организация блочного обмена со стороны "драйвер-ТM" через INT17H. Хотелось бы выбирать из сформированного драйвером массива BUFFER значения в ТМ блочным методом.

Сообщения / Posts 26 | Из / From: Ukraine  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
3) В том то и дело, что сразу BUFFER данных Вы в ТМ не передадите - это должен драйвер уметь из данного буфера по одному значению "доставать" и отдавать ТМ на запросы. Поэтому я и сказал, что "Реализация алгоритма блоковых запросов должна быть создана полностью Вами в самом драйвере"...
Сообщения / Posts 17105 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
bogdem
Junior Member / Новичок
Участник № / Member № 1076


Icon 1 отправлено / posted      Профиль для / Profile for bogdem           Редактировать/удалить сообщение / Edit/Delete Post 
3. я понял, что передача массива значений BUFFER в ТМ возможна только "пословно" и конечно это должно быть организовано в самом драйвере.
Попробуем вести обсуждение данной темы с другой стороны:
1. Например в примере http://forum.adastra.ru/ubb/ultimatebb.php/ubb/get_topic/f/14/t/000028.html описан прототип кода для драйвера через точку входа. Функция RWH третим параметром содержит указатель на целые числа. Вопрос: это указатель на одно значение(одно число), или на масив чисел?
2. Предположим, что необходимо написать DOS-драйвер микро МРВ для АЦП. Как в этом случае предполагается передача массива значений выборок АЦП в ТМ?

Сообщения / Posts 26 | Из / From: Ukraine  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
1. Это указатель на одно число.
2. Если предполагается, что драйвер каким-то способом умеет запрашивать у АЦП массив значений одной транзакцией, то он хранит полученный массив в своем буфере. Тогда при каждом обращении канала RWH к драйверу последний по удаленному адресу IA этого канала выбирает из буфера значение именно для него.
Если драйвер имеет возможность обращаться к памяти интеллектуального АЦП, который сам опрашивает свои каналы в собственном цикле, то драйвер должен уметь преобразовывать удаленный адрес IA вызвавшего его канала в адрес памяти АЦП и выбирать оттуда нужное значение.
В любом случае следует помнить, что вызов RWH-драйвера осуществляется в on-line-режиме: пока драйвер не ответит на текущий вызов, пересчет базы каналов будет приостановлен.

Сообщения / Posts 17105 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2