Похоже, что ваш регулятор не работает из-за того, что на его вход подается абсолютное положение, а должна подаваться РАЗНОСТЬ между заданной и текущей координатами. Эта величина часто называется - сигнал ошибки, а лучше - рассогласованием.
У ПИД-звена есть два входа - ACTUAL и SET-POINT - соответственно текущая и целевая координаты (на остальные пока не обращайте внимания). Вот в ависимости от их разности, то-есть (SET-POINT - ACTUAL) и вырабатывается выходное задание.
Но еще надо выполнить несколько обязательных условий. Будет понятнее если все делать попорядку и постепенно.
Прежде всего надо привести входные сигналы к одной размерности и масштабности, то-есть оба входных сигнала должны выражать координаты (размерность), и одинаковые перемещения должны соответствовать одинаковым изменениям сигналов (масштабность). Толко так можно ожидать нормальной работы регулятора. Если нет готового сигнала координаты, например - напряжение, то его надо преобразовать к размерности координаты, каким-нето образом.
Те или иные звенья - это еще не регуляторы. Регуляторами они становятся когда образуется цепь обратной связи. На вход ACTUAL подается действительная текущая координата, на SET-POINT - заданная. ПИД состоит из трех частей : Пропорциональная, Интегрирующая и Дифференцирующая. Эти части независимы, то-есть не влияют друг на друга (принцип суперпозиции), и могут рассматриваться поотдельности. Каждая из частей может вообще отсутствовать, и тогда ПИД-звено будет превращаться в разные типы звеньев : чисто Пропорциональное, чисто Интегрирующее, Пропорционально-Интнгрирующее, Пропорционально-Дифференцирующее.
Пропорциональное (P) звено - это просто-напросто линейный усилитель (или ослабитель) с коэффициентом передачи KP. Его можно применять в простейших случаях - каких-нибудь игрушках, или для маломощных двигателей с постоянной скоростью.
Для более мощных двигателей, с большим диапазоном скорости нужно добавить "стабилизатор скорости". Очевидно, что при большом рассогласовании задание на выходе также будет очень большим - движок поедет в рвзнос. Чтобы сдержать разгон добавляется Дифференцирующее звено. Оно реагирует на мгновенное изменение сигналов, и не дает двигателю ускоряться, то-есть служит стабилизатором скорости.
Подбирая коэффициент дифференцирования TV (в обозначениях CoDeSys) можно добиться желаемой скорости.
Итак, скорость мы получили (первая производная координаты) - привод уже не лихорадит. Теперь нужна координата, и здесь тоже есть свои тонкости.
Пока нет нагрузки, которая препятствует движению, механизм легко достигнет заданной координаты. Но при нагрузке, да еще и большой картина изменится. По мере приближения к цели, задание на выходе будет уменьшаться. И наступит момент равновесия, когда задание настолко мало, что не сможет преодолеть нагрузку, и система остановится в напряженном состоянии не достигнув координаты.
Вот здесь и включается Интегрирующее звено. Пока двигатель легко вращается, оно почти никак себя не проявляет. Но когда механизм остановится, а задание на входе не равно нулю, Интегратор начинает накапливать сигнал на выходе. Скорость нарастания выходного сигнала пропорциональна входному, чем больше напряжение на входе тем быстрее нарастает на выходе. Когда двигатель остановится, недостигнутая координата заставит постепенно нарастать задание, и таким образом привод дожмет нужную координату.
Теперь, зная принцип действия можно подобрать коэффициент интегрирования TN. Он влияет на скорость установления координаты, и его превышение вызовет возбуждение двигателя. Это дополнительно можно сгладить Дифф-звеном
Можно было рассказать полнее и последовательней, с формулами, но заметка итак непозволительно велика для Форума. Утрамбовал как мог.
С вуажением, SAN