Тема / Topic: Как вывести сигнал OUTPUT на исполнение
Rinag
Forum Member / Участник форума
Участник № / Member № 4499
отправлено / posted
В источниках/приемниках создается OPC переменная типа output, на которую ссылается аргумент экрана (типа IN/OUT, real). В свою очередь в этот аргумент подается выключателем 0 или 1. При такой схеме работает вроде нормально, но заметил когда обращаешься к источникам/приемникам напрямую (не через канал), то система начинает жутко подвисать, а если несколько таких выключателей то и вообще виснет. Да и не по трейсмоудовский это. Поэтому все входные и выходные переменные предварительно настроил через созданные каналы. Но вот вариант с такими промежуточнымы каналами типа "событие" или "флоат" для выходных дискретов не работает (сколько не мучился так и не догнал). К каким только атрибутам не привязывал аргумент экрана (R, A, In, C, Q), но канал почему то дальше не передает в значение выходной переменной. Вопрос как реализовать схему:
ГЭ выкл.-> канал Событие А:In:output -> OPC переменая А:output:discret.
Дело в том, что через редактор можно привязаться только к атрибуту "значение R" переменной OPC, То In в принципе не доступен. А вот при исполнении в МРВ в окошке Компоненты просматриваются и R и In и много других атрибутов. При попытке ввести 1 напрямую в R она схватывает ее и возвращается в 0. А вот через In все работает, но к In не могу привязаться в редакторе.
Сообщения / Posts 40 | Из / From: RU
| IP / IP: IP адрес / IP address |
отправлено / posted
Непосредственная привязка аргументов шаблонов к "Источникам/Приемникам" кроме видимого упрощения процедур линковки при дальнешем усложнении проекта никаких преимуществ не дает. Поэтому всегда рекомендуется создавать каналы, связанные с "Источниками/Приемниками" и уже к их атрибутам привязывать любые шаблоны.
Создайте канал HEX16_OUT, привяжите его к переменной OPC_OUT. Затем привязывайте аргумент канала, вызывающего экран, к атрибуту HEX16_OUT.In.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Rinag
Forum Member / Участник форума
Участник № / Member № 4499
отправлено / posted
Соглашусь с Вами, но именно так я и хотел поступить, но через канал не работает. Позвольте Вам отправить для анализа мой проект (я порезал не нужное для большего удобства). Куда можно отправить и кому адресовать?
Сообщения / Posts 40 | Из / From: RU
| IP / IP: IP адрес / IP address |
отправлено / posted
Проект получил. В дальнейшем отправляйте на адрес hotline@adastra.ru. Обязательно обозначайте тему письма и представляйте в письме свою организацию. Кроме особых случаев, оговариваемых при запросе проекта, достаточно прислать файл *.prj.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
1. OPC-клиент Trace Mode 6 для каждого компонента слоя "Источники/Приемники" поддерживает только 1 функцию - Input или Output. Поэтому для того, чтобы писать в тег OPC-сервера и читать его значение, надо создать 2 компонента - "Источник" ("Направление" - Input) и "Приемник" ("Направление" - Output), привязанные к одному и тому же OPC-тегу.
2. Для каждого компонента надо создать соответствующий канал. Канал OUT будет использоваться для управления (в его атрибут ВХОД будет вноситься число с экрана или из программы), а канал INPUT будет использоваться для чтения значения тега в OPC-сервере (его атрибут РЕАЛЬНОЕ будет давать значение на экран или в программу).
3. Во всех случаях правильно использовать числовые каналы (FLOAT или HEX), которые должны быть согласованы с типом данных OPC-тега. Канал СОБЫТИЕ может использоваться для считывания бинарных OPC-тегов. Но у него нет функции ПЕРЕДАЧИ своего значения какому-либо "Приемнику". Поэтому использовать его для управления нельзя.
У нас нет OPC-сервера DEP, который мог бы работать без привязанных контроллеров. Поэтому в отправленном Вам проекте все сказанное выше продемонстрировано на примере связи с OPC-сервером KEPware (мы реально проверили предлагаемое решение).
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |