Статус входного канала по нажатию кнопки

Стартовая страница Форумы Понять, как работает ПО Использование формул Статус входного канала по нажатию кнопки

Просмотр 15 сообщений - с 1 по 15 (из 29 всего)
  • Автор
    Сообщения
  • #16845
    vg
    Участник

    Здравствуйте!

    Из текстового файла считываю данные (числа и даты) во входные каналы. Образуется несколько «наборов»(то есть несколько экземпляров данных, вычисленных в разное время). В представлении (схема) отображается лишь один набор.

    Задача:
    По нажатию кнопки менять отображения наборов.

    Собственно я пытаюсь реализовать это с помощью модуля автоматического управления. Сделал триггер на команду ТУ, добавил команды. Создал каналы управления, в которых задаю в «пустой» канал значения в зависимости от нажатой кнопки. То есть формула SetVal(n, val) отрабатывает. А SetStat(n, stat) или SetData(n, val, stat) не проходят. Не понимаю причины. Пробовал задавать передаваемое значение статуса и переменными и константными числами.

    #16850
    vg
    Участник

    Поправка:
    При использовании SetData значение канала меняется, а статус нет.
    Цвет фона в элементе Динамический текст установлен на Status.
    Тип команд использую Стандартные.

    • Этот ответ был изменен 3 года, 8 месяцев назад от vg.
    #16853
    Mikhail
    Модератор

    Добрый день!
    На схемах отображаются текущие данные. Сделайте, пожалуйста, скриншоты настроек, и опубликуйте логи, которые поясняют проблему.

    #16854
    vg
    Участник

    https://ibb.co/k96wdPP Настройка модуля автоматического управления

    https://ibb.co/CWqbnmg Входные каналы, в которых меняю значения

    https://ibb.co/JpVBkcz Каналы управления

    Лог ScadaServerSvc:

    2020-08-04 17:27:34 Служба ScadaServerService 5.1.3.0 запущена
    2020-08-04 17:27:34 Загружен модуль из файла C:\SCADA\ScadaServer\Mod\ModAutoControl.dll
    2020-08-04 17:27:34 Проверка существования директорий данных выполнена успешно
    2020-08-04 17:27:34 Проверка существования файлов базы конфигурации выполнена успешно
    2020-08-04 17:27:34 Входные каналы считаны из базы конфигурации. Количество активных каналов: 551
    2020-08-04 17:27:34 Каналы управления считаны из базы конфигурации
    2020-08-04 17:27:34 Пользователи считаны из базы конфигурации
    2020-08-04 17:27:34 Формулы считаны из базы конфигурации
    2020-08-04 17:27:34 Исходный код формул калькулятора откомпилирован
    2020-08-04 17:27:34 Прослушиватель соединений запущен
    2020-08-04 17:27:34 Запуск работы сервера
    2020-08-04 17:27:34 Соединение с клиентом 127.0.0.1
    2020-08-04 17:27:34 Пользователь ScadaComm успешно аутентифицирован
    2020-08-04 17:27:34 Текущий срез загружен
    2020-08-04 17:27:34 Соединение с клиентом 127.0.0.1
    2020-08-04 17:27:34 Пользователь ScadaWeb успешно аутентифицирован
    2020-08-04 17:27:35 Проверка имени и пароля пользователя operator. Результат: верно
    2020-08-04 17:27:38 Получена команда 0x06 (команда ТУ) от клиента 127.0.0.1
    2020-08-04 17:27:38 Команда ТУ: канал упр. = 201, ид. польз. = 14
    2020-08-04 17:27:38 Команда ТУ: канал упр. = 290, ид. польз. = 14
    2020-08-04 17:28:41 Отключение клиента 127.0.0.1

    В логах проблемы не вижу.

    • Этот ответ был изменен 3 года, 8 месяцев назад от Mikhail.
    #16855
    vg
    Участник

    Я нажимаю на кнопку, у которой в свойствах заданы «Канал управления» — 201, Действие — Отправить команду сразу.

    В модуле автоматического управления создан триггер на канал 201. К триггеру добавлена команда ТУ — 290.

    Если я правильно понял, то по нажатию кнопки и срабатыванию триггера на канал 201 происходит выполнение команды 290.
    По крайней мере значения в канале и на представлении «схема» изменяются.

    • Этот ответ был изменен 3 года, 8 месяцев назад от vg.
    #16858
    a80808
    Участник

    Коллеги, может не в тему — а как читать из текстового файла? Это можно сделать формулами?
    Я пытался в версии 5.6 читать методом System — пишет «Метод не поддерживается»…

    Буду весьма признателен…

    #16860
    vg
    Участник

    Например так:

    string path = «путь к файлу»;

    …какая то функция…
    {
    string[] readResult = System.IO.File.ReadAllLines(path, Encoding.UTF8);
    return Convert.ToDouble(readResult[номер нужной строки]);
    }

    • Этот ответ был изменен 3 года, 8 месяцев назад от vg.
    #16862
    vg
    Участник

    В общем как это обычно и бывает сам ошибся, сам исправился.

    Изменив тип канала, для которого я по кнопке задавал значение, на «Телеизмерение» статус также стал меняться.

    #16868
    vg
    Участник

    Столкнулся с другой проблемой:

    По умолчанию во входных каналах, значения которых отображаю на схеме, нет никаких значений (флаг «Исп. формулу» отсутствует).

    По нажатию кнопки устанавливаю один из «наборов». Появляется значение, и индикация в зависимости от статуса. Но по прошествию некоторого времени статус всех этих каналов сбрасывается на 5(Параметр недостоверен). То есть он определён, но недостоверен.

    Каким образом определяется недостоверность?

    Вероятно проблема в том, что каналы «телеизмерение» некоторое время находятся неактивными, но с «дорасчётными» не меняется статус.

    Беда прям)

    • Этот ответ был изменен 3 года, 8 месяцев назад от vg.
    #16870
    manjey73
    Участник

    Временем определяется, судя по всему надо статус подтверждать. Не совсем понятно, что вы хотите получить… ?

    a80808 я читал и писал файлы в формулах retain, которую делал для Raspberry, в теме формул должно быть.

    #16871
    vg
    Участник

    Можно ли установить постоянное значение и статус во входной канал без флага использования формулы через каналы управления?

    #16872
    vg
    Участник

    manjey73

    Хочу добиться отображения «набора» данных с индикацией по статусу. Но задавать какой набор отображать нажатием кнопки. Есть конечно идея формулами реализовать, но с помощью модуля автоматического управления выглядит симпатичнее, на мой вкус.

    #16873
    manjey73
    Участник

    ТИ и ТС каналы обрабатываются иначе, если не ошибаюсь им важна связь с Коммуникатором.

    Вам нужно задавать какое-то значение для дальнейших действий ? типа уставки или что ?
    Используйте дорасчетные каналы.

    не совсем понимаю о чем вы пишите. При чем тут статусы ?
    и что такое «набор» данных ?

    • Этот ответ был изменен 3 года, 8 месяцев назад от manjey73.
    #16875
    manjey73
    Участник

    Модуль автоуправления позволяет сравнивать несколько условий.

    например дорасчетный канал 0 — один набор И статус другого канала х — набор такой то
    канал 1 И статус другого канала y — набор иной.

    #16876
    vg
    Участник

    Нет, уставки реализованы уже. Там порядок.

    У меня есть софт, который выдаёт результаты диагностики в БД.
    Я забираю из БД эти данные и формирую текстовый файл, который содержит в себе данные по этим диагностикам. Но диагностик нужно несколько, чтобы иметь возможность просмотреть всё это с помощью SCADA (грубо говоря архив диагностик). Данные по одной из диагностик это и есть один набор. Таких наборов соответственно несколько. Но чтобы отобразить несколько одного экрана мало. Поэтому хочу менять отображение наборов данных нажатием кнопки. Но так как полученные параметры это числа я хочу осуществить индикацию ячеек, в которых эти числа отображены. Поэтому по нажатию кнопки, например «1», я хочу отобразить набор №1 с соответствующей индикацией. А динамическая индикация реализуется в свою очередь через определение статуса. Поэтому по нажатию кнопки мне нужно установить и значение и статус.

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

    • Этот ответ был изменен 3 года, 8 месяцев назад от vg.
Просмотр 15 сообщений - с 1 по 15 (из 29 всего)
  • Вы должны авторизироваться для ответа в этой теме.