STEP7 Basic (S7-1200) 에서 다음과 같은 PID 컨트롤 명령어를 사용할 수 있습니다.
* PID Compact 는 지속적으로 변화하는 입력, 출력값을 다루는 테크니컬 공정을 제어하는데 유용합니다.
* PID_3Step 은 열림과 닫힘 동작을 사용하는, 모터와 같은 별개의 신호로 동작되는 디바이스 제어에 주로 사용됩니다.
두 종류의 PID 명령어 모두 (pretuning 선택시) PLC 구동중 P, I, D 게인의 계산이 가능합니다.
또한 PID 컨트롤의 파라메터를 최적화 시킬수 있는 "fine tuning" 을 구성할 수 있습니다.
PID 명령어는 일정한 인터벌의 샘플링 타임의 조건에서 동작되어야한다. (cyclic OB 에서 사용할 것을 권장)
PID 루프는 OB1 에서 사용하지 않습니다. PID 컨트롤 명령어는 매 사이클 호출되어 매 사이클 출력값이 계산되어지는것이 아니라,
컨트롤 밸브의 변화에 정확한 응답성을 제공하는것이 필요함으로 OB1 이 아닌 cyclic OB 에서 호출되어 사용합니다.
PID 알고리즘
* P(proportional) : P게인이 계산되어지면, 출력값은 setpoint 와 process value (입력값) 사이의
편차에 따라 비례하게된다.
(setpoint와 pv 의 차이가 크면 출력값도 커지고, 차이가 작으면 출력값도 낮아진다)
* I (Integral) : I게인이 계산되어있다면, setpoint 와 process value (입력값) 사이의 편차의
조정 시간 설정(적분시간) 에 따라 출력값이 증가하게된다.
(조정 시간이 길면 pv가 setpoint 에 도달하는 시간이 길어지고, 조정시간이 짧은 경우 조정 횟수가 늘어남으로
setpoint 에 도달하는 시간이 짧아진다. 단, 조정시간이 너무 짧은 경우 통제 불능의 상태에 빠질 수 있다.)
* D (derivative) : D게인의 계산에 의해, 출력값은 setpoint 와 process value 사이의 편차의 변화율에 따라 증가한다.
출력값은 setpoint 에 보다 빠르게 도달할 수 있다.
STEP7 은 PID control 을 위해 두개의 명령어를 제공합니다.
* PID_Compact 명령어는 일반적인 PID 컨트롤과 튜닝의 목적에 적합합니다. 명령어와 관련 툴은
PID 컨트롤에 필요한 모든 설정이 가능합니다.
* PID_3Step 명령어는 모터 구동방식의 밸브의 구체적인 세팅을 위한 PID control 에 적합합니다.
테크니컬 오브젝트는 제어회로의 모든 세팅이 가능합니다. PID_3Step 은 두개의 Bool 타입 출력을 추가적으로
제공합니다.
* PID 명령어의 호출
PID 명령어를 유저 프로그램에서 호출하게되면, Step7은 자동적으로 Technology object 와
인스턴스 DB를 생성합니다.
인스턴스DB 내에는 PID control 에 사용되는 모든 파라메터가 저장됩니다.
각각의 PID 명령어는 개별의 인스턴스 DB 를 갖게 됩니다. PID 명령어를 호출한 다음, Technologtical object와
인스턴스 DB를 생성한 후, Technological object 의 파라메터를구성합니다.
Parameter |
type | Data |
Description |
Setpoint | IN | REAL | 자동모드에서의 PID Control 의 SETPoint. 기본값 : 0.0 |
Input |
IN |
REAL |
Process Value. Default Value : 0.0 |
sPid_Cmpt_b_Input_PER_On = FALSE (이와 같이 반드시 설정) | |||
Input_PER |
IN |
WORD |
Analog process value (옵션) 기본값 : W#16#0 |
|
|
|
sPid_Cmpt_b_Input_PER_On = TURE (이와 같이 반드시 설정) |
ManualEnable |
IN |
BOOL |
수동모드의 활성화 or 비활성화. 기본값 : FALSE |
|
|
|
* 신호가 False 에서 True 로 바뀌면 PID Controller는 |
|
|
|
수동모드로 바뀌며 State = 4, sRet.i_Mode 는 현상태를 유지하게 된다. |
|
|
|
* 신호가 True 에서 False 로 바뀔때 PID Controller 는 마지막으로 |
|
|
|
활성화되었던 조작 모드로 전환되고 State = sRet.i_Mode 의 상태가 된다. |
ManualValve |
IN |
REAL |
Process Valve 의 수동 조작. 기본값 : 0.0 |
Reset |
IN |
BOOL |
PID Controller 의 재기동. 기본값 : False |
|
|
|
값이 True 일때 다음과 같은 상태로 전환된다. |
|
|
|
* 조작모드 비활성화 |
|
|
|
* Input value = 0 |
|
|
|
* Integral part of process value = 0 |
|
|
|
* 시스템상의 계산되던 값들은 Reset 된다. (PID 파라메터는 유지됨) |
ScaledInput |
OUT |
REAL |
Scaled process valve. 기본값 : 0.0 |
Output |
OUT |
REAL |
Output value. 기본값 : 0.0 |
Output_PER |
OUT |
WORD |
Analog output value. 기본값 : W#16#0 |
Output_PWM |
OUT |
BOOL |
Output value for pulse width modulation. 기본값 : False |
SetpointLimit_H | OUT | BOOL | Setpoint high limit. 기본값 : False |
|
|
|
Setpoint 의 Upper limit 에 값이 도달 하게 되면, SetpointLimit_H = TRUE |
|
|
|
기본값 : False |
SetpointLimit_L |
OUT |
BOOL |
Setpoint Low limit. 기본값 : False |
|
|
|
Setpoint 의 Lower limit 에 값이 도달 하게 되면, SetpointLimit_L = TRUE |
|
|
|
기본값 : False |
InputWarning_H |
OUT |
BOOL |
PV 값이 warning limit 에 위치하거나 초과시, InputWarning_H = TRUE |
|
|
|
기본값 : False |
InputWarning_L |
OUT |
BOOL |
PV 값이 warning limit 아래로 떨어질때, InputWarning_L = TRUE |
|
|
|
기본값 : False |
State |
OUT |
INT |
현재의 PID Controller 의 조작 모드를 나타낸다. 기본값 : 0 |
|
|
|
조작 모드를 바꾸기 위해 sRet.i_Mode 를 사용한다. |
|
|
|
* State = 0 : Inactive |
|
|
|
* State = 1 : Pretuning |
|
|
|
* State = 2 : Manual Fine Tuning |
|
|
|
* State = 3 : Automatic Mode |
|
|
|
* State = 4 : Manual Mode |
Error | OUT | DWORD | 에러시 에러코드 표시. DW#16#0000 (no error) |
Technological object 의 파라메터를 설정하여 PID controller 의 동작을 결정한다.
PID_Compact 의 컨피규레이션 편집창 (Basic Setting)
Settings |
Description |
|
Basic |
Controller type |
Engineering unit 선택 |
Invert the control logic |
PID 루프의 반전 동작을 실행합니다. |
|
* 선택되지 않은 경우 정방향-동작 모드로 PID Loop 가 되며, |
||
input value < setpoint 일 경우 PID loop 의 출력이 증가됨 |
||
* 선택시 Input value > setpoint 일 때 PID loop 의 출력값이 증가된다. |
||
Enable last mode after |
리셋 시 혹은 input limit 가 초과되었다 다시 정상 영역으로 돌아오면 |
|
CPU restart |
PID loop 는 재시작됩니다. |
|
Input |
입력값 (PV) 으로 [Input] 혹은 [Input_PER] (아날로그의 경우) 중 하나의 |
|
파라메터에 값을 할당합니다. Input_PER 으로 설정시 아날로그 |
||
입력모듈의 어드레스를 바로 할당 될 수 있습니다. (ex. IW102) |
||
Output |
출력값 로서 [Output] 혹은 [Output_PER] (아날로그의 경우) 중 하나의 |
|
파라메터에 값을 할당합니다. Output_PER 으로 설정시 아날로그 |
||
출력모듈의 어드레스를 바로 할당 될 수 있습니다. (ex. QW86) |
||
Process Value |
Process Value 의 범위와 한계치를 조정합니다. PV 가 Low Limit 을 벗어나게 되면 |
|
PID loop 는 비활성화 (Inactive) 되며 출력은 0 으로 나가게 됩니다. | ||
Input_PER 할당할시에는 analog process value 를 반드시 스케일해야 합니다. |
Commissioning the PID controller
commissioning editor 를 사용하여 PID controller 의 시동시 혹은 구동중의 오토튜닝을 구성할 수 있다.
commissioning editor 는 명령어 (PID Compact) 의 아이콘 혹은 project nevigator 에서 Technological object
-> PID_Compact-> commissioning 아이콘을 클릭하여 열수 있다.
* Measurement : 실시간상의 Setpoint, Input Value (PV) Output value 을 디스플레이 하기위해서 sample time 을 입력한 후
"start" 버튼을 누른다
* Tuning mode : PID loop 를 튜닝하기위해서 "Pretuning" 혹은 "Fine tuning (manual) 을
선택한 후 "start" 버튼을 누른다
PID controller 는 세단계를 거쳐 시스템응답성을 계산하고 업데이트한다. 이과정을 거쳐 적절한
튜닝 파라메터가 계산 되어진다.
튜닝 과정이 끝마치게되면, commissioning editor 의 하단 왼측 "Upload PID parameters" 버튼을 클릭하여
튜닝을 통해 얻어진 새로운 파라메터를 저장(적용) 시킬 수 있다.
튜닝 과정중에 에러가 발생하면, 출력값은 0 으로 나가게되며 PID mode 는 비활성화 (inactive) 상태가 된다.
status 파라메터에는 에러코드가 나타난다.
지멘스 교육이나 기술지원이 문의 사항이 있으시면 언제든지 연락주시고,
제가 도움을 드릴 수 있는 내용은 최대한 답을 드릴수 있도록 하겠습니다.
긴글 읽어주셔서 감사드리고, 틈나는대로 계속 관련 내용 업데이트하도록 하겠습니다
감사합니다.
'Siemens Automation > TIAPortal STEP7' 카테고리의 다른 글
TSEND_C / TRCV_C SETTING (0) | 2020.06.13 |
---|---|
I-DEVICE COMMUNICATION (6) | 2020.06.12 |
S7-1200 Modbus RTU Sample Program (1) | 2020.06.06 |
S7-1200 CPU FIRMWARE UPDATE (2) | 2020.06.04 |
SIEMENS PLC SERIES (S7-1200, S7-1500) (0) | 2020.05.21 |
댓글