Форум 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 » Драйвер t11

   
Автор / Author Тема / Topic: Драйвер t11
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Пишу сюда потому что в открытом формуме по 5 версии нет возможности задать вопрос, а в закрытом не хватает прав написать, хотя регистрировался с указанием номера регистрационного от 5 версии.

И так вопрос. Пытаюсь подключить драйвер t11. В пробном проекте создал канал типа DCS, чтоб смотреть работает ли вообще COM порт, а также канал типа КОНТР_1, указал подтип своего драйвера. Запускаю профайлер и вижу, что найдено 4 канала (2 дополнительных создал чтоб смотреть диагностическую информацию по основным каналам), а в поле RS, написано, что найдено 1 канал. Похоже мой драйвер он не загрузил. Добавил в функцию Prepare_xxx создание файла, чтобы вести свой лог, только файл не создался. Это говорит о том что драйвер и правда не загрузился. Подскажите в чем может быть проблема?

Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Вы должны были откорректировать файл ...\INI\Type11.ini так, чтобы там был прописан Ваш драйвер, на который ссылается канал подтипа КОНТР_1. А затем поместить файл Вашего драйвера в папку инструментальной системы под соответствующим именем t11sN.dll, где N соответствует строке Вашего драйвера в файле ...\INI\Type11.ini.

Вам предоставлены права записи в разделах "Trace Mode 5", в связи с чем я переношу этот топик в раздел "Trace Mode 5. Драйверы".

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Это я сделал. Единственно, я удалал из файла type11.ini все строки до тех которые начинаются со знака "@", соответственно назвал свой драйвер t11s0.dll. Может не стоило этого делать?
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Если драйвер существует, но МРВ к нему не обращается, значит, существуют проблемы с инициализацией того COM-порта, который указан в настройках канала подтипа КОНТР_1 и свойствах соответствующего COM-порта, который Вы должны были задать в бланке "Параметры последовательных портов".
Запустите, пожалуйста, профайлер с ключом /DEBUG=200. При этом в протоколе профайлера должны быть выведены все ошибки по работе с COM-портами.

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Вы оказались правы. Выпало, что необходимо передать каналу адрес порта. При замене первого параметра в настройке канала на 0, все заработало. Большое спасибо.
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Здравствуйте, подскажите еще один момент относительно драйвера. Написал. Опрашивается 3 канала единичными запросами, никаких блоковых. Происходит вот что. Канал считывается, отображается его содержимое, а через некоторое время (пока считываются другие каналы) его значение сбрасывается в 0, потом он опять считывается, отображается его содержимое и все повторяется снова. Так происходит для всех каналов.
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Что означает "(пока считываются другие каналы)"?Все каналы должны считываться в течение одного цикла МРВ.
Если выключить 2 канала, оставшийся 1 канал будет работать нормально?

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Если оставить один, то все работает нормально.
Цикл идет 1-2-3-1, 1 считался, 2 считался, 3 считался (в это время 1 стал 0) и так далее. Все время один из каналов имеет значение 0.

Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Точнее 1 и 3 попеременно имеют значение 0, а 2 все время имеет реальное значение. 1 считался, 3 стал 0, 3 считался 1 стал 0.
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Как Вы задаете циклы опроса? Как наблюдаете?
Непонятна терминология "1 считался, 2 считался, 3 считался". Они все должны считываться в пределах одного цикла.
Как Вы разделяете транзакции?
Если отдельно каждый канал считывается правильно, а при наличии транзакций по всем каналам есть ошибки, значит драйвер отвечает неверно.
Разбирать Ваш драйвер и анализировать его на корректность у нас нет возможности.

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Я запускаю только сервер мат. обработки (drawserv.exe) из командной строки и смотрю что происходит с каналами. Происходит опрос первоого канала, я вижу, что значение поменялось, и так далее. При помощи монитора com порта я смотрю что опрашивается в данное время (я задал большой таймаут в функции Get_xxx, чтоб не мельтишило). Вот и получается, что во время опроса третьего канала значение первого сбрасывается на 0, и наоборот.
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Еще уточнение, контроллер работает на протоколе сходном с протоколом ADAM, таким чтобы узнать значение канала я посылаю запрос на этот канал и получаю его значение, а потом только ответ разобрать надо.
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Подскажите, а что означают значения, которые отображаются в окне сервера матобработки? Сначала у меня сначала 4 столбец принимает значение канала, потом 1 и 2, при сбросе на 0 происходит тоже самое, сначала 3 становится 0, а потом 1 и 2.
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Подскажите, что означает ERR IN10 в файле avmu.tnt? Так помечены все записи, которые содержат ответ контроллера.
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
1. Для отладки драйвера Вам придется в его код вставлять возможные контрольные точки и вести собственный лог, чтобы отследить все обращения к драйверу со всеми передаваемыми параметрами. По этой информации в соответствии со спецификацией функций вызова Вы должны будете определить качество интерфейса драйвера с МРВ, найти и устранить ошибки.

2. Столбцы таблицы каналов при запуске drawserv.exe из командной строки показывают атрибуты:
1 - Аппаратное значение,
2 - Реальное значение,
3 - Входное значение,
4 - Достоверность,
5 - Состояние,
6 - Подключение.

3. ERR IN10 в протоколе профайлера означает , что в ответ на запрос пришло 10 байтов.

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Добавил в функции дополнительные команды записи информации в файл (fopen, fwrite, fclose).
И вот что получил на выходе:

Start circle
Set_xxx
sbuf = яяяя#1F1(0x0D)яяяя, q_rec = 0
End Set_xxx

Check_xxx
count_rec = 10, rbuf = >+023.00(0x0D)а
max_rec = 0, max_send = 0, rbuf = >+023.00(0x0D)а
End Check_xxx

Start circle
Set_xxx
sbuf = яяяя#1F2(0x0D)яяяя, q_rec = 0
End Set_xxx

Check_xxx
count_rec = 10, rbuf = >+025.00(0x0D)_
max_rec = 0, max_send = 0, rbuf = >+025.00(0x0D)_
End Check_xxx

Start circle
Set_xxx
sbuf = яяяя#1F0(0x0D)яяяя, q_rec = 0
End Set_xxx

Check_xxx
count_rec = 10, rbuf = >+030.00(0x0D)Я
max_rec = 0, max_send = 0, rbuf = >+030.00(0x0D)Я
End Check_xxx

Start circle
Set_xxx
sbuf = яяяя#1F1(0x0D)яяяя, q_rec = 0
End Set_xxx

Check_xxx
count_rec = 10, rbuf = >+023.00(0x0D)р
max_rec = 0, max_send = 0, rbuf = >+023.00(0x0D)р
End Check_xxx

Get_xxx
count_rec = 10, q_rec = 0, type_cnv = 1, rbuf = >+023.00(0x0D)а
count_rec = 10, q_rec = 0, type_cnv = 1, rbuf = >+023.00(0x0D)а, buf = +023.00
count_rec = 10, q_rec = 0, type_cnv = 1, rbuf = >+023.00(0x0D)а, buf = +023.00, float = 23.000000
End Get_xxx

Get_xxx
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+025.00(0x0D)_
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+025.00(0x0D)_, buf = +025.00
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+025.00(0x0D)_, buf = +025.00, float = 25.000000
End Get_xxx

Get_xxx
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+030.00(0x0D)Я
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+030.00(0x0D)Я, buf = +030.00
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+030.00(0x0D)Я, buf = +030.00, float = 30.000000
End Get_xxx

Get_xxx
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+023.00(0x0D)р
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+023.00(0x0D)р, buf = +023.00
count_rec = 10, q_rec = 0, type_cnv = 0, rbuf = >+023.00(0x0D)р, buf = +023.00, float = 23.000000
End Get_xxx

В коде вставил (0x0D) там где стоит данный символ, иначе имеет вид просто как переход на новую строку.

В тоже время в отладочном файле идет текст:
RS:request temp2_
OUT: ff ff ff ff 23<#> 31<1> 46<F> 31<1> 0d ff ff ff ff 00
ERR IN10: 3e<>> 2b<+> 30<0> 32<2> 33<3> 2e<.> 30<0> 30<0> 0d e0
RS:request temp3_
OUT: ff ff ff ff 23<#> 31<1> 46<F> 32<2> 0d ff ff ff ff 00
ERR IN10: 3e<>> 2b<+> 30<0> 32<2> 35<5> 2e<.> 30<0> 30<0> 0d 90
RS:request temp1_
OUT: ff ff ff ff 23<#> 31<1> 46<F> 30<0> 0d ff ff ff ff 00
ERR IN10: 3e<>> 2b<+> 30<0> 33<3> 30<0> 2e<.> 30<0> 30<0> 0d df
MATH:in-out port now not supported
MATH:in-out port now not supported
INFO:stoping...
RS:request temp2_
OUT: ff ff ff ff 23<#> 31<1> 46<F> 31<1> 0d ff ff ff ff 00
ERR IN10: 3e<>> 2b<+> 30<0> 32<2> 33<3> 2e<.> 30<0> 30<0> 0d f0
RS:COM2 TRANSACTION=4 ERROR=0 TIME=25.608
TOTAL_BYTE=96 AVR_RESPONSE=1.2615 MAX_RESPONSE=1.266

Согласно моего лога получается что функции посылки, проверки и разбора запроса вызываются не циклически, а по логу trace mode наоборот, как правильно?

Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
МРВ принципиально работает в полудуплексном режиме: пока не завершена транзакция по одному запросу, МРВ не реализует другой запрос.
При правильно м интерфейсе с драйвером МРВ организует последовательность функций вызова драйвера строго циклически.
Если после функции Check_xxx нет перехода к функции Get_xxx, значит, следует искать причину в ответах драйвера.

Еще раз вынужден повторить, что у нас нет возможности анализировать код Вашего драйвера и разбирать проблемы, возникающие в его работе.
Анализируйте, пожалуйста, драйвер самостоятельно.

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Скажите, а можно получить описание значений переменных структур IA и RSDATA?
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
И еще подскажите, функция Get_xxx возвращает значение времени в милисекундах до следующего запроса на порт, а как с этим временем согласуется таймаут, который задается для этого порта настройками самого порта в редакторе базы каналов?
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
1. Описание структуры RSDATA и удаленного адреса IA приведено в разделе "Разработка драйверов.../Драйверы для связи с контроллерами/Драйверы обмена по последовательному .../Стандартный заголовок"
2. Функция Get_xxx взвращает значение задержки между транзакциями.
А таймаут, задаваемый в настройках COM-порта, фиксирует время ожидания ответа в пределах одной транзакции.

Сообщения / Posts 15118 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Гришечко А.Е.
Junior Member / Новичок
Участник № / Member № 3323


Icon 1 отправлено / posted      Профиль для / Profile for Гришечко А.Е.           Редактировать/удалить сообщение / Edit/Delete Post 
Относительно структур. В заголовке описан перечень переменных, которые составляют эти структуры, а мне интересно что именно за данные они хранят. Скажем в примере драйвера Ш711/1 в документации функция zCompare_xxx возвращает ia1.i[1]+1, какое значени содержит эта переменная, ее физический смысл?
Сообщения / Posts 16 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Надо прочитать, что выполняет эта функция и что она возвращает. Это документировано.
Сообщения / Posts 15118 | Из / From: Russia  |  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

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2