Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.02.2016, 15:54
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию 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  
Старый 15.02.2016, 18:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,714
Репутация: 52347
По умолчанию

Не использовал эту технологию, но предположу что вам для каждого устройства надо положить свой DDEClientConv
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 15.02.2016, 19:15
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,026
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Когда-то использовал для сопряжения вендорного проверочного стенда с ПК, если правильно помню, то стандартный DDEClientConv должен быть один, а ClientItem - несколько, вдобавок не любит клиент получать многострочные сообщения, посылать может, а принимать нет, поэтому их и нужно несколько задействовать, или тогда передавать данные через разделитель, а потом парсить при приёме на клиенте
Ответить с цитированием
  #4  
Старый 16.02.2016, 14:27
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию

У меня так и сделано на форме - один DDEClientConv и пять штук DdeClientItem1 и все привязаны на один интерфейс/сервис/топик но итемы как и положено разные.
Многострочные принять пока не могу - не знаю как сделать запрос многострочный, вроде делается через массив.
Фирменная утилита контроля DDE обмена показывает разделитель [|] так. Пробывал подставлять - не понимает сервер запроса и вообще никак не реагирует на него (((.
Устройство в принципе одно ЧПУ и вся информация для HMI/приводов передаётся с помощью BTSS переменных, которые являются итемами.

Сегодня пробывал через ОРС интерфейс (не на прямую DDE)- создаю группу, указываю итем и всё работает, CallBack и AdviceCallBack тоже работают, информацию получаю, в принципе то что нужно, но при записи в группу нескольких итемов CallBackOnChange вызывается каждый раз при смене параметра в группе ДВА раза, при этом в процедуре обработки НЕТ информации какой именно итем сейчас обрабатывается, может
лежит эта инфа в какой-то глобальной переменной - но я не нашёл.
Делфи OPCUtils скачал с открытого сайта.

Вообще Siemens рекомендует использовать VisualBasic, но от него меня тошнит ))) корявый интерфейс, нет хелпа и пр...

Интересно ещё то, что при проверке на ПК работает а на ЧПУ вылазят глюки иногда - видимо сказывается перегруженность запросов DDE

Во вложении проект. 1Мб . Естественно без сервиса работать не будет, но прошу просмотреть правильность задания условий/чтений/запросов/записей, короче саму идеологию работы с DDE и ОРС, может ФРИШНЫЙ компанент ОРС косячный и недоделанный.
Вложения
Тип файла: rar test_spindle.rar (1.02 Мбайт, 3 просмотров)
Ответить с цитированием
  #5  
Старый 19.02.2016, 13:45
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

DDE медленный метод, переходите на OPC.
Ответить с цитированием
  #6  
Старый 19.02.2016, 13:46
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Пардон, какой-то сбой на форуме, сообщения множатся без моего хотения.
Ответить с цитированием
  #7  
Старый 28.02.2016, 05:43
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию

Дело в том, что ОРС работает на DDE ))))) ОПС это надстройка, облегчающая работу, по крайней мере у меня так. DDE работает хоть и криво (видимо из-за моих кривых рук) без оболочки станка HMI-Advanced, а ОРС сервер и запросы через него к тем же данным только при запуске оболочки, и когда смотришь доку на сервер диаграмма структуры обмена именно это и показывает (картинку смогу принести).
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter