Цитата(gte @ Apr 13 2016, 21:08)
Привет Всем!
Есть отлаженные аналоговые PID. Хочется попробовать перевести их в цифровую форму, т.е. в Си код для МК, ARM например?
Схема подобно используемой на рисунке. Это из an-1162.pdf (International Rectifier).
Нажмите для просмотра прикрепленного файлаРабота разовая, а вариант исполнения регулятора достаточно редкий, поэтому хочется минимизировать затраты. С помощью каких программ это можно получить начальный код?
Например, с помощью LabView + Embedded Module for ARM?
Вам нужно составить передаточную функцию регулятора.Вспомните как она считается у инвертирующего усилителя:
Код
H(jw)=-R2/R1
.
R2-активное сопротивление в обратной связи. Это частный случай. В общем случае:
Код
H(jw)=-X2(jw)/X1(jw)
X2-комплексное сопротивление в обратной связи.
==
Приведу простой пример.В обратной связи кондёр. Его комплексное сопротивление X2(jw)=1/(jwC). Чтобы получить передаточную функцию, надо выполнить преобразование Лапласа. В нашем случае - это просто замена: s=jw. Отсюда передаточная функция:
Код
H(s)=-(1/sC)/R2=-1/(R2*C*s)=-1/(T*s)
.
Развернем формулу:
Код
Uвых/Uвх=-1/T*s
T*s*Uвых=-Uвх
Далее, надо перейти к диф.уру. Для этого надо вспомнить свойство обратного преобразования Лапласа. Конкретнее: если оператор Лапласа s стоит рядом с переменной, то при обратном преобразовании переменная заменяется на его производную. Например. s*Y(s) при обратном преобразовании превращается в y'(t):
Код
T*dUвых/dt=-Uвх.
Ну а дальше заменяешь производную на конечную разность:
Код
dUвых/dt=(Uвых(k+1)-Uвых(k))/dt
и выводишь Uвых(k+1) - это и есть выход твоего регулятора.Это и есть цифровая реализация интегрального регулятора
Короче говоря, в вашем случае надо посчитать эквивалентное комплексное сопротивление в на входе операционника и эквивалентное комплексное сопротивление в обратной связи. Думаю не имеет смысла разжовывать, как посчитать эквивалентное сопротивление двух последовательно соединенных резисторов
===
Есть другой способ. После того,как вычислил передаточную функцию, нужно применить формулу Тастина (в поиске найдёшь),а потом тоже самое - вывести Uвых(k+1).