8

Путь данных, от датчика до базы данных

В данном посте попробую максимально понятно отобразить суть промышленных сетей управления/диспетчеризации на примере измерения двух параметров.

Мы имеем два регистра хранения в адресном пространстве Modbus Это, один из старейших протоколов построения промышленных информационных сетей https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/

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

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

В регистрах хранения, по адресам 40001 и 40002, В  устройстве с адресом-1  разместим соответствующие данные. Протокол связи указан вверху.

Для связи нашего устройства с верхним уровнем используем OPC- сервер. Нам вполне хватит демоверсии на 32 тэга. Стоит отметить, что устройства могут связываться по любому физическому и логическому интерфейсу. Нами используется RS232/485

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

Сконфигурируем сервер

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

Файл конфигурации https://ru.files.fm/u/pgrquj89p

Для связи использовал

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

В режиме коннектора через СОМ4.

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

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

Фух, если все получилось, половина работы сделана! Вы молодцы.

Переходим к верхнему уровню.

В программе SCADA, используем Омрон супервайзер, прописываем эти тэги, В файле конфигурации  OPC они отобразятся как:

<CXOPCProject>

<GROUP NAME="Group1" UPDATERATE="1000"

TIMEBIAS="1049" DEADBAND="0.000"

LOCALEID="1049" ISPUBLIC="FALSE"

ISADVISED="FALSE" ISACTIVE="TRUE"

ISENABLED="TRUE">

<ITEM NAME="Node1.Device1.DIN.Tag1" ITEMID="Node1.Device1.DIN.Tag1"

ACCESSPATH="" DATATYPE="3"

ISACTIVE="TRUE">

</ITEM>

<ITEM NAME="Node1.Device1.DIN.Tag2" ITEMID="Node1.Device1.DIN.Tag2"

ACCESSPATH="" DATATYPE="3"

ISACTIVE="TRUE">

</ITEM>

</GROUP>

</CXOPCProject>


При запуске исполняемого файла, сервер запустится в фоне автоматически, будет связь. Для локальной машины путь можно не указывать.

Запускаем на исполнение:

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

Меняем значение на датчике, меняются в SCADA? если так, то Вы еще раз молодцы! 2/3 работы сделано! Отметим, регистры хранения могут меняться и с верхнего уровня, если в свойствах назначить R/W.

Переходим к отправке данных на хранение в БД.

Создаем базу данных MS-acess, с требуемым количеством столбцов.

Далее, в среде разработки подключаемся к ней, столбы будут видны. Подключаться можно как напрямую, так и через DSN-файл

Для подключения используем следующие параметры:

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

В третьем поле разместим ссылку на системный тег с информацией о времени(таймштамп) В свойствах обращения к БД зададим интервал 5 сек. Запускаем всё.И в БД каждые пять сек, должны писаться значения трех тэгов.

Путь данных, от датчика до базы данных Scada, База данных, IT, Как это сделано, Длиннопост

Если всё получилось, то Вы окончательно молодцы!


Как это работает, логгируются данные с любого физического датчика. А уж как использовать, тут не хватит фантазии!