This is topic пересчет FBD блоков in forum Языки программирования (IL/FBD) / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
В FBD программе критичным является последовательность вычисления FBD блоков, есть необходимость обеспечить синхронность вычисления. Например в FBD программе есть участок из последовательных блоков 1) умножения, 2) деления, 3) вычисления абсолютного и 4)вычитания. Когда я работаю в эмуляторе FBD редактора, то наблюдаю следующую картину: условно говоря на 1-ом такте пересчета пересчитываются 1 и 2 блоки, на втором 3 и 4, а по алгоритму работы они все должны пересчитываться в течение 1-го цикла. По описанию не понятно какой принцип пересчета, как влияют номера FBD блоков на их пересчет, как работает FBD блок STEP, каким образом можно повлиять на последовательность пересчета в процессе разработки? Работаю в версии 5.12
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
FBD не могут вычисляться в несколько тактов - в одном такте выполнения программы вычисляются ВСЕ блоки программы. Только последовательность их вычислений в этом такте определяет кто будет вычислен раньше, а кто позже. Управлять с помощью STEP Вы не сможете, потому как этот блок сейчас не работает ни в Редакторе ни в МРВ. Очередность вычисления блоков зависит от их линий связи - кто с кем соединен друг за другом. У Вас как в режиме эмуляции пронумерованы блоки?
Posted by sldk_buf (Участник № / Member № 2898) on :
quote: в одном такте выполнения программы вычисляются ВСЕ блоки программы
Как я понимаю, если интерпретатор не успеет за такт пересчитать все FBD-блоки программы, то он не остановит вычисления, а продолжит их. Тем самым превысит отведенное для вычислений время(длительность такта). Канал с подтипом "СИСТЕМНЫЙ" и дополнением к подтипу "время пересчета" будет иметь значение превышающее установленный такт для узла?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Да, Вы все верно понимаете.
Posted by Baikal_1 (Участник № / Member № 3959) on :
Подскажите, пожалуйста. Как можно посчитать время выполнения программы выполненной на языке FBD ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
125-й атрибут канала, вызывающего программу. Но он оценивает время с точностью до 1 мс. Для подавляющего большинства программ он покажет 0.
Posted by Baikal_1 (Участник № / Member № 3959) on :
125-й атрибут канала, вызывающего программу? Это вроде для TM6. Вопрос был задан для ТМ5
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В Trace Mode 5 определить время исполнения отдельной программы нельзя. Можно только определить время, затрачиваемое на пересчет всей базы каналов. Для этого существует системная переменная "Время пересчета". Если Вам необходимо оценить затраты времени на конкретный вызов программы, сделайте тестовый проект, в котором будет, например, 1000 вызовов этой программы и оцените "Время пересчета".
Posted by Baikal_1 (Участник № / Member № 3959) on :
Спасибо большое за информацию!! Примем к сведению.