Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › сохранение значений по команде
- В этой теме 51 ответ, 6 участников, последнее обновление 4 года, 3 месяца назад сделано Romiros.
-
АвторСообщения
-
17.11.2019 в 09:58 #14111timon84Участник
Здравствуйте. Помогите, пожалуйста, разобраться с работой каналов управления и входных каналов.
С входными каналами и простейшими формулами в них немного разобрался, а вот с каналами управления затор.
Итак, если можно пошагово опишите как решить 2 задачи:
1. по нажатию на кнопку на схеме входной канал 11 (дорасчетные ТИ) принимает и хранит для дальнейших расчетов значение канала 7 (Телеизмерение).
При повторном нажатии происходит новое сохранение.2. По нажатию на кнопку на схеме необходимо ввести значение и отправить его по ModBus.
Спасибо.
P.S. встречал ссылки на форуме на некоторые мануалы, но они все «битые».17.11.2019 в 10:53 #14112RomirosУчастникПримерно так:
1. Создайте канал управления, поставьте галочку использовать формулу. Формула SetVal(11, Val(7)). Тип команды — стандартная.
Кнопке на схеме укажите данный номер канала управления. Действие — отправить команду сразу.
2. Создайте канал управления. Тип команды стандартная, номер команды из вашего КП.
Кнопке привяжите этот канал, действие — отправить команду.17.11.2019 в 17:23 #14113timon84УчастникОгромное СПАСИБО!!!
Все оказывается довольно просто, но нигде не описано. 1,5 суток бился с этим.18.11.2019 в 13:24 #14114MikhailМодераторНаша база знаний — это форум )
19.11.2019 в 10:45 #14117ViktorDVУчастникПодскажите пожалуйста как проще написать скрипт для использования в следующей ситуации. По каналу телеизмерение получаю код от 0 до 12. Необходимо в зависимости от кода каналу присвоить определенное значение. Вроде все понятно ….А вот и сел в лужу…
19.11.2019 в 11:35 #14118manjey73УчастникЗначение текстовое ? потому что если цифровое то оно и так от 0 до 12
19.11.2019 в 14:50 #14121ViktorDVУчастникОно то цифровое, но надо в зависимости от кода присвоить каналу номинал 32,50,63,80,100 и т.д. до 1500. Создал массив от 0 до 11 со значением от 32 до 1500
И читаю с массива по коду 0 — 32, 1 — 50 … и т.д. и не могу в до расчетный канал вывести данные в скаде….Это же так просто…Ан нет, дрова! Ошибку вебстанция фиксирует….19.11.2019 в 14:52 #14122ViktorDVУчастникКоду полученному соответствует индекс массива
19.11.2019 в 15:00 #14123ViktorDVУчастникint CodInoms[12] = {32,50,… };
19.11.2019 в 15:04 #14124manjey73Участниквы программировали когда нибудь ПЛК или реле на LAD ?
тут такой же принцип, только возвращаемое значение формулы попадает в данные канала.
То есть если вы сделали Дорасчетный канала и указали в нем «Использовать формулу» то значение данной формулы будет возвращено в этот канал.Если формула большая, вы можете ее внести в Справочник — Формулы по аналогии с другими.
Например ваша формула public Znachenie_massiva (double vhodnaya_peremennaya)
{
тут ваши вычесления
return raschetnaya_peremennaya;
}Тогда вы просто в дорасчетном канале используете формулу
Znachenie_massiva(Val(XXX))где XXX это номер канала поступающих данных от 0 до 12 или что там у вас будет.
19.11.2019 в 15:06 #14125manjey73Участникя бы посоветовал использовать всегда double и конвертировать его внутри ваших формул, это позволит использовать формулы внутри формул.
Ну можно и без этого. При возвращении значения ваших расчетов Scada сделает конвертацию в double, так как БД значений в данном формате.19.11.2019 в 15:08 #14126manjey73УчастникПосмотрите формулы в Справочнике, ну и в документации что можно применять внутри формул. Использование формул
19.11.2019 в 15:16 #14127ViktorDVУчастникРебята, за алгоритм и подсказки огромное всем спасибо. Сейчас проверю. Я кажись уже вижу у себя ошибку. Не взыщите если что. На таком простом и сел лужу… Скрипт на более сложное написал и подключил без проблем. А тут….Провозился пол дня….Пришлось помощи просить…
19.11.2019 в 15:24 #14128manjey73УчастникПри перезапуске Сервера он кричит об ошибке например в формулах, указывая строку и т.д. Можно посмотреть в файле CalcEngine.cs в папке лога Сервера.
Одна из причин ошибки как раз то, что код Scada преобразует данные в double
Ну и синтаксические ошибки могут быть в вашей формуле.
А так, есть еще примеры формул на форуме, можете посмотреть что и как.
Я вообще из формул файл записывал и читал…Синтаксис C# соответственно, просто есть некоторые нюансы.
19.11.2019 в 18:15 #14130MikhailМодераторДля отладки сложных формул можно использовать Visual Studio Community Edition. Пример проекта.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.