пока на скрине всё логично, сперва считается разность, далее идет селектор который присваивает переменной Уменьшаемое значение из переменной СумматорРасходомерСмолы Вложение 81805
Вид для печати
пока на скрине всё логично, сперва считается разность, далее идет селектор который присваивает переменной Уменьшаемое значение из переменной СумматорРасходомерСмолы Вложение 81805
Прикладываю проект
Всё как и сказал, работа не синхронизирована, выходы уже получили число 25, а входы (где число 24) получат в следующем цикле.
Но 1 шаг сделать нельзя, потому что счётчик насчитает ещё 25, до 50.
Вот смотрите, период BLINK увеличил с 2 мс до 200, сразу стало видно, Вложение 81807
что у вас периодически уменьшаемое, становится меньше вычитаемого
А если поставить 20 мс, то через раз переменные становятся равны, то есть на вход успевает записаться число. Вложение 81808
А через раз также разница в 1.
Но дело не в этом, при 2 мс всё работает, а разные числа из за отсутствия синхронизации. Вложение 81810
Вот скрин, перенёс Разность -1 и Разность в одно место и всё чётко считает
Вложение 81812
Есть счет еще в одном месте, выделил зеленым.
Так же считает правильно.
Красным выделил, где считает неправильно.
Думаю вопрос не в шагах симулятора, т.к. в режиме реального времени на ПР103 эта ошибка так же проявляется.
На одном проходе программы эти строки должны были посчитаться одинаково. Если они не считаются одинаково, то как можно сказать, что в ходе работы оно будет считаться правильно.
Где здесь ошибка.
Это не ошибка - это вопрос последовательности обработки ФБ (которая в OL устанавливается по своим алгоритмам и никак не отображается к сожалению).
Там где у обведено красным - подключите вместо переменной "Уменьшаемое" непосредственно выход блока SEL и все будет считаться так. как ожидаете