#python #numpy #pid #derivative
#python #numpy #pid #производная
Вопрос:
Итак, я пытаюсь смоделировать правильную систему ПИД-контроля на python, но если я добавлю немного шума к сигналу (скажем, с помощью датчика), общий термин начнет реагировать чрезмерно. Я знаю, что это довольно распространено, и люди исправляют это с помощью фильтра нижних частот, но я понятия не имею, как его реализовать.
Итак, сначала у меня есть простая логистическая функция роста для температуры:
time = np.arrange(0., maxtime, dt)
for t in time:
temperature = temperature temperature*50*dt*(1-temperature/150)
Теперь я импортирую random и добавляю некоторый шум к сигналу (допустим, это вызвано несовершенным реальным датчиком):
temperature = temperature random.randint(-1,1)/10
У меня не будет полного кода для PID, но скажем, что наша система может только охлаждать температуру, а не нагревать ее, тогда у меня есть что-то вроде этого:
if (P I D < 0):
temperature = temperature dt*(P I D)
Проблема в том, что система сильно реагирует на создаваемый дополнительный шум, мне нужен способ это исправить. Способ кодирования моего общего термина примерно таков (где Kd — константа для производной:
D = ((previousTemperature - temperature) / dt)*Kd
Обратите внимание, что я не использую error в термине D, потому что в противном случае он чрезвычайно реагирует на внезапное изменение желаемого значения температуры, поэтому наша производная константа, возможно, должна быть отрицательной, чтобы не противодействовать системе.
Мой вопрос в том, есть ли способ предотвратить чрезмерную реакцию производной на шум.