Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Имитация короткого и длинного нажатия
- В этой теме 30 ответов, 2 участника, последнее обновление 6 лет, 10 месяцев назад сделано manjey73.
-
АвторСообщения
-
29.05.2017 в 09:08 #5968manjey73Участник
SetVal не хочет работать на входной Дорасчетный ТИ, я менял вместо CnlValSet, почему-то не прокатило. Попробую сейчас еще раз, вроде все правильно прописывал.
- Этот ответ был изменен 6 лет, 11 месяцев назад от manjey73.
29.05.2017 в 10:14 #5970manjey73УчастникСтрока 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
- Этот ответ был изменен 6 лет, 11 месяцев назад от manjey73.
30.05.2017 в 13:33 #5973MikhailМодераторSetVal нужно использовать внутри формулы в таблице Формул.
30.05.2017 в 14:16 #5975manjey73УчастникПонятно, попробую через нее реализовать..
30.05.2017 в 15:25 #5976manjey73УчастникСобственно из формулы работает, только тогда неясность такая, которая приводит к путанице. Во входных каналах мы можем просто использовать Val(№ канала) а для каналов управления должны SetVal(№ канала) засунуть в формулу. Почему не так же, как для входных ?
31.05.2017 в 08:42 #5977MikhailМодераторДопустим мы помещаем SetVal в формулу для канала управления. Что в этом случае должна возвращать SetVal? Если она будет возвращать нормальное число double, то будет отправляться команда. Если будет возвращать double.NaN, то команда отправляться не будет, а будет только устанавливаться значение во входной канал.
31.05.2017 в 09:15 #5978manjey73УчастникТак SetVal(n, val) подразумевает запись значения во входной канал, и далее все логично, если в канале управления не прописан Номер команды, то это равносильно double.NaN для остальных модулей. Если Номер команды прописан, то соответственно его выполнить. Просто иногда разный подход путает, и если по каким-то причинам сделано именно так, то стоило бы в документации сделать акцент на таких вещах с маленькими примерами. Быстрее бы двигалось….
Я вот понял, что любую формулу необходимо делать с возвращаемым значением double, даже если мне нужен bool сигнал. Просто потом пишу return Convert.ToDouble(q) например. Тогда созданные формулы можно использовать внутри других формул…
31.05.2017 в 18:09 #5985MikhailМодераторВозможно, имеет смысл добавить возврат double.NaN. Пока сделайте для неё обёртку в таблице формул.
01.06.2017 в 14:38 #5994MikhailМодераторСделал обновление, ссылка на скачивание.
Функции SetVal и SetStat теперь возвращают значение — то, которое ему передано. Чтобы на совсем отменить передачу команды Коммуникатору теперь можно просто убрать номер команды в таблице каналов управления.
Также добавлена функция SetData, которая позволяет установить значение и статус.08.06.2017 в 10:33 #6051manjey73УчастникОй, что-то я просмотрел данное обновление, попробую…
Раз добавили SetData, то параметры где можно посмотреть ?08.06.2017 в 16:31 #6062MikhailМодераторТ.к. Вы продвинутый пользователь, то в C:\SCADA\ScadaServer\Log\CalcEngine.cs 🙂
Страница http://doc.rapidscada.net/content/ru/software-configuration/using-formulas.html будет обновлена, когда эта версия официально выйдет.
20.06.2017 в 09:09 #6216manjey73Участник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: Значение не может быть неопределенным.20.06.2017 в 09:17 #6217manjey73УчастникТорможу, но с этим надо что-то делать…
Связано с тем, что настраиваю я на Windows, а все должно переноситься на Raspberry.На Windows соответственно не работает драйвер KpRpi3.dll обрабатывающий GPIO компьютера и не работает так же опрос датчиков температуры 1Wire.
Как в таком случае выполнять настройки на Windows и проверять работоспособность ?
Получается только вслепую фактически.
Если с КОМ портами понятно, можно изменить потом просто путь к порту, то с драйверами, которые работать будут только на конечном устройстве швах…20.06.2017 в 09:52 #6218manjey73УчастникСделать соответствующие поправки для Mono варианта Scada. Сейчас валится с ошибками.
Заодно то же самое сделать для SetStat, чтобы работало напрямую из формул Администратора.
На Windows вроде работает при записи в канале управления SetVal(n, val)
20.06.2017 в 15:33 #6234MikhailМодераторКак написал в другой теме, из-за этой ошибки настройки модуля не загружаются, и он не может нормально работать. Предлагаю дождаться обновления на след. неделе, т.к. там будут новые полезные для работы функции.
Если срочно, то могу выслать сборку модуля, которая не будет выдавать этой ошибки. -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.