Чтобы создать связь CoDeSys + InTouch  в данном примере используется следующее программное обеспечение:

  1.    CoDeSys V2.3 + CoDeSys.OPC.02 + PLC WinNT 2.4.7.11
  2.    Matricon OPC Explorer (для проверки передачи тегов)
  3.    Matlab R2011b
  4.    Archestra System Management Console
  5.    Intouch V10.1

Все это дело запускается на виртуальной машине с Windows 2003 Server. Работоспособность данной связки на других ОС не гарантируется.

Для начала создадим новый проект в CoDeSys. Запускаем CoDeSys, File-> New. В появившемся окне выбираем PLC WinNT(эмулятор контроллера, на его месте может быть конфигурация реального ПЛК, если её заранее установить).

Во вкладке General обязательно ставим галку напротив Download Symbol File.

Эта опция позволяет создать файл, в который внесены данные о переменных CoDeSys, которые будут доступны для OPC сервера.

Создадим простенькую программу с ПИД-регулятором.

CoDeSys. ПИД-регулятор.  Подключение библиотеки Util.lib и создание ПИД-регулятора.

Для проверки правильности написания кода выбираем пункт меню Project -> Rebuild All.

Если ошибок нет – приступаем к настройке связи с контроллером. Запускаем OPC Configurator (C:\Program Files\3S Software\CoDeSysOPC\OPC_config.exe). Правой кнопкой на пункте Server – Append PLC.

Далее в меню слева появятся ещё 2 пункта. Выбираем пункт PLC1 и задаем ему Project name. В нашем случае это PLC_PRG.

Переходим на вкладку Connection. Нажимаем Edit.

Создаём новый канал для подключения.

В открывшемся окне выбираем тип соединения TCP/IP. Жмем Ок.

В результате выполнения такой последовательности действий, настройки подключения будут иметь следующий вид:

Обратите внимание, что 1200 порт может быть занят. В таком случае нужно будет открыть соединение на другом порту либо через командную строку с командой «netstat -ano» отследить процесс, висящий на этом порту и по Process ID убить его в диспетчере задач.

Теперь нам необходимо запустить, собственно, сам контроллер. Идем C:\Program Files\3S Software\CoDeSys SP PLCWinNT и запускаем PLCWinNT24.exe. Работа эмулятора в демо-режиме ограничена 2-мя часами. Об этом как раз и предупреждает нас программа:

Нажимаем Ок и переходим к подготовке проекта к загрузке в контроллер.

 

Для этого выбираем пункт меню Project->Options… Далее выбираем пункт Symbol Configuration. Ставим галку Dump symbol entries и переходим по кнопке Configure symbol file

Выбираем интересующие нас переменные, ставим галки, как показано на скриншоте и нажимаем Ок.

Проверяем параметры коммуникации CoDeSys (Online -> Communication Parameters). Они должны совпадать с настройками OPC конфигуратора:

Ещё раз ребилдим проект (Project -> Rebuild all). После этого заливаем программу в контроллер нажатием комбинации клавиш Alt+F8 или из пункта меню Online — > Login. CoDeSys выдаст предупреждение, что в контроллере нет программы:

Естественно, нажимаем Yes. Для того чтобы запустить контроллер нажимаем F5. Статус работы контроллера можно проверить в окне PLC WinNT:

Теперь можно протестировать работу ПИД-регулятора. Делаем двойной щелчок  мышью на temp_set и даем задание регулятору 20 градусов. Подтверждаем изменение значения переменной клавишей F7.

Выход регулятора должен установится на 100%, так как уставка превышает текущее значение температуры на 20 градусов.

Теперь нам нужно проверить, попадают ли переменные с контроллера в ОРС сервер. Для этого используем программу Matrikon OPC Explorer. После установки пакета CoDeSys в операционной системе должен быть зарегистрирован ОРС-сервер CoDeSys.OPC.02. Обратите внимание – если вы хотите вести обмен данными не на локальной машине, а по DCOM, то вам необходимо изменить настройки компонентной модели вашей операционной системы.

Далее необходимо создать объект, которым будет управлять наш регулятор. Создаем модель объекта с помощью Matlab.

После создания модели в Matlab в CoDeSys также можно видеть изменение параметров:

Теперь нам нужно получить доступ к переменным CoDeSys в InTouch. Так как InTouch работает со своим протоколом SuiteLink, он требует наличие шлюза для преобразования данных, получаемых по протоколу ОРС сервера CoDeSys. Для этого используется шлюз FSGateway. После установки его можно найти в Start -> Programs -> Wonderware -> System Management Console (SMC). С помощью FSGateway мы получаем доступ к переменным CoDeSys в InTouch.

Теперь можем запускать InTouch. Создаем новое приложение (File -> New).

Выбираем путь к проекту, имя приложения и т.д.

Разрешение экрана у нового приложения 0 х 0, так как в нём пока не создано ни единого окна.

Запускаем новое приложение.

Сразу же заходим в Special -> Access Names.

Теперь нам необходимо настроить InTouch на прием данных от FSGateway. Добавляем новое имя доступа.

Задается произвольное имя Access, например Name. Node Name можно оставить пустым, так как мы работаем на локальной машине. В Application Name нужно прописать название приложения, с которого берём теги – FSGateway. Topic Name копируется из FSGateway.

Нажимаем Оk, Close.

Создаем новое окно в InTouch.

Задаем имя новому окну и нажимаем Ок.

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

Выбираем элемент прямоугольник.

Задаем фон.

Задаем анимацию заполнения для определенного диапазона. Двойным щелчком по прямоугольнику открываем окно анимации.

Вписываем в текстбокс название нашего тега из FSGateway – temp (значение текущей температуры).

Нажимаем Ок и получаем сообщение о том, что такой тег не определен.

Нажимаем Ок для определения тега. Видим такое окошко:

Прежде всего, нужно выбрать тип переменной. Все переменные в InTouch, которые не являются внутренними, начинаются на “I/O”. Для нашей температуры выбираем I/O Real.

После этого выбираем Access Name для нашего тега. И ставим галку Use Tagname as Item Name.

В принципе, можно использовать любое другое имя для переменной в самом Intouch, но все таки проще изначально задать нормальное имя в FSGateway и использовать это имя здесь.

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

По двойному клику мышкой на тексте переходим в окно редактирования анимации. Выбираем Value Display -> Analog.

Пишем в текстбоксе temp и нажимаем Ok.

Тег уже связан с переменной, поэтому всё готово и можно протестировать приложение. Нажимаем Runtime в правом верхнем углу окна программы.

Поменяем в CoDeSys задание регулятору, чтобы увидеть изменения в InTouch. И вуаля:

Стоит заметить, что если переменная не дошла до Intouch, и у вас отображаются нули вместо текущего значения, можно проверить состояние этих значений в FSGateway. Переходим в раздел Diagnostics.

Как видим в Diagnostic Info качество переменной Good, чтение и запись осуществляется без ошибок. Если в свойстве Quality вы увидите значение BAD  — проверьте ещё раз, правильно ли создан символьный файл. Возможно, нужно будет ещё раз сделать Rebuild All, и заново создать символьный файл. Если же в свойстве Read Status вместо complete стоит pending – возможно это внутренняя ошибка FSGateway (другое приложение мешает нормальной работе шлюза, либо приложение установлено неправильно). Но чаще всего нужно просто перепроверить правильность имен переменных CoDeSys. Возможно, вы просто пытаетесь обратиться к переменной, которая была добавлена в символьный файл в прошлой сессии, но в данный момент такой переменной в контроллере нет.

 

Tags

 
Поделиться в Ok Ok Ok Ok Share for Odnoklassniki Ok Ok

30 комментариев

  1. Владимир:

    Возникают проблемы при настройке шлюза. Переменные не добавляются, хотя шлюз их видит (когда выполняется Browse). В логах ошибка 2551 28.11.2012 0:27:57 3856 2416 Warning FSGateway ‘opc1.group1’ failed to add items to the OPC Server, HRESULT = 80004005

  2. admin:

    Какие версии ПО используете? Какая операционная система?

  3. Павел:

    Здравствуйте, такая проблема-> Символьный файл создался,а в матриконе переменные не отображаются! В чем может быть причина?

  4. admin:

    Пробуйте следующее:
    1) зайдите в каталог проектов, удалите файл с названием проекта с расширением *.SYM (символьный файл)
    2) Запустите команду Rebuild all
    3) Ещё раз пересоздайте символьный файл, как показано в инструкции — после загрузки программы в контроллер теги должны появится в матриконе.

    Если не помогло — перезагрузите машину и повторите все действия заново.

  5. Павел:

    Все попробовал, результат не изменился,матрикон не видит теги для добавления. Никак не пойму в чем может быть загвоздка…Помогите, если это возможно. Очень нужно…

  6. admin:

    Вы используете все то же самое, что и в инструкции? С симулятором контроллера работаете? Все указания выполняете?

    У вас PLCWinNT в Running Mode?

  7. Павел:

    Я использую твсе тоже самое что и в инструкции,выполняю все указания, PLCWinNT в Running Mode .покопался в настройка сервера,в лог файле первым делом выдает ошибку—error no valid configuration found in registry может быть в этом ошибка???

  8. admin:

    может быть проблема с регистрацией OPC в системе. Все происходит на локальной машине или на разных виртуалках? Возможно нужно будет переустановить CoDeSys

  9. Павел:

    все происходит на одной локальной машине

  10. Павел:

    попробовал переустановить кодесис —не помогла,результат тот же((((притом что пробуй на 2х разных компах с разной ОС,и все тоже самое

  11. admin:

    Служба OPC запускается под тем же пользователем, под какими установка происходит? Возможно нужно будет почистить реестр и переустановить ещё раз. Система 32-х разрядная?

  12. Павел:

    Служба OPC запускается под тем же пользователем, под какими установка происходит.чистил реестр и переустанавливал уже несколько раз, система MS windows 7 ultimate 64-bit sp1. Ребят,может че с самой прогой кодесис,или ОРС-сервер че не так ставится, в реестре не появляются файлы которые указаны в руководстве по ОРС-серверу….

  13. admin:

    на форуме 3s сказано, что работоспособность кодесис 2.3 на х64 не гарантирована — пробуйте ХР, server 2003 — работоспособность проверена!

  14. Павел:

    сейчас ставлю виртуалку и сервер 2003,пробовал на ХР у меня не пошло

  15. Павел:

    поставил сервер 2003,результат опять же не порадовал,я новичек в этом деле,может где галочку еще надо поставить,все делаю по пунктам как тут написано,но у меня опять ничего не выходит. опять же ошибка ERROR: No valid configuration found in registry в лог-файле ОРС-сервера, матрикон переменные не видит!….Codesys ставлю не самой первой версии, уже незнаю что делать то,столько сижу над этим…

  16. admin:

    dcom конфигурировали? дайте все права вашему пользователю. если не заработает — то я уже не знаю. обращайтесь в техподдержку 3S…

  17. Евгений:

    Хочу подобную связку реализовать на Windows 7.
    Скачал Матриокон ОПС установщик не хочет конкретно запускаться и выдаёт ошибку. Кодесис 3.5 поставил.
    Есть ли подобная статья для Win 7?

  18. admin:

    А Матрикон Вам и нужен только для проверки связи, то есть его ставить не обязательно. Какая ошибка возникает при установке? Разрядность системы? Связка может не заработать и по другой причине. Например, в старых версиях MatLAB OPCToolbox не поддерживает х64.

  19. Евгений:

    Поставил я у себя на ноуте это всё дело на системе ХР. Всё работает до ИнТача. В общем начинаются проблемы с пункта SMC. У меня там нет такого пункта, как DAServerManager. Только Log Viewer.
    Скрин прилагается http://s017.radikal.ru/i417/1308/e3/bc420044fe9c.jpg

  20. Евгений:

    Отставить мой вопрос 🙂 Вторые сутки не мог разобраться в чем проблема, пока наконец-то не нашел ссылочку на ФСГейтвей 3.0 Установил и всё появилось.

  21. admin:

    Отлично. Теперь у нас есть солюшн для последующих поколений.

  22. DimZero:

    Не могу сконфигурировать блоки OPC Write, OPC Read, OPC Config Real Time. В окне OPC Server Properties при нажатии кнопки Select Server выдает сообщение: «Cannot get server list. Operation returned ‘Null Pointer’ «.

  23. admin:

    На компьютере установлен хотя бы 1 opc server?

  24. DimZero:

    Разумеется.
    CoDeSys.OPC.02
    Citect.OPC.1
    Это то, что видит Matricon Explorer.

  25. admin:

    Операционная система? OPC Toolbox может не поддерживать х64

  26. DimZero:

    Печально. Стоит 7-ка, 64-бит. Есть ли какой-то выход из положения?

  27. admin:

    Какой матлаб стоит? Обновить до самой последней версии. Если не поможет — VMWare. Виртуализировать Server 2003.

  28. DimZero:

    Спасибо! Сделал то, что указано в ссылке — заработало!!!

  29. Павел:

    Здравствуйте!

    Первый вопрос: в описываемом Вами проекте всё виртуальное т.е. датчики и контроллер?

    Второй вопрос-проблема: в CoDeSys OPC Configurator настроил связь как показано в инструкции, сохранил, закрыл. Далее захожу в рабочую программу, заходу во вкладку Онлайн далее Параметры связи, там, в окне Channels пусто, кроме ‘localhost’ via Tcp/Ip ничего нет, а должно быть, как я понимаю local_, который я создал в CoDeSys OPC Configurator. В чём проблема? Что я делаю не правильно?

Оставить комментарий

 




 

Вы же не робот? *