PDA

Просмотр полной версии : Инициализация переменных типа команда



Flex
04.02.2011, 13:18
Здравствуйте уважаемые знатоки мастер скады ! Помогите решить следующею проблему
У меня есть двухбайтная входная изменяемая OPC переменная где каждый бит является флагом. Разбираю я ее с помощью событий, обратно собитаю в расчете куда подаю команды с элеменов управления, например блока выключателей и кнопок с фиксацией, но пока не дернуть соответствующий эдлемент привязанная команда остается не инициализированной и соответствнно значение расчета неопределенным. Подскажите как при старте проекта инициализировть команды например по соответствующим событиям. Так получилось что флаги эти по смыслу принципиально разные поэтому устанавливаться или сниматься могут на разных формах.
Еще возможно ли при первоначальной инициализации (если она возможна) не предавать значения расчета обратно в переменную ?

Sniper007
04.02.2011, 13:35
Подскажите как при старте проекта инициализировть команды например по соответствующим событиям.
Что значит по соответсвующим событиям?
Можно поставить на закладке "Опрос выхода" параметр "Значение до опроса" - тогда команда инициализируется этим значением. Можно поставить галочку "Восстановление при рестарте" - тогда будет восстановлено значение которое было до выхода из режима исполнения.

Flex
04.02.2011, 13:56
по соответствующим событиям значит - "У меня есть двухбайтная входная изменяемая OPC переменная где каждый бит является флагом. Разбираю я ее с помощью событий" тоесть инициализация значениямы этих событий - эти значения могут быть как ложь так и истина поэтому установка "значения до опроса"
не подходит
А восстановление при рестарте наверное будет работать но меня интересует не рестарт а именно первый старт
так как скада управляен парой узлов которые могут и без нее работать, поэтому при старте проэкта надо синхронизироваться с текущим положением

Flex
04.02.2011, 14:15
Кстати и у событий и у команд есть вкладка - Действия
может както этим можно воспользоваться
хотя я для события добавлял действие - присвоить
объект - соответттвующая команда
ожидаемого эффекта не получил

Sniper007
04.02.2011, 14:29
хотя я для события добавлял действие - присвоить
объект - соответттвующая команда
ожидаемого эффекта не получил
Нужно еще в поле "Параметр" перетащить команду. Ее значение будет присвоено той команде, которая находится в поле "объект".

Flex
04.02.2011, 14:34
Нужно еще в поле "Параметр" перетащить команду. Ее значение будет присвоено той команде, которая находится в поле "объект".
я так и сделал
вроде не получилось попробую еще раз
а в какой момент должно выполниться присвоение
в момент расчета события ?

Sniper007
04.02.2011, 14:38
В момент перехода из ложь в истина.
Вы можете поставить у события значение до опроса "Истина", и тогда при старте оно выполнится.

Flex
04.02.2011, 14:46
Спасибо
попытаюсь разобраться
возможно возникнут дополнительные вопросы

Flex
04.02.2011, 16:28
не получаеться через действие события
действие инициализирует команду только если событие происходит
тоесть например
значение до опроса - истина ---- на входе события - ложь = команда инициализируется
значение до опроса - истина ---- на входе события - истина = команда не инициализируется
значение до опроса - ложь ---- на входе события - ложь = команда не инициализируется
значение до опроса - ложь ---- на входе события - истина = команда инициализируется

Flex
04.02.2011, 16:34
посоветуйте еще что нибудь пожалуйста
может можно выполнить какие либо действия разово при старте проекта ?
может скрипт на Си поможет ????

Sniper007
04.02.2011, 17:35
Посмотрите пример.

Flex
07.02.2011, 10:42
пример посмотрел
идея понятна
по команда1 в получатель записывается значение
но значение является константой
у меня же значение расчетное
и команда на запись выполняется раньше чем оно успевает расчитаться
в результате всегда завписывается ложь:mad:

Sniper007
07.02.2011, 11:25
Можно тогда сделать чтобы значение присвоилось с некоторой задержкой. Для этого можно использовать ФБ "Задержка по времени".

Flex
07.02.2011, 12:36
разобрался
работает
спасибо
только много компонентов получается слишком
возможно ли используя ФБ задержку по времени инициализировать все команды (их может быть до 16 ти) в ФБ скрипте ?
просто у меня никак не получается добавить входа и выходы в скрипт....

Sniper007
07.02.2011, 12:57
возможно ли используя ФБ задержку по времени инициализировать все команды (их может быть до 16 ти) в ФБ скрипте ?


Не понял, нужно инициализировать при помощи скрипта или задержки?


просто у меня никак не получается добавить входа и выходы в скрипт....
Щелкните правой кнопкой мыши в правом окошке. Выберите "Добавить", добавится вход. Можно изменить его тип с "Чтение" на "Запись" - тогда станет выходом.
Добавляется в текст также через контекстное меню "В текст".

Flex
07.02.2011, 13:03
я как раз и не нахожу где щелкнуть чтобы выбрать добавить
пожалуйста уточните про правое окошко ????

Нашел правое окошко !!!

Flex
07.02.2011, 13:05
возникла мысль инициализировать в скрипте, но чтобы сам скрипт выполнился с задержкой
иначе на каждую из 16 команд нужно вешить задержку, команду запуска и событие как в вашем примере

Flex
07.02.2011, 13:28
команду1 (по умолчанию истина) цепляю на вход ФБ задержка по времени
как у вас в примере
выход задержки на входной параметр скрипта
скрипт
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;

public partial class ФБ : ScriptBase
{
public override void Execute()
{
if (Параметр1 == true)
{
Башня.Гранулятор №1.Биты статуса.Команда Частота по RS =
Башня.Гранулятор №1.Биты статуса.Частота по RS;
}

}
}

Башня.Гранулятор №1.Биты статуса.Команда Частота по RS =
Башня.Гранулятор №1.Биты статуса.Частота по RS - просто перетянул с дерева
ошибки
Непредусмотренный символ '№' in 13
Непредусмотренный символ '№' in 14
Вопрос
как правильно работать с командами и событиями в скрипте
и возможно ли это напрямую без промежуточных входов и выходов в скрипте ?

Sniper007
07.02.2011, 14:06
иначе на каждую из 16 команд нужно вешить задержку, команду запуска и событие как в вашем примере
А зачем? Можно в событие добавить 16 действий и присваивать.


Башня.Гранулятор №1.Биты статуса.Частота по RS - просто перетянул с дерева

так нельзя делать. Используйте входы и выходы.
Но чтобы решить данную задачу вам лучше использовать событие с 16 действиями.

Flex
09.02.2011, 09:15
Спасибо !!!! :)