Страница 1 из 1

Прошу помощи -Скрипт кратковременного дискретного сигнала...

СообщениеДобавлено: Ср июл 18, 2012 8:19 pm
ZOBUS
Доброго всем вечера.
Возникла реальная примитивная задача с которой я не смог справиться, помогите плиз:

Как выглядит скрипт (в InTouch 9.5), который выдает кратковременный дискретный сигнал по выполнению определенного
условия, т.е.: включить\выключить двигатель по положению уровня воды в баке.
Визуально выглядит так:
Тег1=0-1-0 включает
Тег2=0-1-0 выключает
У меня получается только жестко записыать в Тег1= 0-1, но тогда работает как выключатель, а мне надо чтоб как кнопка, т.е. кратковременно 0-1, а потом возвращался опять 0

Помогите плиз :oops:

Заранее всем спасибо :roll:

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Ср июл 18, 2012 10:15 pm
mp3corp
Вопрос, начальное состояние Тэга всегда равно - 0?
Наверное можно просто присвоением значения, или оператором NOT менять знач. дискретного тега.

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Ср июл 18, 2012 10:17 pm
mp3corp
Такое ощущение, что вы логику делаете скриптами в Интаче. Такие вещи всегда делаются в ПЛК.

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Ср июл 18, 2012 11:43 pm
Генератор зла
Скрипт 1
Tag1 = 1
Sec=$Seconds

Скрипт 2 (while Tag1 == 1)
if Sec<>$Seconds then Tag1=0; EndIf;

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Чт июл 19, 2012 7:36 pm
ZOBUS
mp3corp писал(а):Вопрос, начальное состояние Тэга всегда равно - 0?
Наверное можно просто присвоением значения, или оператором NOT менять знач. дискретного тега.

Да, совершенно верно, в состоянии ожидания =0, в момент подачи сигнала =1, затем должно вернутся в ноль.
...NOT, вобщем у меня не получилось :oops:

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Чт июл 19, 2012 7:38 pm
ZOBUS
mp3corp писал(а):Такое ощущение, что вы логику делаете скриптами в Интаче. Такие вещи всегда делаются в ПЛК.

Да ябы с удовольствием в релейке написал, но к сожалению АДАМ 5310, не поддерживает такую логику, только Си :|

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Чт июл 19, 2012 7:39 pm
ZOBUS
Генератор зла писал(а):Скрипт 1
Tag1 = 1
Sec=$Seconds

Скрипт 2 (while Tag1 == 1)
if Sec<>$Seconds then Tag1=0; EndIf;


Огромное спасибо, завтра буду пробовать :)

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Пт июл 27, 2012 10:52 pm
ZOBUS
К сожалению так и не получилось :oops:
Наверное у меня руки не из-того места растут :|
Пришлось выкрутиться, написать релейной логикой на соседнем контроллере (DL205), и от него в АДАМ ч\з InTouch, что не есть гуд :cry:

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Сб июл 28, 2012 1:08 am
Генератор зла
Какой длительности импульс должен быть?

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Пн июл 30, 2012 12:40 am
ZOBUS
около, от 1 до 3 секунд

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Пн июл 30, 2012 2:27 pm
Генератор зла
Скрипт Action на кнопку:

MSec = $Second*1000 + $Msec + 2000;
IF MSec > 59999 THEN MSec = MSec - 60000; ENDIF;
Sec = MSec / 1000;
MSec = (MSec MOD 1000);
Discrete1 = 1;


Скрипт Condition (Discrete1 == 1, While True, Every 100 (500) ms):

IF (($Second * 1000 + $Msec) >= (Sec * 1000 + MSec)) THEN Discrete1 = 0; ENDIF;

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Пн июл 30, 2012 2:55 pm
Генератор зла
А так правильнее :)
Скрипт Action на кнопку:

DateTime1 = $DateTime * 86400300 + 2000;
Discrete1 = 1;

DateTime1 = MemReal (0 - 1+38)

Скрипт Condition (Discrete1 == 1, While True, Every 100 (500) ms):

IF (($DateTime * 86400300) >= DateTime1) THEN Discrete1 = 0; ENDIF;

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Вт июл 31, 2012 12:28 am
ZOBUS
Большое спасибо, завтра буду пробовать.

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Вт июл 31, 2012 9:32 pm
ZOBUS
Condition (Discrete1 == 1, While True, Every 500 ms):

IF (($DateTime * 864003009) >= DateTime1) THEN
Discrete1 = 0;
ENDIF;

Большое спасибо!!!, Всё прекрасно работает :D :D :D

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Вт июл 31, 2012 9:37 pm
ZOBUS
...только вот не понял, что за число такое 86400300?

Re: Прошу помощи -Скрипт кратковременного дискретного сигнал

СообщениеДобавлено: Вт июл 31, 2012 11:03 pm
Генератор зла
Это особая уличная магия.
Множитель для перевода из суток в миллисекунды.