PDA

Просмотр полной версии : СПК и OPC-сервер ОВЕН



fizhimik
17.07.2018, 17:19
Здравствуйте! Подскажите пожалуйста как подружить СПК107 и OPC-сервер ОВЕН. Хочется вытащить температурные данные с модуля МВ110-224.8А для построения графика тренда в какой нибудь SCADA системе. AC4 в наличии. В этой теме http://www.owen.ru/forum/showthread.php?t=27851&p=264455&viewfull=1#post264455 посоветовали ОРС-сервер ОВЕН, но все равно не понятно как быть и что делать.

Евгений Кислов
17.07.2018, 17:28
Добрый день.
Пример есть в этом документе (п. 4.5):
https://ftp.owen.ru//CoDeSys3/11_Documentation/01_SPK/SPK_OPC_SCADA_v.1.0.pdf

fizhimik
18.07.2018, 13:11
Спасибо! Если я правильно понял, то для получения данных с СПК107 в OPC-сервер ОВЕН необходимо только физическое подсоединение СПК к ПК через USB?

Евгений Кислов
18.07.2018, 13:13
Спасибо! Если я правильно понял, то для получения данных с СПК107 в OPC-сервер ОВЕН необходимо только физическое подсоединение СПК к ПК через USB?

Нет, подключение должно быть по интерфейсу RS-485 или RS-232.

Порт USB B не является коммуникационным - он используется только для загрузки проектов.

fizhimik
18.07.2018, 13:20
Нет, подключение должно быть по интерфейсу RS-485 или RS-232.

Порт USB B не является коммуникационным - он используется только для загрузки проектов.

Тогда получается данные надо считывать с АС4? К какому пункту инструкции стоит обратиться?
При считывании OPC-сервером ОВЕН данных по протоколу Modbus при одновременной работе СПК появляются ошибки.

Евгений Кислов
18.07.2018, 13:29
Тогда получается данные надо считывать с АС4? К какому пункту инструкции стоит обратиться?

В рамках инструкции не конкретизируется интерфейс и способ подключения - потому что это не влияет на настройку обмена.

Как вы верно заметили, один из вариантов - использовать АС4, который выполняет роль шлюза RS-485 (СПК) - USB (ПК).

При настройке обмена вам понадобится указать номер COM-порта СПК. Для СПК1хх порт COM1 имеет номер 2, а порт COM2 - номер 3.

fizhimik
18.07.2018, 13:39
При настройке обмена вам понадобится указать номер COM-порта СПК. Для СПК1хх порт COM1 имеет номер 2, а порт COM2 - номер 3.
Можно подробнее об этом пункте?
АС4 определяется сам как СОМ порт (обычно СОМ5). В OPC-сервере ОВЕН я выбираю именно его (с добалением шаблонов приборов), и чтение данных происходит с ошибкой, при работающем (обязательное условие) СПК107.
Как надо правильно поступить?

Евгений Кислов
18.07.2018, 13:45
У вас есть возможность связаться со мной по Skype? (контакты в подписи)

fizhimik
18.07.2018, 13:58
К сожалению нет пока такой возможности.
В инструкции "СПК. Настройка обмена с верхним уровнем (OPC, SCADA, сетевые переменные)" версии 1.0 нашел такую фразу: стр. 60
"Теперь вам необходимо загрузить проект, созданный в п. 4.5.1 в СПК и подключить COM-порт СПК (напомним, в примере используется COM-порт 2) к ПК – например, с помощью преобразователя интерфейсов АС4. После этого можно переходить к п. 4.6."
Вы это имели ввиду? Следует поступить как указано в этой инструкции?

Евгений Кислов
18.07.2018, 14:07
Да, следует поступить так, как указано в инструкции.

fizhimik
18.07.2018, 14:13
Спасибо! Простите за изначальную невнимательность, вы ведь дали правильную ссылку на документ версии 1.0, а я все время обращался к документу версии 1.1!

fizhimik
18.07.2018, 16:15
Подскажите пожалуйста. В Codesys 3.5 "Объединение (UNION)" можно объявить только одну переменную типа REAL? То есть для вывода большего количества переменных необходимо создавать и большее число "Объединение (UNION)"?

Евгений Кислов
18.07.2018, 17:42
Подскажите пожалуйста. В Codesys 3.5 "Объединение (UNION)" можно объявить только одну переменную типа REAL? То есть для вывода большего количества переменных необходимо создавать и большее число "Объединение (UNION)"?

Достаточно одного объединения, у которого будет много экземпляров.
Или можно на базе одного экземпляра объединения создать функцию, и потом вызывать ее нужное число раз.

fizhimik
19.07.2018, 09:05
Достаточно одного объединения, у которого будет много экземпляров.
Или можно на базе одного экземпляра объединения создать функцию, и потом вызывать ее нужное число раз.

Спасибо. В какой инструкции данные варианты реализации можно посмотреть? Про функцию в "Первом старте" описано (не очень понятно как к объединению ее применить), а чтобы в одном объединении было много экземпляров - это для меня вообще темный лес(пока что).

Евгений Кислов
19.07.2018, 09:25
Экземпляры создаются так:



_rVar_OPC_read1: Real_Word; // экземпляр 1
_rVar_OPC_read2: Real_Word; // экземпляр 2
_rVar_OPC_read3: Real_Word; // экземпляр 3


Далее по аналогии с примером, для каждой REAL переменной вам понадобится в Modbus Slave привязать два WORD от нужного экземпляра.

fizhimik
19.07.2018, 09:51
Экземпляры создаются так:



_rVar_OPC_read1: Real_Word; // экземпляр 1
_rVar_OPC_read2: Real_Word; // экземпляр 2
_rVar_OPC_read3: Real_Word; // экземпляр 3


Далее по аналогии с примером, для каждой REAL переменной вам понадобится в Modbus Slave привязать два WORD от нужного экземпляра.

Простите, тут я уже совсем запутался. В примере в объединении объявляется переменная типа REAL и массив типа WORD, содержащий два элемента.
Я так понял что мне в объединении надо объявить все требуемые мне переменные типа REAL, а как быть с массивом типа WORD? Как они привязываются к переменной типа REAL?

Евгений Кислов
19.07.2018, 09:54
В объединении ничего объявлять не надо - оставьте, как в примере.

В программе PLC_PRG вы создаете экземпляры объединения. В рамках примера такой экземпляр один - _rVar_OPC_read (я сейчас не рассматриваю __rVar_OPC_write - там все будет по аналогии).
Вам надо создать несколько таких экземпляров. Каждый экземпляр фактически будет представлять собой REAL переменную с возможностью доступа к регистрам (это необходимо, что привязать их в Modbus Slave).

fizhimik
19.07.2018, 10:10
Если я правильно понял, то в PLC_PRG создаю экземпляры объединения переменных типа REAL, которые считываются с датчиков?

Евгений Кислов
19.07.2018, 10:13
Да, в PLC_PRG вы создаете экземпляры объединения Real_Word.

fizhimik
19.07.2018, 11:34
Настроил СПК таким образом, но данные в ОВЕН-сервер не передаются. Подскажите, где может быть ошибка? Причем периодически появляется ошибка связи с модулями М110-8А. АС4 подключен параллельно одному из М110-8А.

Евгений Кислов
19.07.2018, 11:38
На последовательной линии связи должен быть только один мастер.
У вас их два - одним из них являются СПК, вторым - OPC-сервер.
Вам нужно подключить АС4 к порту COM2 СПК, в настройках Modbus_COM_1 задать номер порта 3 (так как COM2 имеет ID 3).

fizhimik
19.07.2018, 12:50
Спасибо! Заработало!
Однако одно НО. Передаваемые значения температур равны 0. В Codesys эти значения то же 0. Может ошибка в том что привязку переменных к выводам М110-8А не стоило объявлять в GlobalValues? А надо было в PLC_PRG?

Евгений Кислов
19.07.2018, 12:58
Вам в шаблонах модулей надо привязывать не глобальные переменные, а нужные элементы объединения. Например, надо привязать Application.PLC_PRG.Tcond.rVr вместо вашего текущего Application.Tcond.

fizhimik
19.07.2018, 13:13
Ураааа заработало!!! Спасибо большое!! Может стоит подобное решение внести в инструкцию? Для начинающего пользователя это были очень не очевидные вещи.
И еще вопрос. Получается что я ограничен десятью выходами в ModBus Slave?

Евгений Кислов
19.07.2018, 13:26
В настройках компонента Modbus Slave (Modbus_Serial_Device) доступное число регистров можно увеличить.