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

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

   
Автор / Author Тема / Topic: Драйвер обмена по последовательному порту
Titanic
Junior Member / Новичок
Участник № / Member № 1191


Icon 1 отправлено / posted      Профиль для / Profile for Titanic           Редактировать/удалить сообщение / Edit/Delete Post 
Добрый день.
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 Возможно ли управление вносимой в отчет тревог меткой времени?
Заранее благодарен.

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


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
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) Нет.

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


Icon 1 отправлено / posted      Профиль для / Profile for Titanic           Редактировать/удалить сообщение / Edit/Delete Post 
Спасибо за ответ!
Появился новый вопрос по блоковым запросам. В разработанном мной драйвере данные нормально считываются со 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
Буду очень признателен, если подскажите место, где я мог допустить ошибку.

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


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

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


Icon 1 отправлено / posted      Профиль для / Profile for Titanic           Редактировать/удалить сообщение / Edit/Delete Post 
Тело функции 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 необходимо сохранять с определенными метками времени.

Сообщения / Posts 6 | Из / 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