Имитация короткого и длинного нажатия

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

Просмотр 15 сообщений - с 16 по 30 (из 31 всего)
  • Автор
    Сообщения
  • #5968
    manjey73
    Участник

    SetVal не хочет работать на входной Дорасчетный ТИ, я менял вместо CnlValSet, почему-то не прокатило. Попробую сейчас еще раз, вроде все правильно прописывал.

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

    Строка 759, колонка 100: error CS1502: Наиболее подходящий перегруженный метод для «System.Convert.ToDouble(object)» имеет несколько недопустимых аргументов
    Строка 759, колонка 117: error CS1503: Аргумент «1»: преобразование типа из «void» в «object» невозможно

    Вот что пишет сервер, если в канале управления прописать SetVal(№ канала, Cmd)

    public void CalcCmdVal190(ref double cmdVal) { try { BeginCalcCmdData(190, cmdVal, null); cmdVal = Convert.ToDouble(SetVal(190, Cmd)); } finally { EndCalcCmdData(); }}

    Вот что в CalcEngine.cs

    • Этот ответ был изменен 4 года, 1 месяц назад от manjey73.
    #5973
    MikhailMikhail
    Модератор

    SetVal нужно использовать внутри формулы в таблице Формул.

    #5975
    manjey73
    Участник

    Понятно, попробую через нее реализовать..

    #5976
    manjey73
    Участник

    Собственно из формулы работает, только тогда неясность такая, которая приводит к путанице. Во входных каналах мы можем просто использовать Val(№ канала) а для каналов управления должны SetVal(№ канала) засунуть в формулу. Почему не так же, как для входных ?

    #5977
    MikhailMikhail
    Модератор

    Допустим мы помещаем SetVal в формулу для канала управления. Что в этом случае должна возвращать SetVal? Если она будет возвращать нормальное число double, то будет отправляться команда. Если будет возвращать double.NaN, то команда отправляться не будет, а будет только устанавливаться значение во входной канал.

    #5978
    manjey73
    Участник

    Так SetVal(n, val) подразумевает запись значения во входной канал, и далее все логично, если в канале управления не прописан Номер команды, то это равносильно double.NaN для остальных модулей. Если Номер команды прописан, то соответственно его выполнить. Просто иногда разный подход путает, и если по каким-то причинам сделано именно так, то стоило бы в документации сделать акцент на таких вещах с маленькими примерами. Быстрее бы двигалось….

    Я вот понял, что любую формулу необходимо делать с возвращаемым значением double, даже если мне нужен bool сигнал. Просто потом пишу return Convert.ToDouble(q) например. Тогда созданные формулы можно использовать внутри других формул…

    #5985
    MikhailMikhail
    Модератор

    Возможно, имеет смысл добавить возврат double.NaN. Пока сделайте для неё обёртку в таблице формул.

    #5994
    MikhailMikhail
    Модератор

    Сделал обновление, ссылка на скачивание.
    Функции SetVal и SetStat теперь возвращают значение — то, которое ему передано. Чтобы на совсем отменить передачу команды Коммуникатору теперь можно просто убрать номер команды в таблице каналов управления.
    Также добавлена функция SetData, которая позволяет установить значение и статус.

    #6051
    manjey73
    Участник

    Ой, что-то я просмотрел данное обновление, попробую…
    Раз добавили SetData, то параметры где можно посмотреть ?

    #6062
    MikhailMikhail
    Модератор

    Т.к. Вы продвинутый пользователь, то в C:\SCADA\ScadaServer\Log\CalcEngine.cs 🙂

    Страница http://doc.rapidscada.net/content/ru/software-configuration/using-formulas.html будет обновлена, когда эта версия официально выйдет.

    #6216
    manjey73
    Участник

    2017-06-20 08:58:41 <RI080-PC><СИСТЕМА><EXC> Ошибка при выполнении действий при запуске работы сервера в модуле ModAutoControl: Метод не найден: «Int32 Scada.ScadaUtils.GetAttrAsInt(System.Xml.XmlElement, System.String)».

    Выдало такую ошибку при замене скачанных файлов.
    И еще все время выдает
    2017-06-20 08:58:50 <RI080-PC><СИСТЕМА><EXC> Ошибка при выполнении действий после вычисления дорасчётных каналов текущего среза в модуле ModAutoControl: Значение не может быть неопределенным.

    #6217
    manjey73
    Участник

    Торможу, но с этим надо что-то делать…
    Связано с тем, что настраиваю я на Windows, а все должно переноситься на Raspberry.

    На Windows соответственно не работает драйвер KpRpi3.dll обрабатывающий GPIO компьютера и не работает так же опрос датчиков температуры 1Wire.

    Как в таком случае выполнять настройки на Windows и проверять работоспособность ?
    Получается только вслепую фактически.
    Если с КОМ портами понятно, можно изменить потом просто путь к порту, то с драйверами, которые работать будут только на конечном устройстве швах…

    #6218
    manjey73
    Участник

    Сделать соответствующие поправки для Mono варианта Scada. Сейчас валится с ошибками.

    Заодно то же самое сделать для SetStat, чтобы работало напрямую из формул Администратора.

    На Windows вроде работает при записи в канале управления SetVal(n, val)

    #6234
    MikhailMikhail
    Модератор

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

Просмотр 15 сообщений - с 16 по 30 (из 31 всего)
  • Вы должны авторизироваться для ответа в этой теме.