PID 명령어
성능 사양
항 목 | 규 격 | 비 고 | |
PID 상수 설정범위 | 비례상수 (Kp) | 1 – 6553500 | PID_2(주) |
적분상수 (Ki) | 0 – 30000 (0.0초 – 3000.0초) | 0 : 적분동작 금지 | |
미분상수 (Kd) | 0 – 30000 (0.00초 – 300.00초) | 0 : 미분동작 금지 | |
Sampling 주기 (Ts) | 1 – 6000 (0.01초 – 60.00초) |
| |
설정값(SV)의 설정범위 | 0 – 16,000 |
| |
현재값(PV)의 입력범위 | 0 – 16,000 |
| |
조작 출력값(MV)의 범위 | 0 – 16,000 |
| |
수동조작값의 설정범위 | 0 – 16,000 |
| |
PID 제어 Loop | 32 Loop |
| |
제어동작 | 정/역 동작 제어기능 |
| |
연산방식 | 측정치 미분형 |
|
(주)PID_2 : 2012년도 이후 생산된 CPU 모듈에 탑재된 기능으로 이전 버전의 PID 대비, 정밀도가 향상되었고, Auto Tuning 알고리듬을 수정하여 보다 폭 넓은 응용분야에 적용 가능하도록 하였습니다. 특히, 이 버전에는 목표값에 신속히 도달하는 제어 효과를 얻기 위하여 자기학습 기능이 포함되어 있습니다. 아래의 표에 각 기종별 PID_2 기능이 지원되는 Version을 표시하였습니다.
CPU | XP | CP | BP | PLC-S | CICON |
Version | V4.27 | V4.26 | V1.31 | V1.37 | V3.10 |
PID 제어 명령
명령 일람
참고) PID 특수프로그램을 사용하실 경우 아래표의 설명될 명령어는 자동으로 작성되어 직접 입력하실 필요가 없습니다. LADDER 프로그램을 이용하여 직접 작성하실 경우 응용명령어란을 이용하여 아래 심볼과 같이 입력합니다.
분류 | 명령어 | 심볼 | 처리 내용 | 실행 조건 |
PID 제어용 데이터설정 | PIDINIT |
| S로 지정한 워드 디바이스에 지정 되어있는 PID 제어용 데이터를 설정합니다.
|
|
PID 연산용 | PIDCAL |
| S로 지정한 SV값,PV값에 의해 PID연산을 행하고, 결과를 S로 지정한 워드 디바이스의 MV영역에 저장합니다.
|
|
PIDINIT 명령
S로 지정한 워드 디바이스에 지정 되어있는 PID 제어용 데이터를 설정합니다.
제어용 데이터 설정위치는 아래의 표를 참고합니다.
Offset | 항 목 | 내 용(설정 범위) | 범 위 | 비 고 |
0 | Loop 수 |
| 1 – 32 | 전체Loop 공통 |
1 | 1 Scan 실행 Loop 수 |
| 1 – 32 | |
2 (0) | 연산식 선택 | 정동작(0)/역동작(1) | 0 / 1 | 각 Loop별 설정 |
3 (1) | Sampling 주기 (Ts) | 0.01 – 60.00초 | 1 – 6,000 | |
4 (2) | 비례정수 (Kp) | 0.01 – 65,535 | 1 – 65,535 | |
5 (3) | 적분정수 (Ki) | 0.01 – 3000.0초 | 0 – 30,000 | |
6 (4) | 미분정수 (Kd) | 0.00 – 300.00초 | 0 – 30,000 | |
7 (5) | 필터계수 (α) | 0.00 – 0.99 | 0 –99 | |
8 (6) | 조작량 하한 (MVLL) | 0 – 16,000 | 0 – 16,000 | |
9 (7) | 조작량 상한 (MVHL) | 0 –16,000 | 0 – 16,000 | |
10 (8) | 조작량 변화율 제한(∆MVL) | 0 –16,000 | 0 – 16,000 | |
11 (9) | MV 자동전달 #BIT0 | 사용안함(0) / 사용함(1) | 0 / 1 | |
AutoTuning 초기 안정화 판단 시간 #BIT4~7 | 0 ~ 10분 | 0 – 10 | ||
AutoTuning 초기 안정화 판단 비율 #BIT8~15 | 0.00 ~ 10.00 % | 0 – 200 | ||
12 (10) | SV 경사기능 | 0 – 1,000회 | 0 : 사용안함 | |
13 (11) | PV 관성량 | 0 – 16,000 | 0 – 16,000 | |
14 (12) | ON/OFF제어시간 | 1.00초 – 60.00초 | 1 – 6000 0 : 사용안함 | |
15 (13) | PID동작 상태(에러코드) |
| *표참조 | |
16 (14) | FLAGS |
|
| 유저 사용 불가 |
17 (15) | 시스템 영역 | 시스템 영역 |
| |
18 (16) |
| |||
19 (17) |
| |||
20 (18) |
| |||
21 (19) |
|
공통 설정 데이터
Loop 수 : PID연산을 실행시키는 루프 수를 설정 합니다. 최대 32개의 루프가 지원 가능합니다.
1Scan 실행 Loop 수 : 샘플링 주기에 이른 루프가 다수 있을 때, 1회의 PID연산으로 몇 개의 루프를 실행시킬 것인지를 설정 합니다.
각 루프 별 설정 데이터
연산식 선택 : PID 기본 개념에서 설명한 정,역동작을 지정합니다.
샘플링 주기 : PID 연산을 행하는 주기를 설정합니다. 일반적으로 이 주기는 최대 MV출력 상태에서 측정값(PV)에 변화가 발생되는 시간 간격으로 지정하면 무난합니다. 통상, 건물의 온도제어를 예로 들자면 5초 내외가 무난합니다.
비례 정수 : PID 기본 개념에서 설명한 비례 정수를 설정합니다. Kp는 1에서 65535 사이의 값으로 지정합니다. 만약 ‘기능선택 플래그’의 Bit #2가 Set 되어 있다면, 설정치의 100배 값이 실제 연산에 사용됩니다. 즉, Kp 값이 100에서 6553500 사이의 범위를 갖게 되는 것입니다. 이 Bit는 Auto Tuning의 결과에 따라 자동으로 설정되며, 사용자가 직접 변경할 수 도 있습니다. 이 기능은 PID_2 기능이 탑재된 CPU Version에 포함되어 있습니다.
적분 정수 : PID 기본 개념에서 설명한 적분 정수를 설정합니다.
미분 정수 : PID 기본 개념에서 설명한 미분 정수를 설정합니다.
필터 계수 : 측정값에 대한 필터를 어느 정도 걸 것인가를 설정합니다. 0에 가까울수록 필터 효과가 없게 됩니다.
조작량 하한 : 자동모드 시, PID연산에서 산출한 조작량의 하한값을 설정합니다. 조작량이 조작량 하한값 미만일때는 조작량 하한값을 조작량으로 출력 합니다.
조작량 상한 : 자동 모드 시, PID연산에서 산출한 조작량의 상한값을 설정합니다. 조작량이 조작량 상한값을 넘을때는 조작량 상한값을 조작량으로 출력 합니다.
조작량 변화율 제한 : 이전 SCAN에서의 조작량(MV)과 이번 SCAN에서의 조작량을 비교하여 조작량 변화량이 조작량변화율 제한 설정값 보다 크면 여기에 설정된 값을 적용합니다
MV 자동전달 : MV 자동전달 사용함(1) : 자동 모드시 MV 값이 수동 조작량으로 자동 전달 됩니다. 수동 모드로 전환시 현재 조작량값을 유지 할 수 있습니다. MV 자동전달 사용안함(0) : 수동 모드로 전환시 초기 설정 값이 조작량으로 적용 됩니다.
SV 경사기능 : 목표값(SV)값의 갑작스런 변화로 인한 오버슈트의 발생을 억제하고 안정된 제어를 위해 목표값(SV)의 변경 시 이 변화량을 SV경사값으로 지정한 단계(0 ~ 1000)로 나누어 샘플링 주기(Ts)때마다 점차로 증가 또는 감소 시켜 이전 목표값을 변경된 목표값으로 점진적으로 변경 적용합니다.
PV 관성량 : PID_2 버전에 추가된 측정값입니다. Auto Tuning 과정 중 MV 출력에 따른 PV 변화를 측정하여 관성량을 검출합니다. 검출된 관성량은 이 곳에 자동 기록됩니다. Auto Tuning 과정 없이 사용자가 지정할 수 도 있습니다. PV 관성량은 자기학습/제어 기능의 동작 중 활용되는데, MV 출력을 차단하는 시기를 판단할 때 사용됩니다.
ON/OFF 제어시간 : ON/OFF 제어 모드를 사용하는 경우 이 곳에 제어 기준 시간을 지정합니다.
제어시간은 0초부터 60.00초 까지 10mS 단위로 지정하며, ON/OFF 제어를 사용하지 않는 경우 ‘0’을 지정합니다. PID 연산 결과에 따라 이 시간 범위 이내에서 ON 시간이 결정되며, ON 시간은 Sampling 시간의 정수배가 적용됩니다. 따라서, 제어 출력 해상도는 (Sampling시간)/(ON/OFF 제어시간)으로 계산될 수 있습니다. ON 상태인 경우에는 MV 값이 조작량 상한 값으로 출력되며, OFF 상태인 경우 MV가 조작량 하한 값으로 출력됩니다. ON/OFF 제어를 사용하는 경우 ON/OFF 제어시간은 샘플링 주기*10 이상을 권장합니다.
PID 동작상태(에러코드) : PID 연산을 하기 위하여 각 설정값들을 초기화 하고 설정오류 여부를 검사하여야 합니다. 이 작업을 PID 초기화 명령(PIDINIT)이 진행합니다. 설정값에 오류가 있거나 PID연산 중 오류가 발생하면 PID동작상태 영역에 오류가 저장됩니다. 또한 오류발생시에는 PID연산 명령(PIDCAL)이 수행되지 않을 수 도 있습니다.
Code | 항 목 | 내 용 | 비 고 |
0 | 이상 없음 |
|
|
1 | LOOP설정값 이상 | LOOP수, 1SCAN LOOP수가 1 ~ 32범위를 벗어나는 값일 경우. | 전체 LOOP 공용 첫번째LOOP 상태 영역에 저장됨 |
2 | 사용안함 | 사용안함 | |
3 | 연산식 선택 이상 | 연산식 선택값이 0, 1이외의 값일 경우. | 각 LOOP별 운용 각 LOOP의 상태 영역에 저장됨 |
4 | 샘플링주기(Ts) 이상 | 샘플링주기가 1 ~ 6000 범위를 벗어나는 값일 경우. | |
5 | 비례정수(Kp) 이상 | 비례정수가 1 ~ 65535 범위를 벗어나는 값일 경우. | |
6 | 적분정수(Ki) 이상 | 적분정수가 0 ~ 30000 범위를 벗어나는 값일 경우. | |
7 | 미분정수(Kd) 이상 | 미분정수가 0 ~ 30000 범위를 벗어나는 값일 경우. | |
8 | 필터계수(α) 이상 | 필터계수가 0 ~99 범위를 벗어나는 값일 경우. | |
9 | 조작량하한 이상 | 조작량하한값이 0 ~ 16000 범위를 벗어나는 값일 경우. | |
10 | 조작량상한 이상 | 조작량상한값이 0 ~ 16000 범위를 벗어나는 값일 경우. | |
11 | 조작량변화율 이상 | 조작량변화율값이 0 ~ 16000 범위를 벗어나는 값일 경우. | |
12 | MV 자동전달 이상 | MV 자동전달기능 선택값이 0, 1이외의 값일 경우. | |
13 | SV 경사기능 이상 | SV 경사기능기능값이 0 ~ 1000 범위를 벗어나는 값일 경우. | |
14 | AutoTuning PID 산출값 이상 | AutoTuning으로 계산된 PID값이 범위를 벗어나는 경우 | |
15 | AutoTuning dMV값 이상 | AutoTuning시 MV최대 출력으로 MV편차가 계산되지 않아 AutoTuning이 실패하는 경우 | |
16 | AutoTuning 초기 안정화 실패 | AutoTuning의 초기 안정화 기능 사용시 안정화에 실패하는 경우 |
첫스캔시 설정값에 오류가 있는지 체크하여 에러코드로 알려줍니다.
FLAGS(명령 / 상태플래그) : 각종 PID 연산 상태를 표시합니다.
PID-INIT OK : PIDINIT 명령에 의하여 해당 Loop의 초기화가 정상적으로 완료되었음을 표시합니다. PLC 운전을 시작하고 샘플링시간 이후 초기화를 시작 합니다. (0=이상, 1=정상)
PID CALC : PID 연산주기를 판단하기 위하여 내부적으로 사용되는 플래그입니다.
CALC DELAY : PID 연산은 매 스캔 마다 ‘1SCAN실행 LOOP수’를 기준으로 연산을 실시하게 됩니다. 만약, 동시에 연산하여야 하는 LOOP 수가 이 기준을 초과하는 경우 초과된 LOOP의 연산은 다음 스캔으로 순연되고, 이 플래그가 SET 상태로 표시됩니다. 이러한 경우가 빈번하게 발생되면, ‘1SCAN실행 LOOP수’를 조절하거나 ‘Sampling 주기’를 조절해 주십시오
ON/OFF STATUS : ‘ON/OFF 제어기능’을 사용하는 경우, ON출력 단계와 OFF 출력 단계를 구별하기 위하여 내부적으로 사용되는 플래그입니다. 이 플래그는 ON 출력 단계에서 SET 됩니다. 하지만, 실제 제어 출력에 직접 사용하지 마십시오. 제어 출력의 판단은 PIDCAL명령의 MV 출력값을 이용하여야 정확한 제어가 가능합니다. MV 출력값이 ‘조작량 상한’에 정한 값과 동일할 때가 ON 출력이며, ‘조작량 하한’에 지정한 값과 동일할 때 OFF 출력으로 판단합니다.
WAIT LOOP INIT : 최초의 PIDCAL 명령이 수행되기 전 까지 SET 상태에 있습니다. Sampling 주기를 기준으로 최초의 PID 연산(PIDCAL 명령)이 수행되면 이 플래그는 RESET됩니다.
AUTO-TUNE CMD : Auto-Tuning을 개시할 때 이 플래그를 SET 하여 주십시오. 이 플래그를 SET하기 전에 반드시 목표값(SV)이 지정되어 있어야 합니다. PV가 목표값(SV)의 63% 수준에 도달되면 자동적으로 PID 상수가 계산되어 해당 영역에 기록되고, 이 후 PV 변화율이 '0' 으로 안정되면,이 플래그는 RESET 됩니다. 만약, 상수 계산을 실패한 경우 AUTO-TUNE ERROR 플래그가 SET되고 이전 상수를 사용하여 제어가 진행됩니다.
Auto Tune Cmd 종료 시에는 Bit 5, 6을 동시에 Reset 합니다.
Auto Tuning시 유의 사항
정,역동작에 맞는 목표값을 지정해야 합니다. 정동작인 경우 측정값 보다 큰 값을 역동작인 경우 측정값 보다 작은 값을 설정합니다.
측정값과 목표값의 차가 작은 경우 Auto Tuning이 정상적으로 되지 않거나, Error가 발생할 수 있습니다.
AUTO-TUNING : Auto-Tuning이 진행되는 동안 자동적으로 SET 됩니다. Auto-Tuning 이 종료되면 이 플래그는 자동 RESET되며, Tuning 결과에 따라 AUTO-TUNE ERROR 플래그가 SET 되거나(Auto-Tuning 실패) 계산된 상수가 해당 영역에 자동 기록(Auto-Tuning 성공)됩니다. Auto Tuning 진행 중 작업을 중단하고자 하는 경우 AUTO-TUNING, UTO-TUNING 비트를 Reset 합니다.
AUTO-TUNE ERROR : Auto-Tuning에 의한 상수 연산에 실패한 경우 이 플래그가 SET 됩니다. Error 발생시 AUTO-TUNE CMD, AUTO-TUNING 비트가 Reset 됩니다.
PIDCAL 명령
S로 지정한 SV값,PV값에 의해 PID연산을 행하고, 결과를 S로 지정한 워드 디바이스의 MV영역에 저장합니다.
연산용 데이터 설정위치는 아래의 표를 참고합니다.
Offset | 항 목 | 내 용 | 범 위 | 비 고 |
0 | 설정값 (SV) | PID 연산에 사용할 설정값 | 0 –16000 | 각 Loop별 운용 |
1 | 측정값 (PV) | PID 연산에 사용할 측정값 | 0 –16000 | |
2 | 조작량 (MV) | PID 연산 결과 | 0 –16000 | |
3 | 필터후 측정값 (PVnf) | 필터 계수가 적용된 측정값 | 0 –16000 | |
4 | 수동조작량 (MVMAN) | 수동 모드 조작량 | 0 –16000 | |
5 | 기능 선택 플래그 | Bit #0 : 자동(0) / 수동(1) Bit #1 : 자기 학습 기능 Enable Bit #2 : Kp x 100 Bit #15 : 학습 데이터 삭제 요구 |
| |
6 | 시스템 사용영역 (유저 사용 불가) |
|
| |
7 | ||||
8 | ||||
9 | ||||
10 | Status |
| ||
11 |
|
| ||
12 | ||||
13 | ||||
14 | ||||
15 | ||||
16 | ||||
17 | ||||
18 | ||||
19 |
각 루프 별 설정 데이터
설정값 :
제어하고자 하는 목표값을 입력합니다.
측정값 :
A/D 카드로부터 읽어들인 제어 대상의 현재값입니다. 사용자는 FROM명령을 이용하여 A/D 카드로부터 값을 읽어 측정값영역 값을 주기적으로 업데이트 해 주거나 MOV명령을 사용하여 다른 영역에 있는 측정값을 업데이트 해 주어야 합니다.
조작량 :
PID 연산의 결과값으로 D/A 카드 또는 I/O 카드을 사용하여 제어 대상에 출력해 주어야 합니다.
필터후 측정값 :
측정값(PV)의 노이즈 등으로 인한 순간적인 편차를 방지하기 위해 필터를 사용하며, 측정값(PV)를 필터처리하여 필터후 측정값(PVnf)영역에 저장합니다. 이때 필터 계수(α)가 0이면 측정값(PV)에 필터를 적용하지 않습니다. 이 영역은 모니터링만 가능합니다.
수동 조작량 :
수동 모드일 때, ‘수동 조작량’으로 설정된 값이 ‘조작량’으로 출력 됩니다.
수동/자동 선택 :
PID를 이용하여 자동으로 제어대상을 제어할 것인지, ‘수동 조작량’ 영역에 설정된 값을 제어대상에 출력할 것인지를 선택합니다.
기능선택 플래그 :
수동/자동 선택
PID를 이용하여 자동으로 제어대상을 제어할 것인지, ‘수동 조작량’ 영역에 설정된 값을 제어대상에 출력할 것인지를 선택합니다.
자기학습기능 Enable
PID_2 버전에 추가된 기능입니다. 이 기능은 기존의 PID제어 알고리듬에 기반한 제어동작과 더불어, 이전에 실행했던 PID 제어의 결과를 바탕으로 주어진 SV에 가장 적합한 MV 출력 레벨을 계산하여, 그것을 활용하도록 한 기능입니다. 이 기능을 활용하면 보다 빠른 시스템 응답 특성을 얻을 수 있습니다.
Kp x 100
PID_2 버전에 추가된 기능입니다. Kp 상수의 설정 범위를 100배 확장할 수 있는 기능입니다. 이 플래그는 Auto Tuning 동작의 결과에 따라 자동 설정됩니다. 이 플래그가 Set 되어 있는 동안의 Kp 상수는 [설정값 x 100] 으로 PID 연산에 적용됩니다. 그 결과, 실제 PID 연산에 적용될 수 있는 Kp 값의 범위는 1 부터 최대 6553500 까지가 됩니다. 이 플래그를 강제 Reset 시키는 경우 반드시 [Kp x 100]을 Kp 상수로 재설정해야 동일한 제어 효과를 얻을 수 있습니다.
자기학습 데이터 삭제
PID_2 버전에 추가된 기능입니다. 이 플래그가 Set 되면, 이미 수집되어 있는 자기학습 데이터를 모두 삭제하여 초기화합니다. 그리고, 이후 새로운 학습 데이터를 구축하게 됩니다. (자기학습 데이터는 PLC CPU 내부 전용 포멧으로 구성되어 있어 사용자가 이를 참조하여 이용할 수 없습니다.)
Status :
Bit | 기능 | 비고 |
0..3 | 시스템 영역 | |
4 | 자기학습 데이터 적용 중 | 수집된 자기학습 데이터를 이용하여 제어를 실시하고 있는 상태 |
5 | 자기학습 데이터 수집 중 | 자기학습 데이터를 수집하는 작업이 진행 중일 때 Set. (SV 설정값이 변경되면 자기학습 데이터 수집 기능이 기동됨) |
6 | 안정 | 제어 시스템이 안정적으로 유지되는 상태 (PV가 SV와 같고, MV 출력은 변화 없이 고정되어 있는 상태) |
7 | 자기학습 데이터 보유 | 자기학습 데이터가 메모리에 기억되어 있는 상태 |
8 | PV 관성량 데이터 보유 | PV 관성량 메모리에 ‘0’이 아닌 값이 저장되어 있으면 Set |
9..15 | 시스템 영역 |
주의 사항
PIDCAL 명령 동작전에 반드시 PIDINIT 명령이 먼저 동작 되어야 합니다.
PID명령어(PIDINIT, PIDCAL)는 전체 프로젝트에서 반드시 한번만 사용되어야 합니다.
여러 개의 루프를 사용하는 경우 PIDINIT 영역과 PIDCAL 영역이 겹치지 않도록 유의해야 합니다.
PIDINIT 영역과 PIDCAL의 일부 영역은 PID 연산용으로 사용되므로 래치 영역으로 설정되어 있는 경우 PID 동작이 정상적으로 되지 않을 수 있습니다.
수동 모드에서 Auto Tuning 작업시 에러가 발생합니다. Auto Tuning 작업은 자동 모드에서만 실행해 주십시오.