Форум TRACE MODE: техническая поддержка
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
Послать новую тему / Post New Topic  
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

This topic has been moved to Пользователи для пользователей.     Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Общие вопросы / Common questions » Поделитесь идеями, кто как реализует алгоритмы?

   
Автор / Author Тема / Topic: Поделитесь идеями, кто как реализует алгоритмы?
alex_kh1
Forum Member / Участник форума
Участник № / Member № 3981


Icon 1 отправлено / posted      Профиль для / Profile for alex_kh1           Редактировать/удалить сообщение / Edit/Delete Post 
Проблема заключается в том, что Trace Mode замечательно подходит моделирования жесткой логики, эквивалентной электронным схемам.
Но как на ней по человечески реализовывать сложные ветвящиеся алгоритмы с большим количество входов выходов?
Я выкрутился тем что ввожу счетчик шагов, и по CASE каждый раз при выполнении подпрограммы проверяю условия выполняю действия и новым значение счетчика определяю следующий шаг алгоритма.
Криво, не наглядно, трудоемко, но ничего лучше не придумал. Может я чего нибудь не знаю и кто-то умеет лучше?

Сообщения / Posts 49 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
A40
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
Вам нужен конечный автомат?
IP / IP: IP адрес / IP address | Report this post to a Moderator
alex_kh1
Forum Member / Участник форума
Участник № / Member № 3981


Icon 1 отправлено / posted      Профиль для / Profile for alex_kh1           Редактировать/удалить сообщение / Edit/Delete Post 
Ну, я затрудняюсь в применении данного термина.
Скажем так, я привык к тому хорошему чо есть в обычных языках, т.е. вызвали в процедуру и реализуем в ней логику алгоритма, получили одно условие, выставили какие-то переменные и идем на следую проверку-выставление. В Трасе Моде же такое невозможно поскольку что бы обновились значения выходов-входов программа должна закончиться, т.е. каждый следующий шаг подразумевает выход и повторный вход на следующем обсчете. В результате получается та канитель, которую я описал в первом посте.

Сообщения / Posts 49 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
alex_kh1
Forum Member / Участник форума
Участник № / Member № 3981


Icon 1 отправлено / posted      Профиль для / Profile for alex_kh1           Редактировать/удалить сообщение / Edit/Delete Post 
Вот кусочек кода для примера

CASE Шаг OF

0: Флаг_шнека_непоступление=0; Таймер_непоступления=Пауза_непоступления*1000;
if Рецепт_выполнен_полностью==1 then Рецепт_выполнен_полностью=0; Отдозировано_по_рецепту=0; end_if; Шаг=10;

10: if Условия_начала_дозирования then
if Есть_рецепт then Дозатор_ожидает_рецепт=0;
if Рецепт_выполнен_полностью==1 then Рецепт_выполнен_полностью=0; Отдозировано_по_рецепту=0; end_if;
Шаг=20;
else Дозатор_ожидает_рецепт=1; end_if;
elsif Шнеки_наполнения_включены then Шаг=1000;
end_if;

20: Шаг=25;


25: Таймер=Пауза_доз_эл*1000; Шаг=30;// if Рецепт_выполнен_полностью==1 then Рецепт_выполнен_полностью=0; Отдозировано_по_рецепту=0; end_if;
30: if Таймер<=0 then
Флаг_дозатора_дозирование=1;
Флаг_дозатора_для_фиксации_веса=1;
Кнопка_пауза =4; Кнопка_стоп =4;
Начальный_вес=Показания_весов;
Шаг=40;
if Доза<>0 then Шаг=40; else Флаг_дозатора_для_фиксации_веса=2; Шаг=110; end_if;
end_if;

40: if Нужно_сбросить_начальный_вес then Начальный_вес=Показания_весов; Нужно_сбросить_начальный_вес=0; end_if; Шаг=45;
45: if Режим_дозатора then
if (Доза-Отдозированное_ранее-(Начальный_вес-Показания_весов))<=Досыпка
then Включить_шнек_точно=1; Включить_шнек_грубо=1; Шаг=60;
else Включить_шнек_грубо=1; Шаг=70; end_if;
else Шаг=520;
end_if;

Сообщения / Posts 49 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
A40
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
SFC не подойдет?
IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
2alex_kh1:

Рекомендую попробовать на SFC это делать. Там как раз ветвление логики и шаги с условиями переходов.

Для себя в проектах подобное делаю всегда так:
1) Выполняю декомпозицию алгоритма на отдельные подфункции, которые выполняю в виде отдельных программ на FBD или ST
2) Создаю на ST некий арбитражный алгоритм, который следит за общей работой всех этих подфункций, управляя их статусами в зависимости от неких условий.

Иногда можно и как вы в примере показали делать, вот только потом разбираться в такой "портянке" ой как сложно...

Но вообще именно для этого в стандарте SFC и придумали. [Пдмигивание / Wink]

IP / IP: IP адрес / IP address | Report this post to a Moderator
alex_kh1
Forum Member / Участник форума
Участник № / Member № 3981


Icon 1 отправлено / posted      Профиль для / Profile for alex_kh1           Редактировать/удалить сообщение / Edit/Delete Post 
Да, когда искал варианты пытался применить SFC, но посчитал это бесполезной игрушкой и больше не возвращался.

Думаете можно его применить для эквивалентной замены того как я сейчас делаю, из расчета строк примерно на 500 в одной программе?

И там можно будет что-то понять, с учетом того что элементы SFC даже нельзя расположить на листе в желаемом порядке?

Сообщения / Posts 49 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
Все можно, вопрос только в том - как применять. [Улыбка / Smile] Ведь и микроскопом можно гвоздь забить.
IP / IP: IP адрес / IP address | Report this post to a Moderator
alex_kh1
Forum Member / Участник форума
Участник № / Member № 3981


Icon 1 отправлено / posted      Профиль для / Profile for alex_kh1           Редактировать/удалить сообщение / Edit/Delete Post 
Неправильно выразился, понятно что можно, имеет ли преимущества вариант с SFC? Или же все станет еще более запутанным.
Сообщения / Posts 49 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
На вкус и цвет - все фломастеры разные. [Усмешка / Big Grin]
Мне вот лично SFC не нравится, поэтому я им никогда не пользуюсь. Все - дело вкуса и личных ощущений в процессе эксплуатации.

IP / IP: IP адрес / IP address | Report this post to a Moderator
alex_kh1
Forum Member / Участник форума
Участник № / Member № 3981


Icon 1 отправлено / posted      Профиль для / Profile for alex_kh1           Редактировать/удалить сообщение / Edit/Delete Post 
Ну а если не SFC и не как я, есть еще варианты?
Кстати глянул SFC сейчас и не вижу возможностей:

1. Производить некую предварительную обработку набора данных, до вызова алгоритма, что бы вычисленные переменные были доступны во всех узлах и переходах.
2. Соответственно я могу изменить шаг принудительно до вызова алгоритма, реагируя на некие аварийные ситуации. И не вижу как это сделать в SFC не описывая реакцию на "аварию" во всех переходах.

т.е. не вижу некоей предобработки и постобработки.

Сообщения / Posts 49 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Топик перенесен в раздел "Пользователи для пользователей".
Сообщения / Posts 17322 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Послать новую тему / Post New Topic  
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
Открыть тему / Open Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2