evg

Созданные ответы форума

Просмотр 15 сообщений - с 31 по 45 (из 59 всего)
  • Автор
    Сообщения
  • в ответ на: Математический расчёт #18299
    evg
    Участник

    Там просто вместо возвращаемого значения формула должна устанавливать это значение во входном канале (101) через SetVal()

    Благодарю попробуем.

    evg
    Участник

    Всё таки, что это может быть и куда копать?

    По логам нашёл команду ТУ, после которой сервер перестаёт отвечать. Пока что её отключил. Команда довольно простая, она добавляет единицу входному каналу, исходя от значения другого входного канала — через модуль автоуправления. Повтор стоит на каждые 3 часа. До этого всё нормально было без сбоев.

    evg
    Участник

    2021-02-06 07:15:58; Получена команда 0x03 (запись текущего среза) от клиента 127.0.0.1
    2021-02-06 07:49:48; Ошибка при обработке новых текущих данных:
    System.Threading.ThreadAbortException: Поток находился в процессе прерывания.
    в System.Threading.Monitor.Enter(Object obj)
    в Scada.Server.Svc.MainLogic.RaiseOnCurDataProcessed(Int32[] cnlNums, Srez curSrez)
    в Scada.Server.Svc.MainLogic.ProcCurData(Srez receivedSrez)
    2021-02-06 07:49:48; Ошибка при приёме и обработке данных от клиента 127.0.0.1: Поток находился в процессе прерывания.
    2021-02-06 07:49:48; Ошибка при взаимодействии с клиентом 127.0.0.1: Поток находился в процессе прерывания.
    2021-02-06 07:49:48; Прослушиватель соединений остановлен
    2021-02-06 07:49:58; Ошибка при выполнении действий после вычисления дорасчётных каналов текущего среза в модуле ModAutoControl: Поток находился в процессе прерывания.
    2021-02-06 07:49:58; Команда ТУ: канал упр. = 507, ид. польз. = 1
    2021-02-06 07:49:58; Ошибка при выполнении действий при остановке работы сервера в модуле ModDBExport: Ссылка на объект не указывает на экземпляр объекта.
    2021-02-06 07:49:58; Работа сервера прервана
    2021-02-06 07:49:58; Служба ScadaServerService остановлена

    В 7:15 получается сервер перестал отвечать, в 7:49 я его перезапустил. И в 11:20 он опять перестал отвечать.

    • Этот ответ был изменен 3 года, 2 месяца назад от evg.
    • Этот ответ был изменен 3 года, 2 месяца назад от evg.
    в ответ на: Математический расчёт #18287
    evg
    Участник

    Благодарю, всё сработало. А теперь ещё вопрос можно ли это всё сделать через команду ТУ? К примеру на 102 канал я задаю значение 10, и производится вычисление.

    evg
    Участник

    а если после 10-ти ввести 11-ть тоже ведь должна сработка быть? 11-ть так же меньше 12-ти

    Да, но там будут и десятичные значения. Ладно раз нет простых решений, обойдёмся тем что есть..

    evg
    Участник

    Вам нужен триггер другого типа — триггер на данные.

    когда я ввожу данные ниже 12 триггер срабатывает, когда я ввожу опять данные ниже 12 триггер не срабатывает, т.е. когда значение входного канала изменяется на значение меньше 12 — повторно, то триггер не сабатывает, так как он по умолчанию стоит на одноразовую сработку; мне нужно чтобы он срабатывал каждый раз когда изменяются значения которые ниже 12, а не 1 раз. Поэтому я искал лазейки, через триггер на «команду ТУ», или через триггер на «изменение данных». Так же хотел через сброс статуса решить эту задачку, но тоже не всё там получилось. Частично решил это установкой таймера на повтор в «триггере на данные», но полноценно это не решает проблемы, так как счётчик повтора сбивается когда перезапускается сервер. Т.е. команды ТУ будут отправляться пока сохраняется низкое значение во входном канале, но так как промежуток у меня выставлен в 3 часа это не особо практично. Желательно чтобы команды ТУ, отправлялись сразу при изменении данных во входном канале, которые по числовому значению ниже 12, даже если значения несколько раз подряд устанавливаются ниже 12. К примеру значение на 101 канал 10 — поисходит сработка отправляется команду ТУ, затем значение 9 — сработка отправляется команда ТУ, затем 5 сработка отпраляется команда ТУ. Вот такое нужно чтобы было сработка триггера на каждое изменение во входном канале которое будет ниже 12.

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

    Ещё было бы неплохо, чтобы этот триггер «на изменения данных» срабатывал не на любое изменение, а на изменение данных, которые будут не ниже 12 к примеру. А на те что выше, чтобы реакции не было.
    https://ibb.co/QJfpstL

    evg
    Участник

    В триггере может быть двойное условие. Сделайте скриншот.

    https://ibb.co/TPdh7gg

    evg
    Участник

    Да вроде есть там.
    Триггер на данные канала — Значение — Редактирование значения и выберите Условия

    Ну оно работает не так как мне нужно, если я к примеру введу два раза значения равные меньше 12, то триггер сработает один раз. Чтобы сработал два раза нужно вести значение больше 12 а затем опять ниже 12. Вот..
    Поэтому нужно чтобы была реакция на команду ТУ, т.е. «триггер на команду ТУ». В этом варианте есть поле Значение, но там нельзя выставить больше/меньше… Может у меня старая версия модуля автоуправления?

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

    А можно ли как-то сделать чтобы триггер реагировал на команду ТУ не точным числовым значением, а значением «>» или «<» ? К примеру отправляю я команду ТУ на входной канал значение 10, и в этом случае, если это значение меньше 12 должен сработать триггер. Вроде не сложно, но такой функции в модуле я не нашёл. Если пишу в модуле к примеру так «<12» Выбивается ошибка требуется вещественное число.

    • Этот ответ был изменен 3 года, 2 месяца назад от evg.
    в ответ на: Как использовать формулы ? #18242
    evg
    Участник

    Convert.ToInt32(Cmd) по идее будет правильным

    СПАСИБО! Помогло!

    в ответ на: Как использовать формулы ? #18230
    evg
    Участник

    Так же очень интересно как установить статус входному каналу через Команду — Rapid SCADA? Если я прописываю формулу SetStat(101, 10) присваивается 10-й статус каналу 101, при добавлении Cmd вместо 10 сервер падает.
    Строка 3105, колонка 138: error CS1503: Argument 1: cannot convert from ‘double’ to ‘int’

    • Этот ответ был изменен 3 года, 2 месяца назад от evg.
    в ответ на: Как использовать формулы ? #18226
    evg
    Участник

    Всем привет. Нужна опять помощь по формуле. Нужно следующее.
    Допустим если я вношу в 101 канал значение 10 и если это значение меньше 12, то передать в 102 канал единицу.
    Затем если я опять вношу в 101 канал, значение 11 и если это значение меньше 12, то передать в 102 канал ещё одну единицу.
    Итого в 102-м канале будет значение 2 и так далее. Т.е. переданные единицы суммируются.
    Т.е. я так предполагаю формула должна реагировать на команду ТУ (Cmd) при вводе значения ниже 12, добавлять в 102 канал единицу.

    • Этот ответ был изменен 3 года, 2 месяца назад от evg.
    в ответ на: Переход с 5.1 на 5.8 версию #18213
    evg
    Участник

    Добрый день!
    У Вас, похоже, была очень старая версия.
    Откройте файл схемы в текстовом редакторе, найдите открывающий и закрывающий теги Elements. Их нужно заменить на Components:

    Здравствуйте! Да так и есть, поэтому и планирую обновить версию скады. Благодарю помогло — всё стало отображаться.

    в ответ на: Как использовать формулы ? #18197
    evg
    Участник

    По второму пункту
    Нужно создать канал управления для отправки почты.
    В зависимости от того что хочется (ручная отправка или автоматическая) нужно будет вбивать строку вручную или автоматизировать модулем автоматического управления.

    Благодарю, сейчас попробую. Нужна автоматическая отправка заготовленного сообщения.

    • Этот ответ был изменен 3 года, 2 месяца назад от evg.
    • Этот ответ был изменен 3 года, 2 месяца назад от evg.
Просмотр 15 сообщений - с 31 по 45 (из 59 всего)