Сообщение от tanq
|
Удивило, что такой сложный код. Поразбираемся...
Заметил, кстати, мелкий баг:
if(spr-›Isum ‹ -90)
spr-›Isum = (float)-90;
Вместо (float)-90 должно быть -90.0f - оно так по нормальному записывается. А баг в том, что в предыдйщей строчке про float забыли. Это скорее всего приведет к конверсии обоих чисел в double и последующему сравнению. Зависит от компилятора. Некоторые оптимизируют, некоторые - нет. По стандарту должена быть конверсия в double.
|
Я не программист, а электронщик и поскольку все разработки делаются тандемом, могу сказать, что это довольно частая ошибка.
Обычно она проявляется при пуско-наладке.
Кстати это ограничение интегральной составляющей и обнаружить эту ошибку в процессе работы регулятора весьма сложно.
В данном случае пуско-наладки не было.
Мы делали это под керамические паяльные станции, практически под заказ, но потом заказчик исчез и все это валяется в столе.
Обычно ограничение интегральной составляющей мы выносили в меню, но практика показала,что лучше сделать ограничение постоянным где то %90 и зашить в основную программу.
В понедельник покажу программисту этот баг.