This is topic Связь через DDE in forum Редактор проекта TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.


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

Posted by Helic (Участник № / Member № 3274) on :
 
Использую внешний DDE сервер для передачи данных с ком порта в канал. В тестовом проекте при незначительном количестве каналов связь работает, данные передаются. Вставил это решение в рабочий проект и получил следующее: Во входное значение канала связанного с источником DDE- данные приходят а в выходном значении канала стоит ноль . Канал попросту рвется. Никакой трансляции нет . Прокоментируйте поведение системы.
 
Posted by Nico (Участник № / Member № 5342) on :
 
эмуляция работы техподдержки [Улыбка / Smile] )
какой релиз?
RTM или профайлер ?
канал точно output не в IDE?
во входе и в реальном нужное значение?
режим != ADVICE ?
расширенная обработка не задана(kx,cглаживание и прочее) если канал FLOAT ?
канал включен и подключен ?
откуда посылатся значение ?
в файлах tm6_log.txt и файле профайлера при вкл отладке 0x4000000 записей нет ?
126 атрибут соответствует DDE ?
атрибуты 90-92 не работающего канала совпадают с тестовым ?
и какой канал рвется ?
 
Posted by Helic (Участник № / Member № 3274) on :
 
релиз 6.07.7 ,работаю под профайлером (RТМ куплен)
данные с ком порта получаю логгером (http://www.aggsoft.ru/serial-data-logger.htm) В написании драйвера к железяке (http://www.shs-office.ru/products/skud/readers/emm/128/) мне вежливо отказали. В файле прфайлера есть такая запись "(15:32:10) WRN_DDE:Не удается связать службу диспетчера общих баз данных (DSDM) " 126 атрибут соответствует DDE ? -вот это я не пойму . Спасибо за содействие ....
 
Posted by Helic (Участник № / Member № 3274) on :
 
В тестовом проекте также имеется запись " WRN_DDE:Не удается связать службу диспетчера общих баз данных (DSDM)" Но данные в каналах связанных с DDE источником передаются.
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) WRM_DDE - ошибка инициализации службы NetDDE
2) 126 атрибут это тип-подтип для DDE(13.xx)
3) смотрим в окне компонентов,где хх=режим обмена(8-advice)
4) большинство считывателей можно настроить в режим запрос-ответ и имеют примитивный ASCII протокол
в 80 прцентах пишется через канал типа вектор
5) в cp-01 это возможно
6) посылайте команду "к"
7) саму посылку задайта в параметре дополнительно(47 атрибут)через "ASCII;SENDCMD=<строка>;"
8) добавьте CR; или CRLF; что нужно в строку дополнительно
9) подберите типы аргументов куда распихаются принятые символы
10) также для этого прибора можно работать с 16 представлением посылаемой строки
11) основная проблема разобраться с каналом вектор
 
Posted by Helic (Участник № / Member № 3274) on :
 
Спасибо за помощь!!!
 
Posted by Helic (Участник № / Member № 3274) on :
 
Уважаемый Nico, вся надежда только на Вас...

- создал UniversalPLC_type3_1
- Порт 0х3
- Адрес 0х1
- В строке "Дополнительно" ASCII;SENDCMD=6B;BYTESREAD=10;NREAD=0;
- сосдал Call.Vector Параметр= 2 (два байта на запрос)
- Создал 12 аргументов USINT ( 10 байтов на ответ и 2 на запрос)
- Создал Ком порт №4 Host Variant
- 4 и 5 порты виртуальные На 5 висит терминал

После запуска проекта на 5 порту появились команды
kkkkkkkkkkkkkkkkkkkkkkk6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B

Насколько я понял логику работы - в аргументах дожны присутствовать байты ответа

Попытался передать в терминале ответ - В аргументах канала Call.Vector нули .

Вопрос: почему в запросе выходят "6B" вместо "k" ?Как получить ответ от считывателя ?
И еще не понятно как из аргументов сложить код карты .
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) 6.077
2) Call.Vector Параметр=2 не задает 2байта на запрос. Откуда такое?
3) чем смотриться COM порт ?
4) что задано в SENDCMD то и посылается ="6B"
5) насколько помню команда в cp01 должна завершаться CRLF;
6) ASCII - значит строка в ASCII коде
SENDCMD=k;
7) BYTESREAD=10 -> cчитать 10 байт
8) Описание протокола есть ?
9) 10 байт в терминале передать это круто, про
таймаут порта не забыли?
10) ASCII;CRLF;BYTESREAD=12;SENDCMD=k;
11) аргументов 12 все байтовые
 
Posted by Helic (Участник № / Member № 3274) on :
 
Добрый день Nico
Вставил Вашу строку . Команды пошли правильно:k
k
k
Протокол считавателя :k - читать данные из буфера,
В ответ на эту команду считыватель выдает из буфера код карты 8 байт, два раза код «пробел», код символов OK и код «возврат каретки».
Поставил в канал 12 аргументов типа USINT
ответа пока не получил.
 
Posted by Helic (Участник № / Member № 3274) on :
 
Формат аргументов канала Call.Vector имеют вид :A000[2] :0(0)
и не меняются при поднесении карты к считывателю
В терменале на команду "к" выдается сообщение 0055E185 OK
Пробовал другие типы данных аргументов - результата нет.
 
Posted by Helic (Участник № / Member № 3274) on :
 
При Debug=200 в файле профайлера есть строка (11:19:2) ERR_RS:COM:4 err=9 ch=vector[2]
Работаю через COM3 . в UniversalPLC_type3_1 порт = 0х2
Прокоментируйте пожалуйста данную ошибку
 
Posted by Helic (Участник № / Member № 3274) on :
 
Если это "9, ERR_RT_TIMEOUT – превышен таймаут;" то как от него избавиться
 
Posted by Helic (Участник № / Member № 3274) on :
 
Поставил в настройках Com3 Таймаут =5000 все равно выходит (11:33:16) ERR_RS:COM:4 err=9 ch=vector[2]
 
Posted by Helic (Участник № / Member № 3274) on :
 
При Debug=200 в файле профайлера есть строка (11:59:5) ERR_RS:COM:3 err=7 ch=vector[2]
Если это " ошибка формата" то с чем она связана.
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) После отсылки в порт в течении 5 сек должен прийти ответ
2) почему то COM3 то COM4
3) поставили CRLF -> в ответе CRLF иначе err=7
поставили CR -> в ответе CR иначе err=7
4) err=9 не просто таймоут а принято 0 байт
5) не пытайтесь вводить ответ через терминал НЕ получится
 
Posted by Helic (Участник № / Member № 3274) on :
 
Nico, черкните на адрес helic_nn@mail.ru пару строк
Сейчас в протоколе профайлера ошибок нет . но данных так-же нет
 
Posted by Nico (Участник № / Member № 5342) on :
 
.а обмен есть ?
.надо смотреть запросы-ответы перехватчиком COM порта
.если нет ошибок обмена то какие значения находятся в аргументах канала.call.vector?
.измените их через окно компонентов
после запроса-ответа изменились ли значения?
.перейдите на HEX вариант( убрать ASCII; CRLF; )
SENDCMD= посылка каждый байт в hex(2 символа)
6B0A0D
 
Posted by Helic (Участник № / Member № 3274) on :
 
Как подключить перехватсик ком порта. Программный не открывается т.к ком порт занят .
в аргументах канала.call.vector ---A000[2]:0(0)
сейчас стоит ---ASCII;CRLF;BYTESREAD=13;SENDCMD=k;
буду пробовать HEX вариант.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Закройте приложение, которое "сидит" на этом COM-порте, а затем запустите перехватчик.

Перехват вышлите на hotline3@adastra.ru.
 
Posted by Helic (Участник № / Member № 3274) on :
 
Уважаемый Nico! Посоветуйте что предпринять
в значениях аргументов нули . После ручного изменения значения они сохраняются и не меняются при поднесении карты

k [len=1]
OK< [len=12]
k [len=1]
00D9FFE2 OK< [len=12]
k [len=1]
OK< [len=12]
k [len=1]
00607217 OK< [len=12]
k [len=1]
OK< [len=12]
 
Posted by Helic (Участник № / Member № 3274) on :
 
Документация: k - читать данные из буфера,
В ответ на эту команду считыватель выдает из буфера код карты 8 байт, два раза код «пробел», код символов OK и код «возврат каретки».
Получается 14 байт: на ответ
на запрос 6 байт( два на команду и 4 OK и код «возврат каретки».
Значит создавать надо 20 аргументов типа IN USINT
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нет. В аргументы сохраняются принимаемые значения. То есть в канале Call.Vector нужно создать 14 однобайтовых аргументов.

Вышлите перехват обмена в HEX-формате.
 
Posted by Helic (Участник № / Member № 3274) on :
 
Подскажите пожалуйста строку в поле "Дополнительно"
для работы в HEX-формате, а то у меня ерунда какая-то сыпется. Спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Что значит “ерунда сыплется”? В аргументы значения поступают?

Предположительно команда в строке “Дополнительно” для запроса в HEX-формате должна выглядеть следующим образом : “BYTESREAD=14;SENDCMD=6B0D0A;”.
При этом в канале CALL.Vector, к которому привязывается источник нужно создать 14 однобайтовых аргументов.

Без перехвата обмена в HEX-виде, которого мы еще от Вас не получили, сказать более точно затруднительно.
 
Posted by Helic (Участник № / Member № 3274) on :
 
Протокол в формате HEX лежит на http://zalil.ru/31572179
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отредактируйте строку "Дополнительно" следующим образом “BYTESREAD=14;SENDCMD=6B0D0A;CRCNO;”, чтобы отключить добавление контрольной суммы.

Новый перехват опять вышлите нам.
 
Posted by Helic (Участник № / Member № 3274) on :
 
0x0270 F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 рта: RXCLEAR, TX
0x0280 43 4C 45 41 52 20 67 0D 0A 44 88 7C 30 30 36 30 CLEAR g..D€|0060
0x0290 37 32 31 37 20 20 4F 4B 0D 0A CE F7 E8 F1 F2 EA 7217 OK..Очистк
0x02A0 E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 а порта: RXCLEAR
0x02B0 2C 20 54 58 43 4C 45 41 52 20 67 0D 0A 44 88 7C , TXCLEAR g..D€|
0x02C0 30 30 36 30 37 32 31 37 20 20 4F 4B 0D 0A CE F7 00607217 OK..Оч
0x02D0 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 истка порта: RXC
0x02E0 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 67 0D LEAR, TXCLEAR g.
0x02F0 0A 44 88 7C 30 30 36 30 37 32 31 37 20 20 4F 4B .D€|00607217 OK
0x0300 0D 0A CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A ..Очистка порта:
0x0310 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 RXCLEAR, TXCLEA
0x0320 52 20 67 0D 0A 44 88 7C 30 30 36 30 37 32 31 37 R g..D€|00607217
0x0330 20 20 4F 4B 0D 0A CE F7 E8 F1 F2 EA E0 20 EF EE OK..Очистка по
0x0340 F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 рта: RXCLEAR, TX

Документация на считыватель

g - читать код карты находящейся в поле считывателя.
В ответ на эту команду считыватель выдает из буфера код карты 8 байт, два
раза код «пробел», код символов OK и код «возврат каретки»
 
Posted by Helic (Участник № / Member № 3274) on :
 
Ранее писалось что обноление значения аргументов идет сзадержкой 5 сек поэтому предлагаю изменить команду с "к" на "g" она не дает пробелов в ответе
“BYTESREAD=14;SENDCMD=670D0A;CRCNO”
Протокол см. выше
Но эагументы все равно равны нулю
 
Posted by Helic (Участник № / Member № 3274) on :
 
Все работает. Проект лежит : http://zalil.ru/31573801
Спасибо Nico за идею, стасибо тех. поддержке за участие.
 
Posted by Nico (Участник № / Member № 5342) on :
 
Пожалуйста!

[ 22.08.2011, 11:22: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Helic (Участник № / Member № 3274) on :
 
Данный механизм обмена в настоящий момент работает только на тестовом проекте .На рабочем проекте где 120 каналов и 3 порта для опроса, обмен в канале "вектор" включается только при посылке 1 в 39 аргумент. Может посоветуете пути решения ?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Ситуация не воспроизвелась.
При запуске проекта на нашем ПК запросы отправляются в соответствии с заданным циклом пересчета канала CALL.Vector.

Сделайте перехват обмена по COM-портам и вышлите его на hotline3@adastra.ru.
 
Posted by Helic (Участник № / Member № 3274) on :
 
Перехват в реальном проекте выполнить невозможно .МРВ зависает .
 
Posted by Nico (Участник № / Member № 5342) on :
 
если не делать перехват зависает ?
число каналов call.vector на порт (3 порта = 3 канала)?
если карточки не было в устройстве то какой ответ от него ?
у call.vector не работаюших атрибуты FA,SC,WC чему равны ?
смотрим файл tm6_log может есть записи
 
Posted by Helic (Участник № / Member № 3274) on :
 
Уважаемый Nico спасибо за поддержку , в настоящий момент получаю код карты через оборудование компании Болид , используя релейную логику . Криво конечно, - но работает стабильно.Проводить дальнейшие эксперименты с каналом вектор планирую позже. В реальном проекте бало два порта с каналом вектор на каждом и один порт -корзина i87р8 .В аргументах каналов было значение - "отсутствие карты" При поднесении карты аргументы значения не меняли , После 1 в 39 аргумент - значения обнавлялись
 
Posted by Nico (Участник № / Member № 5342) on :
 
Большая просьба сообщить результаты продолжения эксперемента с вектором и оборудованием доступа
сообщить.

[ 30.08.2011, 10:19: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2