FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Понедельник, 05.12.2016, 07:23
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Баг - Трекер » Новые » Порядок выполнения логики в FBD
Порядок выполнения логики в FBD
Arsbond
Дата: Среда, 03.08.2016, 15:28 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 10
Награды: 0
Репутация: 0
Статус: Offline
Добрый день!
Обнаружился такой баг: при стандартном для восприятия расположении трех блоков SWITCH (два промежуточных слева друг над другом, последний правее и посередине) логика отрабатывает некорректно. При перемещении третьего блока вниз (ниже первых двух) он в коде выполняется последним и логика отрабатывает корректно. Выявилось это при анализе кода после компиляции.
Во вложении два скрина с расположением блоков и соответствующим кодом для понимания.
Прикрепления: 5255826.png(140Kb) · 4496103.png(130Kb)
 
Darel68 Дата: Среда, 03.08.2016, 15:49 | Сообщение # 2
Рядовой
Группа: Проверенные
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
Приветствую!
Тоже попробовал -- есть такое и в 14, и в 15 версии.
 
Evgesha Дата: Вторник, 09.08.2016, 13:25 | Сообщение # 3
Подполковник
Группа: Проверенные
Сообщений: 210
Награды: 3
Репутация: 3
Статус: Offline
тоже самое заметил в блоках mux. пришлось делать проскок в в одном блоке меньше чем в другом(плата номер 5).
Прикрепления: tcvo_2004.rar(135Kb)


Сообщение отредактировал Evgesha - Вторник, 09.08.2016, 13:26
 
Balzamalex Дата: Среда, 10.08.2016, 08:16 | Сообщение # 4
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 0
Статус: Offline
Была подобная тема - отправилась в "непринятые"
порядок операторов в СиКоде не соответсвует порядку на плате
 
Слимпер Дата: Четверг, 25.08.2016, 16:14 | Сообщение # 5
Генерал-лейтенант
Группа: Проверенные
Сообщений: 667
Награды: 25
Репутация: 23
Статус: Offline
Цитата Arsbond ()
Обнаружился такой баг: при стандартном для восприятия расположении трех блоков SWITCH (два промежуточных слева друг над другом, последний правее и посередине) логика отрабатывает некорректно. При перемещении третьего блока вниз (ниже первых двух) он в коде выполняется последним и логика отрабатывает корректно. Выявилось это при анализе кода после компиляции.Во вложении два скрина с расположением блоков и соответствующим кодом для понимания.
Ну тут не баг, а недопонимание 

support, писал:

Цитата
Затем обрабатываются оконечные блоки. Это в основном блоки которые не имеют выходов. Например вывод на дисплей, вывод на UART, запись в переменные. 
Порядок обработки блоков внутри групп организован следующим образом.  Первым обрабатывается блок наиболее близкий по прямой (пришлось вспоминать расчёт гипотенузы в прямоугольном треугольнике) к правому верхнему углу платы. Последним соответственно самый дальний.
Логические блоки  (например AND, OR, входы, математика) не рассчитываются. При обработке блоков других типов запрашивается состояние выходов таких блоков. Они в ответ выдают логические выражения (готовый код С) соответствующие своей логике.  Такое решение принято для экономии памяти контроллера. Не хорошо было бы для каждого логического или математического действия создавать переменную. В большинстве случаев в этом нет необходимости. 
Ну где то так. Это очень упрощённо, на самом деле логика компилятора намного сложнее. Я даже не очень представляю как её описать подробно. На это потребуется много времени и сил.
 
Т.е. все обрабатывается как и должно. Когда вы сдинули блок в низ все отработало корректно.
Только можно не так сильно это делать.
 
Слимпер Дата: Четверг, 25.08.2016, 16:36 | Сообщение # 6
Генерал-лейтенант
Группа: Проверенные
Сообщений: 667
Награды: 25
Репутация: 23
Статус: Offline
А вот, что уже интересно
Вариант 1 

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


 
Вот тут уже как не сдвигай, правильной последовательности получить не получится.
Прикрепления: 8836867.png(3Kb) · 6792705.png(5Kb) · 1346742.png(3Kb) · 7250513.png(10Kb)
 
Форум » Баг - Трекер » Новые » Порядок выполнения логики в FBD
Страница 1 из 11
Поиск:

FLProg © 2016
Яндекс.Метрика