PDA

Просмотр полной версии : Как определить адреса тэгов



super100
22.08.2013, 12:29
Из видео-примера для настройки Master OPC Universal Modbus Server по ModbusTCP не понятно как определять адреса тэгов. В конфигурации проекта для ОВЕН ПЛК100 у меня заданы переменные для передачи по Modbus TCP. Например первая переменная вот так выглядит: VAR1 AT%QW8.1.0:WORD. Я не понимаю как при настройке OPC сервера связать например, тэг с переменной VAR1?

super100
22.08.2013, 14:26
Если я правильно понял, то за нулевой адрес 0x00 принимается адрес первой переменной в ModBus(slave)? Дальше если у меня идут тоже 2-байтовые переменные - то я назначаю адреса тэгам в OPC-сервере 0x01, 0x02 ...?

super100
22.08.2013, 16:26
Хочу ещё уточнить. В документации на которую выше ссылались , есть рисунок 3.8. Там отображён адрес в памяти внутри ПЛК и адрес регистра ModBus. Какой из этих адресов задаётся в OPC Universal Modbus Server? И как мне реализовать побитовое чтение OPC сервером состояние восьми дискретных входов ПЛК100? Вот что самое интересное, когда собирался связаться с ОВЕН мне здесь и в техподдержке в один голос все трубили, что мониторинг по Ethernet для MasterScada+OPC+ПЛК ОВЕН реализовывается на ура. Когда я начал сейчас заниматься, ни один не может конкретно объяснить, как реализовать чтение дискретных входов ПЛК100 через Master OPC Universal Modbus Server.

SCADAMaster
22.08.2013, 20:06
В документации на которую выше ссылались , есть рисунок 3.8. Там отображён адрес в памяти внутри ПЛК и адрес регистра ModBus. Какой из этих адресов задаётся в OPC Universal Modbus Server?
Посмотрите также предыдущий раздел документации - про выравнивание переменных в памяти.


И как мне реализовать побитовое чтение OPC сервером состояние восьми дискретных входов ПЛК100?
Считать явно состояние дискретных входов не получится.
Если состояние дискретных входов - это все что вам нужно считать, то добавьте в модуль Modbus (Slave) подэлемент "2 byte". Назначьте этому подъэлементу переменную, например Input_Status.
Теперь в эту биты этой сетевой переменной, вам нужно записывать состояние входов из программы Codesys. На языке ST, это выглядит примерно так:
Input_Status.0:=Input1;
Input_Status.1:=Input2;
Input_Status.2:=Input3;
и т.д.
Чтобы опросить эту переменную в OPC сервере добавьте тег региона Holding_Registers, адрес тега будет 0 (если перед этой переменной в Codesys не было других переменных).

А дальше вытащить из нее биты можно либо в самом ОРС, либо в MasterSCADA при помощи ФБ "Распаковка 32-битного значения" (что лучше).

super100
22.08.2013, 20:56
Вы пишете, что адрес тега будет 0 (если перед этой переменной в Codesys не было других переменных). Имеется в виду только переменные, которые в модуле Modbus (Slave) ? Переменные, описывающие дискретные входа/выхода ПЛК100 не учитываются?

smk1635
22.08.2013, 21:15
Вы пишете, что адрес тега будет 0 (если перед этой переменной в Codesys не было других переменных). Имеется в виду только переменные, которые в модуле Modbus (Slave) ?

Верно, имено в Modbus Slave.

super100
24.08.2013, 09:41
Очень признателен всем за помощь. Разобрался. Распаковал в ФБ 32 битную переменную (разложил на отдельные биты). На мнемосхеме каждый бит отобразил. Проблема теперь как при единичном состоянии одного из битов подавать звуковой сигнал? Оператор должен видеть не только визуально сигнал аварийного срабатывания но и слышать. На каждый из 8 дискретных входов ПЛК100 подключена сигнализация. Как привязать звук ?

SCADAMaster
24.08.2013, 17:13
Звук в MasterSCADA можно воспроизводить при появлении сообщений. Но вам больше подойдет вариант воспроизводить звук при помощи скрипта.
Пример скрипта есть в этой теме:
http://www.owen.ru/forum/showthread.php?p=83318#poststop