PDA

Просмотр полной версии : скрипт для МастерСкада



yurgin_777
28.06.2012, 21:19
Кто может написать скрипт для МастерСкада по этим данным
Очень надо, сам в С# совсем не как.:confused:

За ранее спасибо.

Переменные
«прием» (тип данных строковый вещественный дв. точности)
«Выход_1» (тип данных логический)
«Выход_2» (тип данных логический)

(переменная «прием» принимает значение, 1 или 2 или 3 или 4)
(переменная «Выход_1» и «Выход_2» может быть «вкл» или «выкл»)

Если переменная «прием» <1 и >4
То
«Выход_1»=выкл
«Выход_2»=выкл

Если «прием»
== 1 то
«Выход_1»=выкл
«Выход_2»=выкл
Если «прием»
== 2 то
«Выход_1»=вкл
«Выход_2»=выкл
Если «прием»
== 3 то
«Выход_1»=выкл
«Выход_2»=вкл
Если «прием»
== 4 то
«Выход_1»=вкл
«Выход_2»=вкл

capzap
28.06.2012, 21:43
var foo := «прием» -1;
if foo>4 or foo<0 then foo:=0; end_if
«Выход_1» := foo.0;
«Выход_2» := foo.1;В плк я бы сократил так, в скаде наверное как то так же будет

SCADAMaster
28.06.2012, 21:51
В плк я бы сократил так, в скаде наверное как то так же будет
Этот код не совместим с C# .


Кто может написать скрипт для МастерСкада по этим данным
Очень надо, сам в С# совсем не как.:confused:

За ранее спасибо.

Переменные
«прием» (тип данных строковый вещественный дв. точности)
«Выход_1» (тип данных логический)
«Выход_2» (тип данных логический)

(переменная «прием» принимает значение, 1 или 2 или 3 или 4)
(переменная «Выход_1» и «Выход_2» может быть «вкл» или «выкл»)

Если переменная «прием» <1 и >4
То
«Выход_1»=выкл
«Выход_2»=выкл

Если «прием»
== 1 то
«Выход_1»=выкл
«Выход_2»=выкл
Если «прием»
== 2 то
«Выход_1»=вкл
«Выход_2»=выкл
Если «прием»
== 3 то
«Выход_1»=выкл
«Выход_2»=вкл
Если «прием»
== 4 то
«Выход_1»=вкл
«Выход_2»=вкл
Да вы сами все уже расписали. А мы вам написали как решить с помощью событий.

Проект в приложении. Задача решена двумя способами - скриптами и событями.

capzap
28.06.2012, 21:59
минусовать единицу у всех языков одинаково, условие с присвоением тоже обсуждать не чего, остается булева логика, ну в этом случае должно сработать как то так:
«Выход_1»= «прием» & 1;
«Выход_2»= («прием» >>1) & 1;

PS что, и такой код работать не будет? :)

SCADAMaster
28.06.2012, 22:30
Примерно такой нужен:
int k=(int)(Вход-1);
if (k<0 || k>4) k=0;
Выход1=(k & 1)==1;
Выход2=(k & 2)==2;

capzap
28.06.2012, 23:05
Тут согласен, признаю свой промах, конечн же не все языки понимают что единица это правда, а ноль это ложь

yurgin_777
29.06.2012, 05:13
Спасибо всем!
Доберусь до работы буду пробовать.

yurgin_777
29.06.2012, 08:11
Проверил на рабочем проекте.
Спасибо все работает.

p\s
Накидал пример, может, кому пригодится.

yurgin_777
04.12.2012, 11:34
Здравствуйте.
В очередной раз нужна помощь.
Пытаюсь сделать погодозависимый регулятор.
Посмотрите мой пример, в правильном направлении я двигаюсь или нет?

За ранее спасибо.

SCADAMaster
04.12.2012, 18:14
Ерунда какая-то.
Что вообще вы хотите сделать?
Обычно для создания такого функционала используют ФБ "Кусочно-линейная функция" (закладка "Управление"), но этот ФБ - опция MSRT-ASL

yurgin_777
05.12.2012, 07:53
Ерунда какая-то.
Что вообще вы хотите сделать?
Обычно для создания такого функционала используют ФБ "Кусочно-линейная функция" (закладка "Управление"), но этот ФБ - опция MSRT-ASL

Да конечно, извините, сразу нужно было расписать, что требуется.

Плавного графика не требуется, достаточно 4-6 диапазона наружных температур, при котором температура теплоносителя будет задаваться в соответствии.
Например:
от +1 до 0 на улице температура носителя 53 градусов
от 0 до -5 на улице температура носителя 61 градусов
от -5 до -10 на улице температура носителя 69 градусов
от -10 до -15 на улице температура носителя 77 градусов
от -15 до -20 на улице температура носителя 85 градусов

Примерно это и реализовано в моем примере, за основу брался график 90-70.
Вопрос, как можно используя доступный функционал «МАСТЕРСКАДА», реализовать такой метод погодного регулирования, в правильном я направлении двигаюсь или нет.

п/с
В примере забыл указать компьютер объекта, там показано как в зависимости от изменения погоды (повторитель улица), меняется уставка на теплоноситель (выход скипта «уставка»)

SCADAMaster
05.12.2012, 21:49
Ну либо используете ФБ "Кусочно-линейная функция", либо делаете через скрипт как начали.
Но вам лучше уж тогда делать не через кучу операторов if, а через оператор switch.
http://msdn.microsoft.com/ru-ru/library/06tc147t(v=vs.90).aspx
Просто перечисляете все условия, и уставки для них.

yurgin_777
06.12.2012, 06:00
Ну либо используете ФБ "Кусочно-линейная функция", либо делаете через скрипт как начали.
Но вам лучше уж тогда делать не через кучу операторов if, а через оператор switch.
http://msdn.microsoft.com/ru-ru/library/06tc147t(v=vs.90).aspx
Просто перечисляете все условия, и уставки для них.

Спасибо за справочник, с С# столкнулся когда начал работать в «МастерСкада».
Функциональным блоком обязательно бы воспользовался, но он во первых идет как опция, а во вторых наверняка входит в подсчет «тегов».
Еще раз спасибо!

SCADAMaster
06.12.2012, 09:26
но он во первых идет как опция

Это да.



а во вторых наверняка входит в подсчет «тегов».

Нет, в версии 3.5 мы больше не считаем выходы большинства ФБ как лицензионные точки.
А вот как раз выходы скрипта, лицензионными точками считаются (так как через него можно получать данные из сторонних программ). Но вряд ли вас это будет играть определяющую роль - ОРС переменных у вас скорее всего будет больше, а лицензионные точки разных категорий не суммируются.

yurgin_777
06.12.2012, 10:55
А вот как раз выходы скрипта, лицензионными точками считаются (так как через него можно получать данные из сторонних программ).

Это относится к версии 3,5 или и 3,4 тоже??

Дмитрий
06.12.2012, 12:17
Здравствуйте.
В очередной раз нужна помощь.
Пытаюсь сделать погодозависимый регулятор.
Посмотрите мой пример, в правильном направлении я двигаюсь или нет?

За ранее спасибо.

Я реализовал этот регулятор одной формулой. abs(Твоздуха-50) * 0.85 . Где множителем 0.85 меняешь наклон графика а 50 смещать график. Поставь вместо них команды можно менять с окна управления или мнемосхемы

yurgin_777
06.12.2012, 16:19
Я реализовал этот регулятор одной формулой. abs(Твоздуха-50) * 0.85 . Где множителем 0.85 меняешь наклон графика а 50 смещать график. Поставь вместо них команды можно менять с окна управления или мнемосхемы

Спасибо Дмитрий.
Действительно так намного проще и удобней.

Пояснение к примеру:
«Коэф» - вводится наклон графика.
«Т_улица» - на вход повторителя вводятся показания уличного датчика
«Уставка» - с выхода скрипта «уставка» снимается параметр для регулятора
Верх уставки ограничен на 85 градусов, низ на 50 градусов, это у меня сделано длч того что-бы ТТ котел, не «убегал и не душился».
График тоже урезан по +10 и -30 гр.

SCADAMaster
06.12.2012, 19:41
Это относится к версии 3,5 или и 3,4 тоже??
К версии 3.5