Порядок выполнения логики в FBD

В данный форум Вы можете заносить найденные Вами ошибки.При добавления ошибки пожалуйста приложите файлик error.log который находится в папке с установленной программой
Ответить
Arsbond
Рядовой
Сообщения: 10
Зарегистрирован: 25.09.2015{, 05:35}
Репутация: 0
Откуда: Химки

Порядок выполнения логики в FBD

#1

Сообщение Arsbond » 03.08.2016{, 15:28}

Добрый день!
Обнаружился такой баг: при стандартном для восприятия расположении трех блоков SWITCH (два промежуточных слева друг над другом, последний правее и посередине) логика отрабатывает некорректно. При перемещении третьего блока вниз (ниже первых двух) он в коде выполняется последним и логика отрабатывает корректно. Выявилось это при анализе кода после компиляции.
Во вложении два скрина с расположением блоков и соответствующим кодом для понимания.
Вложения
4496103.png
5255826.png

Darel68
Рядовой
Сообщения: 1
Зарегистрирован: 03.08.2016{, 15:08}
Репутация: 0

Порядок выполнения логики в FBD

#2

Сообщение Darel68 » 03.08.2016{, 15:49}

Приветствую!
Тоже попробовал -- есть такое и в 14, и в 15 версии.

Evgesha
Лейтенант
Сообщения: 525
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 20
Откуда: Kazakhstan
Имя: Evgesha

Порядок выполнения логики в FBD

#3

Сообщение Evgesha » 09.08.2016{, 13:25}

тоже самое заметил в блоках mux. пришлось делать проскок в в одном блоке меньше чем в другом(плата номер 5).
Вложения
tcvo_2004.rar
(134.51 КБ) 45 скачиваний
Последний раз редактировалось Evgesha 09.08.2016{, 13:26}, всего редактировалось 1 раз.
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

Balzamalex
Сержант
Сообщения: 102
Зарегистрирован: 07.09.2015{, 21:21}
Репутация: 0

Порядок выполнения логики в FBD

#4

Сообщение Balzamalex » 10.08.2016{, 08:16}

Была подобная тема - отправилась в "непринятые"
порядок операторов в СиКоде не соответсвует порядку на плате

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Порядок выполнения логики в FBD

#5

Сообщение Слимпер » 25.08.2016{, 16:14}

Arsbond писал(а):Обнаружился такой баг: при стандартном для восприятия расположении трех блоков SWITCH (два промежуточных слева друг над другом, последний правее и посередине) логика отрабатывает некорректно. При перемещении третьего блока вниз (ниже первых двух) он в коде выполняется последним и логика отрабатывает корректно. Выявилось это при анализе кода после компиляции.Во вложении два скрина с расположением блоков и соответствующим кодом для понимания.
Ну тут не баг, а недопонимание 

support, писал:

Затем обрабатываются оконечные блоки. Это в основном блоки которые не имеют выходов. Например вывод на дисплей, вывод на UART, запись в переменные. 
Порядок обработки блоков внутри групп организован следующим образом.  Первым обрабатывается блок наиболее близкий по прямой (пришлось вспоминать расчёт гипотенузы в прямоугольном треугольнике) к правому верхнему углу платы. Последним соответственно самый дальний.
Логические блоки  (например AND, OR, входы, математика) не рассчитываются. При обработке блоков других типов запрашивается состояние выходов таких блоков. Они в ответ выдают логические выражения (готовый код С) соответствующие своей логике.  Такое решение принято для экономии памяти контроллера. Не хорошо было бы для каждого логического или математического действия создавать переменную. В большинстве случаев в этом нет необходимости. 
Ну где то так. Это очень упрощённо, на самом деле логика компилятора намного сложнее. Я даже не очень представляю как её описать подробно. На это потребуется много времени и сил.
 
Т.е. все обрабатывается как и должно. Когда вы сдинули блок в низ все отработало корректно.
Только можно не так сильно это делать.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Порядок выполнения логики в FBD

#6

Сообщение Слимпер » 25.08.2016{, 16:36}

А вот, что уже интересно
Вариант 1 

СпойлерПоказать
Все правильно и корректно, претензий нет.
Вариант 2

СпойлерПоказать
 
Вот тут уже как не сдвигай, правильной последовательности получить не получится.
Вложения
7250513.png
1346742.png
6792705.png
8836867.png

Ответить

Вернуться в «Новые»