boez » 26 май 2009, 00:29
А еще можно сделать S-образный ограничитель accel/decel на входе ПИД (ограничивается как скорость, так и ускорение, скачок входного задания с DMX, если он достаточно большой, будет отработан и выдан на ПИД как парабола + наклонная прямая + парабола). На входе и на выходе у этого ограничителя будет позиция (задание на ПИД), но на выходе оно будет модифицировано так, что первая и вторая производные позиции ограничены заданными величинами. После этого можно задирать скорость отработки самого пида - ток движка будет ограничен массой механики и максимальным ускорением S-образной рампы.
Если интересно - могу кинуть кусок сишного кода для S-рампы, у меня если поискать, должно было что-то остаться. Он простой, по вычислительной сложности не намного сложнее (ну раза в 2-3) простой линейной рампы, кажется всего одно умножение там есть, а так всякие сложения-вычитания-сравнения, ну правда 32 бита по большей части. Работает ессно в непрерывном режиме, ну то есть если у нас разгон и вдруг задание изменилось так, что надо тормозить - сразу начнем тормозить.