|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
DDE чтение сразу несколько итемов
Доброго всего!
На станке стоит DDE и OPC система под XPSP3 ЧПУ Sinumerik. Задача: в реальном времени считывать системные переменные о параметрах привода. Установил на форме DDEClientConv и DDEClientItem, задал service, топик и итем, на событие DdeClientItem1Change сделал вывод в окно Edit1 данные с поля DdeClientItem1.Text. В родной оболочке вижу обороты двигателя и у себя в окне Edit1 - всё ОК!! Также сделал и током двигателя - но данных НЕТ в Edit2, так как нет события DdeClientItem2Change , привязанного на тотже DDEClientConv , хотя я вижу что ток двигателя скачет и значит данные МЕНЯЮТСЯ, и обязано появляться событие DdeClientItem2Change !!!. Поменяв местами items естественно теперь вижу ток а обороты нет. какой-то бред. У DdeClientItem есть свойство Lines - это для нескольких переменных, я так понял... можно ли туда в поле Item положить сразу 2-3-4-5 нужных итемов в данном топике. Или короче - как за 1 раз считать несколько итемов с одного топика. |
#2
|
||||
|
||||
Не использовал эту технологию, но предположу что вам для каждого устройства надо положить свой DDEClientConv
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
Когда-то использовал для сопряжения вендорного проверочного стенда с ПК, если правильно помню, то стандартный DDEClientConv должен быть один, а ClientItem - несколько, вдобавок не любит клиент получать многострочные сообщения, посылать может, а принимать нет, поэтому их и нужно несколько задействовать, или тогда передавать данные через разделитель, а потом парсить при приёме на клиенте
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
|||
|
|||
У меня так и сделано на форме - один DDEClientConv и пять штук DdeClientItem1 и все привязаны на один интерфейс/сервис/топик но итемы как и положено разные.
Многострочные принять пока не могу - не знаю как сделать запрос многострочный, вроде делается через массив. Фирменная утилита контроля DDE обмена показывает разделитель [|] так. Пробывал подставлять - не понимает сервер запроса и вообще никак не реагирует на него (((. Устройство в принципе одно ЧПУ и вся информация для HMI/приводов передаётся с помощью BTSS переменных, которые являются итемами. Сегодня пробывал через ОРС интерфейс (не на прямую DDE)- создаю группу, указываю итем и всё работает, CallBack и AdviceCallBack тоже работают, информацию получаю, в принципе то что нужно, но при записи в группу нескольких итемов CallBackOnChange вызывается каждый раз при смене параметра в группе ДВА раза, при этом в процедуре обработки НЕТ информации какой именно итем сейчас обрабатывается, может лежит эта инфа в какой-то глобальной переменной - но я не нашёл. Делфи OPCUtils скачал с открытого сайта. Вообще Siemens рекомендует использовать VisualBasic, но от него меня тошнит ))) корявый интерфейс, нет хелпа и пр... Интересно ещё то, что при проверке на ПК работает а на ЧПУ вылазят глюки иногда - видимо сказывается перегруженность запросов DDE Во вложении проект. 1Мб . Естественно без сервиса работать не будет, но прошу просмотреть правильность задания условий/чтений/запросов/записей, короче саму идеологию работы с DDE и ОРС, может ФРИШНЫЙ компанент ОРС косячный и недоделанный. |
#5
|
|||
|
|||
DDE медленный метод, переходите на OPC.
|
#6
|
|||
|
|||
Пардон, какой-то сбой на форуме, сообщения множатся без моего хотения.
|
#7
|
|||
|
|||
Дело в том, что ОРС работает на DDE ))))) ОПС это надстройка, облегчающая работу, по крайней мере у меня так. DDE работает хоть и криво (видимо из-за моих кривых рук) без оболочки станка HMI-Advanced, а ОРС сервер и запросы через него к тем же данным только при запуске оболочки, и когда смотришь доку на сервер диаграмма структуры обмена именно это и показывает (картинку смогу принести).
|