Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2012, 11:17   #1
canada
Senior Member
 
Регистрация: Oct 2011
Сообщения: 184
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Присваивание выхода по событию

Есть задача менять значение одной переменной INT по фронту нескольих сигналов: положительный фронт сигнала 1 - присвоить значение 1, отрицательный фронт сиганала 1 - присвоить 2, положительный фронт сигнала 2 - присвоить 3, отрицательный фронт сигнала 2 - присвоить 4 и т.д.

Вот если бы был механизм выключения обработки блоков - то задачу можно было бы рештить элементарно... в текущем варианте - я уже 3 час голову ломаю как это реализовать...

Может кто пнет меня в нужном направлении?

Последний раз редактировалось Arsie, 26.09.2012 в 16:43
canada вне форума   Ответить с цитированием
Старый 26.09.2012, 11:32   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: BUG:SMArt в комплекте с SMLogx3.24.245

Цитата:
Сообщение от canada
Вот если бы был механизм выключения обработки блоков - то задачу можно было бы рештить элементарно...
Эту задачу невозможно решить отключением блоков.



Цитата:
Сообщение от canada
Может кто пнет меня в нужном направлении?
Приложил картинку. Самый лобовой способ, разве что складываю сигналы не математикой, а порязрядным ИЛИ, т.к. недействительные ветки приравнены к нулю и результат сложения с нулём в любой математике идентичен.

Конструкция проста:

one_raise=0;
one_fall=0;
if (one>old_one) {one_raise=1;}
if (one<old_one) {one_fall=1;}

two_raise=0;
two_fall=0;
if (two>old_two) {two_raise=1;}
if (two<old_two) {two_fall=1;}

if (one_raise) {tmp1=1;} else {tmp2=0; tmp3=0; tmp4=0;}
if (one_fall) {tmp2=2;} else {tmp1=0; tmp3=0; tmp4=0;}
if (two_raise) {tmp3=3;} else {tmp1=0; tmp2=0; tmp4=0;}
if (two_fall) {tmp4=4;} else {tmp1=0; tmp2=0; tmp3=0;}

old_one=one;
old_two=two;

int=tmp1+tmp2+tmp3+tmp4;
Изображения
Тип файла: png Безымянный.PNG (23.8 Кбайт, 124 просмотров)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 26.09.2012 в 11:45
Arsie вне форума   Ответить с цитированием
Старый 26.09.2012, 12:53   #3
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: BUG:SMArt в комплекте с SMLogx3.24.245

Цитата:
Сообщение от canada
Я уже писал о недостатках
2. Количество блоков будет увеличиваться на 5 с каждым добавленным входом.
Кстати, если говорить о количестве блоков, то при снижении требований к скорости работы алгоритма решение упрощается и становится более простым в масштабировании. Картинка.
Изображения
Тип файла: png Безымянный.PNG (29.5 Кбайт, 82 просмотров)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 26.09.2012 в 16:44
Arsie вне форума   Ответить с цитированием
Старый 28.09.2012, 07:57   #4
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 761
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Присваивание выхода по событию

По Switch технологии без учета предыдущего состояния и задержек при переходе из состояния в состояние
Изображения
Тип файла: jpg переключение сигналов.jpg (104.4 Кбайт, 92 просмотров)


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Старый 28.09.2012, 10:46   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Присваивание выхода по событию

Цитата:
Сообщение от ujin
По Switch технологии без учета предыдущего состояния и задержек при переходе из состояния в состояние
Да, решение однопроходное и вполне неплохое!


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 17:47.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024