Цитата(ggg__ggg @ 2.5.2008, 7:12) [snapback]248705[/snapback]
В конце 80-х принимал участие в создании стенда для двигателя внутреннего сгорания. Времена - МИКРОСЕКУНДЫ, контроллеры - собственной разработки. Параметров измерения - около 200, но критичных ко времени - с 10. К ним относятся и весьма неприятные - температура и давление газа
камере сгорания,
А зачем мерять температуру и давление в камере сгорания? Да и как их мерять?
ИМХО там все проще значительно. В упрощенном виде нынче это делается так: По датчику вращения коленвала и датчику положения распредвала определяется моменты зажигания и впрыска в цилиндры. По расходомеру воздуха определяется первоначальное количество топлива, которое пересчитывается во время открытого состояния форсунки. Для этого в виде двухмерного массива делаются топливные карты (по одной стороне обороты, по другой положение педали газа). Топливных карт несколько, для разных диапазонов температур и аварийного режима. Такие же карты есть для определения угла опережения зажигания. Потом еще есть поправочные коэффициенты, например в зависимостиот скорости нажатия педали газа, от системы противоскольжения, и т.п. Далее значения корректируются по сигналам обратной связи и записываются в поправочные коэфициенты. Обратной связью по топливу является первая лямбда, а по углу опережения - датчики детонации. Т.е. если в карту зажигания вы забили слишком большой угол опережения, то датчик детонации подправит этот угол. Однако максимальная поправка по ОС ограничена, и если ошибка более этого ограничения, то детонация неизбежна.
А вот вопрос? Если речь шла о микросекундах, то это время цикла команды, или всей программы? Если программа укладывается в 512 кБайт, то врятли цикл ее выполнения будет единицы микросекунд. А если учесть, что датчики читаются вначале цикла, а выходы записываются в конце, то каков же может быть цикл всей программы?