Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Запись в архив по изменению состояния дискретной переменной

  1. #1

    По умолчанию Запись в архив по изменению состояния дискретной переменной

    MasterSCADA производит опрос архива ПЛК посредством OPC сервера HDA. Значение HDA - десятичное. Раскладываем его на биты и получаем дискретные значения(логическое состояние отдельных процессов записанных в архив ПЛК). Теперь задача записать в SQL архив отдельных дискретных значений с меткой времени изменения данных битов. В SQL 2 поля: время(берем время HDA переменной) и значение(значение отдельного дискрета после разложения). Время HDA тега изменяется при любом изменении HDA тега, а нам нужно отследить именно время изменения данного бита. Eсли не подавать сигнал "Выполнить" процедуре на запись в SQL, а просто выбрать запись "по изменению входов", то получаем кучу одинаковых значений с разным временем, или даже разные значения с одним и тем же временем. Нужен сигнал на запись в базу только при изменении логического состояния данного бита. Каким образом можно реализовать данный сигнал?
    Также в дальнейшем потребуется тренд и/или таблица со всеми архивными значениями данных битов за заданный промежуток времени, например, сутки или месяц. Как это можно реализовать?

  2. #2

    По умолчанию

    Поясните.
    Вы читаете архив по HDA, после этого полученные значения вы разбираете на биты - каким образом? ФБ "Распаковка" будет работать только с дейсвующим значением, а не с архивом. Или вы написали скрипт?
    Или же у вас по HDA сразу приходит биты?

    По передаче данных в SQL у нас есть документация.
    http://www.masterscada.ru/services/s.../BD_Part_1.pdf
    http://www.masterscada.ru/services/s.../BD_Part_2.pdf
    Вам нужно посмотреть режим экспорта. Экспорт можно включить как у конкретных объектов, так и HDA серверов.
    Спасибо.

  3. #3

    По умолчанию

    Помещаю HDA в SQL из него посредством процедуры читаю архивные данные и распаковываю функцией "распаковка аналогового 32 значения". Далее нужно взять отдельный бит и поместить его процедурой в архив, но без формирования сигнала выполнить правильного заполнение таблицы SQL не получается, как я уже написал. Как определить изменение состояния данного бита и по этому условию сформировать сигнал "Выполнить" в процедуре?
    Как сформировать тренд по архивным данным?

  4. #4

    По умолчанию

    Цитата Сообщение от MoZg Посмотреть сообщение
    Помещаю HDA в SQL из него посредством процедуры читаю архивные данные и распаковываю функцией "распаковка аналогового 32 значения". Далее нужно взять отдельный бит и поместить его процедурой в архив, но без формирования сигнала выполнить правильного заполнение таблицы SQL не получается, как я уже написал. Как определить изменение состояния данного бита и по этому условию сформировать сигнал "Выполнить" в процедуре?
    А зачем вообще в данном нужен SQL? Какой у вас используется HDA сервер? Нельзя сделать разбор на биты на этапе ОРС сервера, а уже затем записывать в отдельные HDA теги?
    Если разобрать значение заранее нельзя, то тогда единственный вариант - это скрипт C#. С помощью скрипта читать архив значения, анализировать изменение значения (изменилось значение - изменился бит), а затем записывать значения битов на выходы скрипта.
    В принципе скрипт не очень сложный.

    Цитата Сообщение от MoZg Посмотреть сообщение
    Как сформировать тренд по архивным данным?
    А в чем возникла трудность? Добавляете нужные переменные на тренд.
    Посмотрите видео по трендам.
    http://www.masterscada.ru/?additional_section_id=233
    Спасибо.

  5. #5

    По умолчанию

    HDA сервер - Master OPC universal modbus server. Подскажите, как должен выглядеть срипт в OPC сервере, либо, как должен выглядеть скрипт на C# в MasterSCADA.

  6. #6

    По умолчанию

    А в OPC сервере у вас формируется архив с помощью скрипта или вы просто включили автоматическую запись? Если у вас автоматическая запись, то можно обойтись без скрипта - создайте нужное количество тегов, включите у каждого из них извлечение бита. Включите у этих тегов автоматическую запись HDA, по изменению.

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

  7. #7

    По умолчанию

    В OPC сервере архив формируется с помощью скрипта.
    Сигнал на запись в архив по изменению состояния логической переменной написал посредством ST скрипта, но столкнулся с проблемой обработки архивных значений. Скрипт обрабатывает только те изменения значений которые приходят из OPC сервера после запуска программы, а мне необходимо обработать и все архивные значения за предыдущий период, которые накоплены в архиве ПЛК. Как мне добиться обработки всего архива ПЛК?
    Программу прикладываю. https://yadi.sk/d/s7JeiDJSUroye

  8. #8

    По умолчанию

    Из ST нельзя обратится к архиву - это можно делать только на C#.
    Вам нужно адаптировать скрипт C# который мы приложили.
    Спасибо.

  9. #9

    По умолчанию

    Посмотрел Ваш скрипт, Вы получаете массив значений, а мне необходимо получать штамп времени + значение. Можете подсказать как получить элемент архива со всеми полями (мне необходимо вытягивать Value и штамп времени). С ходу не смог найти в документации как пробежаться по архиву получая все данные элементов.

  10. #10

    По умолчанию

    Получается массив архивный значений, а каждое значение содержит три атрибута - значение, метка времени, признак качества.
    В этой строке получается значение:
    Val=(double)element.Value;
    Можно также получить и атрибут времени:
    element.Time
    Признак качества:
    element.Quality
    Спасибо.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. запись переменной в флеш память плк
    от alexval2006 в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 12.05.2020, 12:18
  2. Регулировка мощности нагрева по изменению температуры
    от Plastor в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 02.09.2019, 09:36
  3. Ответов: 2
    Последнее сообщение: 30.08.2013, 16:40
  4. Ответов: 3
    Последнее сообщение: 22.08.2013, 18:30
  5. Ответов: 4
    Последнее сообщение: 24.04.2009, 10:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •