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

Вопросы, не попадающие в другие разделы.

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

Сообщение ZOBUS » Ср июл 18, 2012 8:19 pm

Доброго всем вечера.
Возникла реальная примитивная задача с которой я не смог справиться, помогите плиз:

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

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

Заранее всем спасибо :roll:
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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

Сообщение mp3corp » Ср июл 18, 2012 10:15 pm

Вопрос, начальное состояние Тэга всегда равно - 0?
Наверное можно просто присвоением значения, или оператором NOT менять знач. дискретного тега.
mp3corp
 
Сообщения: 375
Зарегистрирован: Вт фев 22, 2011 4:47 am

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

Сообщение mp3corp » Ср июл 18, 2012 10:17 pm

Такое ощущение, что вы логику делаете скриптами в Интаче. Такие вещи всегда делаются в ПЛК.
mp3corp
 
Сообщения: 375
Зарегистрирован: Вт фев 22, 2011 4:47 am

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

Сообщение Генератор зла » Ср июл 18, 2012 11:43 pm

Скрипт 1
Tag1 = 1
Sec=$Seconds

Скрипт 2 (while Tag1 == 1)
if Sec<>$Seconds then Tag1=0; EndIf;
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

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

Сообщение ZOBUS » Чт июл 19, 2012 7:36 pm

mp3corp писал(а):Вопрос, начальное состояние Тэга всегда равно - 0?
Наверное можно просто присвоением значения, или оператором NOT менять знач. дискретного тега.

Да, совершенно верно, в состоянии ожидания =0, в момент подачи сигнала =1, затем должно вернутся в ноль.
...NOT, вобщем у меня не получилось :oops:
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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

Сообщение ZOBUS » Чт июл 19, 2012 7:38 pm

mp3corp писал(а):Такое ощущение, что вы логику делаете скриптами в Интаче. Такие вещи всегда делаются в ПЛК.

Да ябы с удовольствием в релейке написал, но к сожалению АДАМ 5310, не поддерживает такую логику, только Си :|
Последний раз редактировалось ZOBUS Чт июл 19, 2012 7:45 pm, всего редактировалось 1 раз.
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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

Сообщение ZOBUS » Чт июл 19, 2012 7:39 pm

Генератор зла писал(а):Скрипт 1
Tag1 = 1
Sec=$Seconds

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


Огромное спасибо, завтра буду пробовать :)
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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

Сообщение ZOBUS » Пт июл 27, 2012 10:52 pm

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

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

Сообщение Генератор зла » Сб июл 28, 2012 1:08 am

Какой длительности импульс должен быть?
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

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

Сообщение ZOBUS » Пн июл 30, 2012 12:40 am

около, от 1 до 3 секунд
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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;
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

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;
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

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

Сообщение ZOBUS » Вт июл 31, 2012 12:28 am

Большое спасибо, завтра буду пробовать.
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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

Сообщение ZOBUS » Вт июл 31, 2012 9:32 pm

Condition (Discrete1 == 1, While True, Every 500 ms):

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

Большое спасибо!!!, Всё прекрасно работает :D :D :D
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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

Сообщение ZOBUS » Вт июл 31, 2012 9:37 pm

...только вот не понял, что за число такое 86400300?
ZOBUS
 
Сообщения: 20
Зарегистрирован: Пн фев 28, 2011 6:25 pm

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

Сообщение Генератор зла » Вт июл 31, 2012 11:03 pm

Это особая уличная магия.
Множитель для перевода из суток в миллисекунды.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm


Вернуться в Другое

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

cron