Hello, Alexey V Bugrov !
Как? Я все время пытаюсь узнать как ты собираешься априори отличать корректные действия от некорректных. Вот есть простейший регулятор, тем не менее, работающий в реальных устройствах
power = (byte)(((word)Vpf * (word)Ipfc)/256U);
power = (byte)((word)power * Pwr_Adj / 128U);
if (Iout > 0) Vout = power*128U/Iout; else Vout = 0;
if (((regmode == rgCurrent) && (power > pref_dim)) || (regmode == rgPower)) { Discrepancy_n = (pref_dim - power)/2; regmode = rgPower; } else { Discrepancy_n = Iwarm - Iout; regmode = rgCurrent; } pwm = pwm1; if (Discrepancy_n >= Discrepancy_n1) { if (Discrepancy_n > 0) pwm++; else if (Discrepancy_n < 0) pwm--; if (Discrepancy_n > 1) pwm++; else if (Discrepancy_n < -1) pwm--; } Discrepancy_n1 = Discrepancy_n; if (pwm > 253U) pwm = 253U; if (pwm < 3) pwm = 3; pwm1 = pwm; }
Причем период вызова этой последовательности тут не виден, но задается от работающего в прерывании таймера. Также тут не видны цифровые фильтры (частично на асме написанные), от которых получаются входные данные. Что и как тут тестировать?
Это даже не смешно... И требует симуляции всего окружения. Сложность полученной системы и количество ошибок в ней превышает сложность проверяемой на несколько порядков. Особенно если ставить задачу (а как без этого) соответсвия масштабов времени скажем аппаратно работающих таймеров и времени выполнения процессором команд.
То есть создается _аппаратная_ модель разрабатываемого _устройства_. Да именно так, только чаще не с эмулятором а прямо с целевым кристаллом мы и тестируем наши программы и устройства.
Hу покажи практически на приведенном коде. Я не понимаю как можно сделать то, о чем ты говоришь.
Hе вижу практического смысла писать весьма сложные программы для мало чего дающей проверки простых. Ведь эти сложные программы следующий тестер будет тоже тестировать, создавая еще более сложные с еще большим числом ошибок. В результате весь пар уйдет в гудок.
Если функция выполняется, то ошибок или нет, или они не существенны.
А толку? Зачем мне его передаточная функция?
Зачем?
А если нет никакой мат модели?
Проводится тестирование в ненормальных условиях. Всего устройства. По любому.
К сожалению, реальность постоянно подбрасывает ситуации, о которых нельзя было и помыслить...
То есть для проверки того, что в реальном времени проверяется месяц, потребуется лет 10?
Правда.
А исходник вдумчиво посмотреть не быстрее и надежнее?
Имея даже два десятибитовых входных сигнала (два канала АЦП), сколько ты будешь перебирать весь миллион комбинаций? А в реальных системах комбинаций много больше... И кто и как должен сказать что именно следует ожидать на выходе в результате подачи этих сигналов? Вот на простейшем приведенном примере (хорошо, пусть там только восьмибитные данные) как ты это сделаешь? Hа всякий случай напомню, что это зависящая от реального времени система.
Hе понимаю каким образом.
Проверяется и нештатная работа. И обрыв датчиков и многое другое.
То есть при привлечении дополнительных программистов (тестеров) с их дополнительным кодом число ошибок возрастает, да еще и квадратично?
С уважением, Дима Орлов.