Страница 4 из 11

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 31 янв 2012, 21:49
Nick
Все зависит от того, что мы подаем на ПИД pid.command. Может подавать желаемое положение, тогда ПИД будет регулировать положение, можем скорость, тогда ПИД будет стараться удержать скорость, эта система сама настаивается на управление.

Также и ПИД может управлять сервой по скорости, может по моменту, может по положению. От всего этого будут зависеть оптимальные параметры ПИД.

И еще в качатстве обратной связи ПИД получает у нас что? Обычно, положение от энкодера, значит и команда должна быть на положение.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 31 янв 2012, 22:51
Lexxa
Разберем пример.
Пусть станку необходимо переместить ось на 0.5 метра со скоростью 0.1 м/с.
Для определенности считать будем в системе СИ как в школе, единцу станка возьмем метр.
Руководствуемся схемой ПИД из мануала (стр.82).
Рассмотрим схему в упрощенном варианте, т.е. уберем всякие ограничения типа deadband, max-error, max-cmd и max-output.
Входные сигналы - command, feedback и enable, но он нас особо не интересует.
Выходные - error и output.
Вот я никак не могу связать эту схему с переменной скоростью.
Т.е. каким образом ЕМС заставит двигаться все эти полметра с постоянной не максимальной скоростью используя только комманд и фидбэк?
Я вижу только один способ - толчковый.
У кого настроен уже более менее ПИД, посмотрите, куда завязан пин pid.<loopnum>.error? Просто у меня нигде не используется.
Итак по схеме. Предположим, что command есть положение в метрах.
Важная формула:

Код: Выделить всё

output = bias + error * Pgain + errorI * Igain + errorD * Dgain + command * FF0 + commandD * FF1 + commandDD * FF2
, где
bias - смещение
Pgain - коэффициент P
Igain - коэффициент I
Dgain - коэффициент D
FF0 - коэффициент FF0
FF1 - коэффициент FF1
FF2 - коэффициент FF2
command - задание
commandD - производная задания
commandDD - вторая производная задания
Не могу понять, как регулируется скорость оси??
Мне думается, что используя в качестве command положение мы заставляем конфликтовать ПИД ЧПУ и ПИД привода.
За то понятно, что для правильной работы станка необходимо, чтобы command была скоростью, и чтобы EMC расчитывал скорость "наперед". Тогда ПИД ЧПУ (часть с P I D коэффициентами) будет выполнять дублирующую функцию и мало влиять на движение, зато коэффициенты FFn окажутся как нельзя кстати.
ПИД привода обеспечивает и заданную скорость и заданный момент без вмешательства извне. Поскольку на двигателе постоянный момент, то ускорение тоже постоянная величина.
У всех есть такое

Код: Выделить всё

net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command
?
Это значит что комманд это расстояние? Судя по схеме ПИД должен будет передвинуть согласно коэффициентам ось с максимально возможной скоростью.

Предположим, что комманд мы как-то сделали скоростью, например расчитав его из подачи.
Ник, можно это сделать?
Тогда коэффициеты P, I, D своего смыслового значения не теряют (не теряют?), а вот FF0, FF1 и FF2 получаются несколько иными, поскольку
FF0 есть множитель скорости, своего рода масштаб
FF1 - величина, характеризующая ускорения
FF2 - величина, характризующая ускорение ускорения.
Как и писалось в http://wiki.linuxcnc.org/cgi-bin/wiki.pl?PiD
Nightv, ты говорил, что когда ты поставил P=I=D=0, то вместо нескольких сантиметров у тебя станок проехал на значительно большее расстояние? Так и должно быть. Какое перемещение ты при этом выставил и какое значение FFn было? Станок проехал и остановился? получилось что output = command * FF0 + commandD * FF1 + commandDD * FF2, т.е. выходной сигнал (скорость) была прапорционален перемещению.

Я хочу заставить ПИД ЕМС регулировать скорость, а не перемещение.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 31 янв 2012, 22:54
Lexxa
Ник, согласен про фидбэк. Обычно, по умолчанию, это сигнал энкодера. Что мешает его пересчитать в скорость? Ничего вроде бы.
Коллеги, как вы считаете, Если заставить ЕМС ПИДом регулировать скорость, будет ли это мешать ЕМС держать точность перемещений?

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 31 янв 2012, 23:32
Impartial
Lexxa писал(а):Разберем пример.
Пусть станку необходимо переместить ось на 0.5 метра со скоростью 0.1 м/с.
ЕМС работает на трех потоках. Первый,( не помню как называется) самый медленный около 50мс, в нем работает сам ЕМС и выдает набор координат. Второй - servo thread в этом потоке работают компоненты ХАЛ. Третий ,base thread в нем работает только одна задача - синтезатор частоты для шаговых двигателей. Если их нет, то не используется и можно отключить.
Интерполятор разбивает путь на точки, а планировщик траектории привязывает их к времени.
В случае сервопривода на вход ПИД ХАЛ подается эта разбитая на время первого потока 50 мс временная траектория. Т.е. ПИД получает задание скорости каждые 50мс(скорость первого потока). Далее уже сам ПИД компонент ХАЛ с дискретностю серво потока пытается отследить эту скорость.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 31 янв 2012, 23:38
Nick
Lexxa писал(а):За то понятно, что для правильной работы станка необходимо, чтобы command была скоростью, и чтобы EMC расчитывал скорость "наперед". Тогда ПИД ЧПУ (часть с P I D коэффициентами) будет выполнять дублирующую функцию и мало влиять на движение, зато коэффициенты FFn окажутся как нельзя кстати.
Да, если есть два ПИД один на приводе, один в емс2, то они оба дублируются, никуда от этого не деться. При этом на ПИД привода могут быть такие же FFn. ПИД - это условное название, коэффициентов может быть больше (или меньше, но тогда его могут называть ПИ).

FFn служат для компенсации различных дополнительных составляющих возникающих при движении, т.к. мы знаем физику процесса, к стандартным PID мы добавляем эти FFn, они могут компенсировать трение и инерцию. В других системах которые регулируют температуру или что-нибудь вообще экзотическое эти параметры могут быть другими.

По ускорению, все правильно помимо значений ПИД, которые управляют непосредственно приводом emc2 должен знать максимальную скорость и ускорение. На самом деле это знает другой компонент - motion, который планирует траекторию. Совершенно верно, управляться привод будет как бы рывками, но рывки эти будут длинно 1 миллисекунда (или меньше, зависит от servo-thread). Вообще, т.к. траектория рассчитывается в servo-thread, значит задания выходят тоже раз в servo-thread. Те же stepgen получают необходимую частоту на следующий servo-thread с такой же частотой и на протяжении этого времени едут к заданной точке.

Если у нас есть внешний PID можно просто выдавать на него задание в нужной ему величине и все. Если его нет, то мы делаем свой PID и урпавляем непосредственно выходом на усилок движка.
Lexxa писал(а):Предположим, что комманд мы как-то сделали скоростью, например расчитав его из подачи.
Ник, можно это сделать?
Да, только рассчитывается он из положения, просто берется производная положения по времени. (Все работает численно.)
Можно получать и скорость и ускорение. Для этого как я уже писал используется компонент ddt, он выдает производную произвольной величины по времени.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 01 фев 2012, 00:59
Lexxa
Замечательно, по крайней мере все встает на свои места

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 01 фев 2012, 10:05
Lexxa
Надо наверно тему в линукс перенести

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 01 фев 2012, 11:42
Nick
Это общий вопрос по ПИД, вообще нужно как-то определиться с использованием одного ПИД и двух ПИД, когда это оправдано.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 01 фев 2012, 16:46
Lexxa
Да, отделить можно.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 24 фев 2012, 10:35
Hunter
Неплохо изложенная теория в картинках. Может пригодится кому...

http://www.bookasutp.ru/Chapter5_1.aspx

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 19:39
Lexxa
Народ, разжуйте как запустить это http://www.linuxcnc.org/index.php/germa ... 10&id=6495
Делаю

Код: Выделить всё

В двух словах, чтобы ее запустить нужно: 
0. скачать-распаковать 
1. установить компоненты sudo comp --install *.comp
2. исправить настройки в файле hal, чтобы соответствовали твоему оборудованию 
3. запустить halrun -f config.hal
на этапе 1 получаю:

Код: Выделить всё

sudo: comp: command not found
Где взять comp этот??

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 20:32
nkp
Распаковать , положить в папку со своей конфиг.
В ини прописать в [DISPLAY]

Код: Выделить всё

PYVCP = servo-tuning-gui.xml
Уже должна загруз панель:
(для просмотра содержимого нажмите на ссылку)
Выделение_116.png (2766 просмотров) <a class='original' href='./download/file.php?id=5554&mode=view' target=_blank>Загрузить оригинал (65.63 КБ)</a>
В [HAL]

Код: Выделить всё

POSTGUI_HALFILE =    config.hal
вот здесь все прописывать в хал в соответствии со своими настройками

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 20:49
Lexxa
)) понятно, спс

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 21:22
Lexxa
А в своем хале закоментить всё, что продублировано в config.hal или оно подставится вместо родных?
падает с ошибкой:

Код: Выделить всё

Print file information:
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/share/linuxcnc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.5
LINUXCNC - 2.5.0
Machine configuration directory is '/home/lexxa/linuxcnc/configs/my_LinuxCNC_machine'
Machine configuration file is '6Р13Ф3_test.ini'
INIFILE=/home/lexxa/linuxcnc/configs/my_LinuxCNC_machine/6Р13Ф3_test.ini
PARAMETER_FILE=emc.var
TASK=milltask
HALUI=halui
DISPLAY=axis
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
INFO CLASSICLADDER-   No ladder GUI requested-Realtime runs till HAL closes.
Starting TASK program: milltask
Starting DISPLAY program: axis
HAL: ERROR: duplicate thread name servo-thread

THREADS: ERROR: could not create thread 'servo-thread'

Shutting down and cleaning up LinuxCNC...
Running HAL shutdown script
Killing task linuxcncsvr, PID=10117
Killing task milltask, PID=10174
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done

Debug file information:
Can not find -sec MOT -var MOT -num 1 
Can not find -sec IO -var IO -num 1 
Can not find -sec LINUXCNC -var NML_FILE -num 1 
Can not find -sec EMC -var NML_FILE -num 1 
config.hal:4: Warning: File contains DOS-style line endings.
insmod: error inserting '/usr/realtime-2.6.32-122-rtai/modules/linuxcnc/threads.ko': -1 Operation not permitted
config.hal:4: exit value: 1
config.hal:4: insmod failed, returned -1
See the output of 'dmesg' for more information.
10117
  PID TTY      STAT   TIME COMMAND
10174
  PID TTY      STAT   TIME COMMAND
Stopping realtime threads
Unloading hal components

Kernel message information:
[12187.665821] I-pipe: Domain RTAI registered.
[12187.665833] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[12187.665835] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[12187.665841] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[12187.665843] PIPELINE layers:
[12187.665846] f8385e20 9ac15d93 RTAI 200
[12187.665848] c085cb20 0 Linux 100
[12187.694836] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[12187.695054] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[12187.695058] RTAI[sched]: hard timer type/freq = APIC/12557015(Hz); default timing: periodic; linear timed lists.
[12187.695062] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 2210282000 hz.
[12187.695064] RTAI[sched]: timer setup = 999 ns, resched latency = 2943 ns.
[12187.695211] RTAI[usi]: enabled.
[12187.781133] RTAI[math]: loaded.
[12187.891568] hm2: loading Mesa HostMot2 driver version 0.15
[12187.895711] hm2_pci: loading Mesa AnyIO HostMot2 driver version 0.7
[12187.895764] hm2_pci: discovered 5i20 at 0000:01:07.0
[12187.895849]  hm2_5i20.0: firmware: requesting hm2/5i20/SVST8_4.BIT
[12188.032842] hm2/hm2_5i20.0: 72 I/O Pins used:
[12188.032851] hm2/hm2_5i20.0:     IO Pin 000 (P2-01): Encoder #1, pin B (Input)
[12188.032854] hm2/hm2_5i20.0:     IO Pin 001 (P2-03): Encoder #1, pin A (Input)
[12188.032857] hm2/hm2_5i20.0:     IO Pin 002 (P2-05): Encoder #0, pin B (Input)
[12188.032860] hm2/hm2_5i20.0:     IO Pin 003 (P2-07): Encoder #0, pin A (Input)
[12188.032863] hm2/hm2_5i20.0:     IO Pin 004 (P2-09): Encoder #1, pin Index (Input)
[12188.032867] hm2/hm2_5i20.0:     IO Pin 005 (P2-11): Encoder #0, pin Index (Input)
[12188.032870] hm2/hm2_5i20.0:     IO Pin 006 (P2-13): PWMGen #1, pin Out0 (PWM or Up) (Output)
[12188.032873] hm2/hm2_5i20.0:     IO Pin 007 (P2-15): PWMGen #0, pin Out0 (PWM or Up) (Output)
[12188.032877] hm2/hm2_5i20.0:     IO Pin 008 (P2-17): PWMGen #1, pin Out1 (Dir or Down) (Output)
[12188.032880] hm2/hm2_5i20.0:     IO Pin 009 (P2-19): PWMGen #0, pin Out1 (Dir or Down) (Output)
[12188.032883] hm2/hm2_5i20.0:     IO Pin 010 (P2-21): PWMGen #1, pin Not-Enable (Output)
[12188.032887] hm2/hm2_5i20.0:     IO Pin 011 (P2-23): PWMGen #0, pin Not-Enable (Output)
[12188.032890] hm2/hm2_5i20.0:     IO Pin 012 (P2-25): Encoder #3, pin B (Input)
[12188.032893] hm2/hm2_5i20.0:     IO Pin 013 (P2-27): Encoder #3, pin A (Input)
[12188.032896] hm2/hm2_5i20.0:     IO Pin 014 (P2-29): Encoder #2, pin B (Input)
[12188.032899] hm2/hm2_5i20.0:     IO Pin 015 (P2-31): Encoder #2, pin A (Input)
[12188.032902] hm2/hm2_5i20.0:     IO Pin 016 (P2-33): Encoder #3, pin Index (Input)
[12188.032905] hm2/hm2_5i20.0:     IO Pin 017 (P2-35): Encoder #2, pin Index (Input)
[12188.032908] hm2/hm2_5i20.0:     IO Pin 018 (P2-37): IOPort
[12188.032911] hm2/hm2_5i20.0:     IO Pin 019 (P2-39): PWMGen #2, pin Out0 (PWM or Up) (Output)
[12188.032914] hm2/hm2_5i20.0:     IO Pin 020 (P2-41): IOPort
[12188.032917] hm2/hm2_5i20.0:     IO Pin 021 (P2-43): PWMGen #2, pin Out1 (Dir or Down) (Output)
[12188.032920] hm2/hm2_5i20.0:     IO Pin 022 (P2-45): IOPort
[12188.032923] hm2/hm2_5i20.0:     IO Pin 023 (P2-47): PWMGen #2, pin Not-Enable (Output)
[12188.032926] hm2/hm2_5i20.0:     IO Pin 024 (P3-01): IOPort
[12188.032928] hm2/hm2_5i20.0:     IO Pin 025 (P3-03): IOPort
[12188.032931] hm2/hm2_5i20.0:     IO Pin 026 (P3-05): IOPort
[12188.032933] hm2/hm2_5i20.0:     IO Pin 027 (P3-07): IOPort
[12188.032935] hm2/hm2_5i20.0:     IO Pin 028 (P3-09): IOPort
[12188.032938] hm2/hm2_5i20.0:     IO Pin 029 (P3-11): IOPort
[12188.032940] hm2/hm2_5i20.0:     IO Pin 030 (P3-13): IOPort
[12188.032943] hm2/hm2_5i20.0:     IO Pin 031 (P3-15): IOPort
[12188.032945] hm2/hm2_5i20.0:     IO Pin 032 (P3-17): IOPort
[12188.032948] hm2/hm2_5i20.0:     IO Pin 033 (P3-19): IOPort
[12188.032950] hm2/hm2_5i20.0:     IO Pin 034 (P3-21): IOPort
[12188.032953] hm2/hm2_5i20.0:     IO Pin 035 (P3-23): IOPort
[12188.032955] hm2/hm2_5i20.0:     IO Pin 036 (P3-25): IOPort
[12188.032957] hm2/hm2_5i20.0:     IO Pin 037 (P3-27): IOPort
[12188.032960] hm2/hm2_5i20.0:     IO Pin 038 (P3-29): IOPort
[12188.032962] hm2/hm2_5i20.0:     IO Pin 039 (P3-31): IOPort
[12188.032965] hm2/hm2_5i20.0:     IO Pin 040 (P3-33): IOPort
[12188.032967] hm2/hm2_5i20.0:     IO Pin 041 (P3-35): IOPort
[12188.032970] hm2/hm2_5i20.0:     IO Pin 042 (P3-37): IOPort
[12188.032972] hm2/hm2_5i20.0:     IO Pin 043 (P3-39): IOPort
[12188.032975] hm2/hm2_5i20.0:     IO Pin 044 (P3-41): IOPort
[12188.032977] hm2/hm2_5i20.0:     IO Pin 045 (P3-43): IOPort
[12188.032980] hm2/hm2_5i20.0:     IO Pin 046 (P3-45): IOPort
[12188.032982] hm2/hm2_5i20.0:     IO Pin 047 (P3-47): IOPort
[12188.032985] hm2/hm2_5i20.0:     IO Pin 048 (P4-01): IOPort
[12188.032987] hm2/hm2_5i20.0:     IO Pin 049 (P4-03): IOPort
[12188.032989] hm2/hm2_5i20.0:     IO Pin 050 (P4-05): IOPort
[12188.032992] hm2/hm2_5i20.0:     IO Pin 051 (P4-07): IOPort
[12188.032994] hm2/hm2_5i20.0:     IO Pin 052 (P4-09): IOPort
[12188.032997] hm2/hm2_5i20.0:     IO Pin 053 (P4-11): IOPort
[12188.032999] hm2/hm2_5i20.0:     IO Pin 054 (P4-13): IOPort
[12188.033002] hm2/hm2_5i20.0:     IO Pin 055 (P4-15): IOPort
[12188.033004] hm2/hm2_5i20.0:     IO Pin 056 (P4-17): IOPort
[12188.033006] hm2/hm2_5i20.0:     IO Pin 057 (P4-19): IOPort
[12188.033009] hm2/hm2_5i20.0:     IO Pin 058 (P4-21): IOPort
[12188.033011] hm2/hm2_5i20.0:     IO Pin 059 (P4-23): IOPort
[12188.033014] hm2/hm2_5i20.0:     IO Pin 060 (P4-25): IOPort
[12188.033016] hm2/hm2_5i20.0:     IO Pin 061 (P4-27): IOPort
[12188.033019] hm2/hm2_5i20.0:     IO Pin 062 (P4-29): IOPort
[12188.033021] hm2/hm2_5i20.0:     IO Pin 063 (P4-31): IOPort
[12188.033024] hm2/hm2_5i20.0:     IO Pin 064 (P4-33): IOPort
[12188.033026] hm2/hm2_5i20.0:     IO Pin 065 (P4-35): IOPort
[12188.033028] hm2/hm2_5i20.0:     IO Pin 066 (P4-37): IOPort
[12188.033031] hm2/hm2_5i20.0:     IO Pin 067 (P4-39): IOPort
[12188.033033] hm2/hm2_5i20.0:     IO Pin 068 (P4-41): IOPort
[12188.033036] hm2/hm2_5i20.0:     IO Pin 069 (P4-43): IOPort
[12188.033038] hm2/hm2_5i20.0:     IO Pin 070 (P4-45): IOPort
[12188.033041] hm2/hm2_5i20.0:     IO Pin 071 (P4-47): IOPort
[12188.033130] hm2/hm2_5i20.0: registered
[12188.033133] hm2_5i20.0: initialized AnyIO board at 0000:01:07.0
[12188.047442] creating ladder-state
[12191.048260] HAL: ERROR: duplicate thread name servo-thread
[12191.048269] THREADS: ERROR: could not create thread 'servo-thread'
[12191.805436] hm2_5i20.0: dropping AnyIO board at 0000:01:07.0
[12191.805447] hm2/hm2_5i20.0: unregistered
[12191.808991] hm2_pci: driver unloaded
[12191.812738] hm2: unloading
[12194.004922] RTAI[math]: unloaded.
[12194.064778] SCHED releases registered named ALIEN RTGLBH
[12194.080329] RTAI[malloc]: unloaded.
[12194.180038] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[12194.183493] I-pipe: Domain RTAI unregistered.
[12194.183504] RTAI[hal]: unmounted.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 22:10
Nick
Lexxa писал(а):HAL: ERROR: duplicate thread name servo-thread
THREADS: ERROR: could not create thread 'servo-thread'
Скинь целиком свои конфиги...

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 22:52
Lexxa
Закинул в прицеп

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 23:52
Nick
Наверное твой родной hal будет уже не нужен, в том который config.hal и так все, что нужно загружается... т.е. закомменти его в ini:
# HALFILE = 6Р13Ф3_test.hal

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 28 май 2012, 23:55
Lexxa
ок, попробую) спс

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 01 июн 2012, 01:31
xentaur
Nick писал(а):Все зависит от того, что мы подаем на ПИД pid.command. Может подавать желаемое положение, тогда ПИД будет регулировать положение, можем скорость, тогда ПИД будет стараться удержать скорость, эта система сама настаивается на управление.

Также и ПИД может управлять сервой по скорости, может по моменту, может по положению. От всего этого будут зависеть оптимальные параметры ПИД.

И еще в качатстве обратной связи ПИД получает у нас что? Обычно, положение от энкодера, значит и команда должна быть на положение.
Вывод из последней фразы неточен. Так как команда на управление (скорость, положение, момент, температура...) и сигнал обратной связи выбирается с учетом того что нужно достичь (контролировать и корректировать) в результате управления.
Например, для сверлильного станка не важна траектория достижения точки позиционирования (чем быстрее - тем лучше, а по прямой или нет неважно), а значит и задание и обратная связь по положению проще.
Для приводов подач фрезерных, токарных и др. станков важно обойти контур с заданной скоростью и поэтому задаем желаемую скорость, а контролируем по положению.
Для главных приводов важно контролировать скорость - достаточно тахогенератора или таходатчика с ПИ регулятором.
Момент важен в устройствах натяжения, для инструментов критичных к силе.
Сами параметры ПИД для каждого случая и системы свои.

Для приводов подач нужны сервы со встроенным заданием и контролем скорости (или покруче). Контроль по положению осуществляет УЧПУ, в нашем случае EMC2, и корректирует скорость. Задание скорости и опрос привода в ЕМС2 происходит 1000 раз в секунду как и во многих промышленных системах.

Re: ПИД-регулирование. Общие вопросы.

Добавлено: 01 июн 2012, 10:40
Lexxa
xentaur писал(а):чем быстрее - тем лучше, а по прямой или нет неважно
ооооооооооооочень важно по какой траектории сверло придет в точку сверления!!!!
xentaur писал(а):Для приводов подач фрезерных, токарных и др. станков важно обойти контур с заданной скоростью и поэтому задаем желаемую скорость, а контролируем по положению.
Нет. Если управляешь скоростью, то контролировать надо скорость (про ПИД), и одновременно контролировать положение (про траекторию)
Все современные серовприводы имеют двойной контур ПИД - момент и скорость. Не современные - только момент. Поддержанием заданной(расчетной) скорости занимается в этом случае ЧПУ, а привод обеспечивает лишь заданный момент. Поэтому если, например, сервопривод имеет управление +-10В, то супер неправильно подгонять значения PID, регулирующего положение, чтобы станок нормально ездил.