Долго провозился, пока понял что математика не правильно считает. Работал с датчиком влажности почвы. Все работает как нужно. Решил организовать вывод в процентах. Вот тут и начались проблемы. При малых входных значениях вроде правильно показывает, при больших ересь какая-то. Но я то не сразу это понял. Просто проверял разные варианты влажности...
Оказалось математические блоки врут.
Для вычисления процента влажности я использовал такую формулу:
Данные: 1023 это 0% влажность
0 - это 100% влажность
Например 85 - это ?% влажность
Считаем: 100-(85*100/1023)=91%
А если сухо 1023 или скажем 1000
100-(1000*100/1023)=2%
А у нас что получается, если вычислять математикой?
Правильно, ересь какая-то. А дело в том, что объявленные константы имеют свой соответствующий тип. Например константе 100 я присвоил тип byte, и это справедливо, зачем резервировать памяти больше чем этого требует константа или переменная??? Соответственно и другие константы вписываются в свой тип. И в результате не работает с большими значениями. А все потому, что мы не можем указать тип выходных данных. Т.е должны быть возможность выбора типа для результата с блока.
Теперь, чтоб блок работал, мне пришлось всем участвующим константам и переменным присвоить тип Long Integer. Вот после этого вычисления стали работать правильно