Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Класс инкапсулирующий сложность OPC обмена

 Ответить Ответить
Автор
Сообщение
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Класс инкапсулирующий сложность OPC обмена
    Опубликовано: 23 Июль 2007 11:02

Экспериментировал со связкой DDE сервер CoDeSys и DDE клиентом Excel. В случае использования консоли только для чтения, получается не особо трудоемкое решение, прямо скажем. Область применения естественно ограничена, но определенный интерес представляет. Реализовывать DDE в собственной программе ИМХО бесперспективно, думаю лучше добивать OPC обмен Собственно и писать возможно не стоило об этом, но появилась неплохая, на мой взгляд идейка, хочу поделиться.

Под CS написал класс, который осуществляет запуск DDE серверов CoDeSys и скрыто открывает файл Excel дожидается начала обмена и затем предоставляет теги в виде значения своих полей. Оповещение клиентов класса о необходимости перечитать поля реализовано в виде события класса подключения. (GetNewDataComplit)

В конечном итоге мы имеем с программным интерфейсом класс поддерживающий DDE обмен и инкапсулирующий сложность его реализации. Собственно многие хотели бы иметь некий инструмент позволяющий, будучи включенным в проект программы, прозрачно использовать OPC обмен. Я не претендую на то что все подобного рода продукты видел ибо это дорого ;-). Могу сказать, что в Genesis32 есть нечто подобное, но требует создания объекта на каждый тег. Имхо это расточительно.

В общем интересно мнение форума.

1. Теги в классе для доступа на чтение\запсиь должный быть представлены в виде коллекции. Освоить работу с коллекцией не сложно на мой взгляд.

2. Класс должен иметь методы для останова\запуска OPC обмена

3. Класс должен иметь только конструктор по умолчанию.

4. Класс должен содержать события оповещения о завершении операции записи, а также о завершении цикла синхронного чтения тегов для обновления клиентом членов коллекции.

5. Информации о подписке на теги должна лежать в отдельной базе конфигурируемой графической консолью.

В результате, мы конфигурим теги, затем включаем класс (или сборку) в проект, создаем объект. На стадии инициализации объект нашего класса считывает базу, создает коллекцию тегов (подписываеться на них), затем поддерживает обмен и обеспечивая доступ к членам коллекции.

Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Июль 2007 19:50

Мое почтение.

Я не совсем въехал. Вы сотворитли Класс, или предлагаете этим заняться ?  Какова общая схема интеграции, взаимодействия этого Класса с приложениями ?

С уважением, SAN

Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Июль 2007 06:15

Класс на пробу я сделал под DDE обмен, хочу заморочиться с OPC обменом. Есть рабочий пример, подписка чтение и запись в нем реализованы через массив тегов. Это дает возможность использовать коллекцию. Интеграция состоит в простом подключении сборки, в пространстве имен которой описан класс, экземпляр этого класса будет обеспечивать требуемую функциональность, я так это вижу (зима длинная у нас время типа есть)

Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Июль 2007 13:15
Первоначально опубликовано Dismay

...Есть рабочий пример ... 

Взглянуть бы.

С уважением, SAN

Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 24 Июль 2007 13:45
Да собственно вот ... 7Z6Z8_OPC.rar RSDN предложил, думаю можно со временем забороть
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz