Bai giang S7 300 rất cơ bản, dễ hiểu
BÀI 5
MODULE PID VÀ THỜI GIAN THỰC
1. Module PID mềm có trong phần mềm Step7.
Ta đã biết trong thực tế bộ điều khiển PID được sử dụng rất nhiều (>90% trong
công nghiệp), và theo thống kê thì bộ điều khiển PI được sử dụng nhiều nhất.
Trong phần mềm Step7 đã tích hợp sẵn các khối hàm thực hiện chức năng bộ
điều khiển PID, bao gồm :
Bộ điều khiển liên tục : CONT_C
Bộ điều khiển bước : CONT_S
Ngoài ra còn khối PULSEGEN phục vụ cho việc điều chế độ rộng xung.
Tùy vào cách điều khiển, cơ cấu chấp hành,.. mà ta lựa chọn bộ điều khiển cho
phù hợp.
Bộ điều khiển được sử dụng để điều khiển các đối tượng như : nhiệt độ, mức,
lưu lượng, tốc độ của động cơ…
Ngoài ra, trong phần mềm Step7 còn có hai khối hàm chuyên để điều khiển
nhiệt độ : TCONT_CP và TCONT_S
1.1. Sử dụng bộ điều khiển PID.
Khối tổ chức của bộ điều khiển PID
PID Control
S7-300 và S7-400
Các khối hàm
chức năng
Phần giao diện gán
các tham số cho bộ
điều khiển
Một module PID mềm gồm có các thành phần :
Sử dụng, vận
hành
Các khối hàm chức năng : có thể là khối CONT_C, CONT_S, hoặc
PULSEGEN.
Phần giao diện gán tham số cho bộ điều khiển : gán các tham số cần thiết cho
bộ điều khiển.
Sử dụng, vận hành: bao gồm các phần mô tả các khối chức năng.
Ở đây chúng ta sẽ tập trung giới thiệu cách sử dụng của module mềm FB41
“CONT_C” , các module khác hoàn toàn tương tự.
1.2. Module mềm FB41 “CONT_C” .
Module mềm PID “CONT_C” là một bộ điều khiển PID có đầu vào và đầu ra là
các tín hiệu liên tục (analog).
Bộ PID có thể được sử dụng làm bộ điều khiển có điểm đặt cố định hoặc sủ
dụng là bộ điều khiển nhiều vòng như điều khiển tầng, và điều khiển tỉ lệ. Chức năng
của bộ điều khiển này dựa trên thuật toán điều khiển PID.
Sơ đồ khối của bộ điều khiển:
Module mềm PID gồm có tín hiệu chủ đạo SP_INT, tín hiệu ra của đối tượng
PVF_PER, tín hiệu giả để mô phỏng tín hiệu ra của đối tượng PV_IN, các biến trung
gian trong trong quá trình thực hiện luật và thuật toán điều khiển PID như
PV_PERON, P_SEL, I_SEL…
Tín hiệu chủ đạo SP_INT : được nhập dưới dạng dấu phẩy động.
Tín hiệu ra của đối tượng PV_PER : được nhập dưới dạng số nguyên có dấu
hoặc dưới dạng số thực dấu phảy động. Thông qua một hàm nội CRP_IN nó sẽ chuyển
đổi kiểu biểu diễn của PV_PER sang số thực dấu phảy động có giá trị nằm trong
khoản -100…100% theo công thức:
Tín hiệu ra của CRP_IN = PV_PER.
100
27648
Hàm chuẩn hóa : PV_NORM sẽ chuẩn hóa tín hiệu ra của CRP_IN theo công thức :
Tín hiệu ra của PV_NORM = (Tín hiệu ra của CRP_IN).PV_FAC + PV_OFF
Bảng mô tả các tham số của bộ điều khiển :
Bảng mô tả tham số đầu vào :
Tham số
Kiểu
loại
Dải
giá trị
Giá
trị
mặc định
COM_RST
BOOL
FALSE
MAIN_ON
BOOL
TRUE
PVPER_ON
BOOL
FALSE
P_SEL
BOOL
TRUE
Mô tả
COMPLETE RESTART
Khối có chức năng khởi tạo lại hệ
thống hoàn toàn khi đầu vào
“complete restart” được thiết lập
giá trị logic là TRUE
MANUAL VALUE ON
Khi đầu vào “manual value on”
là TRUE, mạch vòng điều khiển
sẽ bị ngắt , các giá trị sẽ được
thiết lập bằng tay.
PROCESS VARIABLE
PERIPHERAL ON
Khi đọc biến quá trình từ các
cổng vào/ra đầu vào PV_PER
phải được nối tới các cổng vào ra
và đầu vào “process variable
peripheral” có giá trị là TRUE
PROPORTIONAL ACTION ON
Chọn luật điều khiển P
I_SEL
BOOL
TRUE
INT_HOLD
BOOL
FALSE
I_ITL_ON
BOOL
FALSE
D_SEL
BOOL
FALSE
CYCLE
TIME
>=1ms
T#1s
SP_INT
REAL
0.0
PV_IN
REAL
100.0…
100.0%
100.0…
100.0%
PV_PER
WORD
MAIN
REAL
GAIN
REAL
TI
TIME
TD
TIME
TM_LAG
TIME
0.0
W#16#00
00
100.0…
100.0%
0.0
2.0
>=
CYCLE
>=
CYCLE
>=
T#20s
T#10s
T#2s
INTEGRAL ACTION ON
Chọn luật điều khiển I
INTEGRAL ACTION HOLD
Đầu ra của bộ điều khiển I có thể
bị giữ lại không được sử dụng khi
ta thiết lập TRUE cho thông số
này
INITIALIZATION OF THE
INTEGRAL ACTION
Đầu ra của bộ điều khiển I có thể
được nối vào cổng vào
I_ITL_VAL nếu đầu vào
I_ITL_ON có giá trị là TRUE
DERIVATIVE ACTION ON
Chọn thành phần D
SAMPLING TIME
Thời gian lấy mẫu
INTERNAL SETPOINT
Tín hiệu chủ đạo
PROCESS VARIABLE IN
Giá trị khởi tạo có thể đặt ở đầu
vào PV_IN cũng có thể được đặt
từ biến quá trình
PROCESS VARIABLE
PERIPHERAL
Biến quá trình được nối với CPU
thông qua cổng vào tương tự
MANUAL VALUE
Cổng vào “manual value” được
sử dụng để đặt giá trị bằng các
hàm giao diện
PROPORTIONAL GAIN
Hệ số tỉ lệ của luật P
RESET TIME
Hằng số thời gian tích phân
DERIVATIVE TIME
Hằng số thời gian vi phân
TIME LAG OF THE
CYCLE/
2
DEADB_W
REAL
>=0.0%
0.0
LMN_HLM
REAL
LMN_LLM
REAL
PV_FAC
REAL
LMN_LL 100.0
M…
100%
-100…
0.0
LMN_H
LM %
1.0
PV_OFF
REAL
0.0
LMN_FAC
REAL
1.0
LMN_OFF
REAL
0.0
DERIVATIVE ACTION
Chọn thời gian tích cực của luật
điều khiển vi phân
DEAD BAND WIDTH
Để xử lý tính hiệu nhiễu
MANIPULATED VALUE
HIGH LIMIT
Thiết lập bằng tay giới hạn trên
MANIPULATED VALUE LOW
LIMIT
Thiết lập bằng tay giới hạn dưới
PROCESS VARIABLE
FACTOR
Biến quá trình được nhân với hệ
số phù hợp với phạm vi của biến
này, Hệ số chọn thông qua cổng
PV_FAC
PROCESS VARIABLE OFFSET
Biến quá trình được cộng với một
lượng bù cho phù hợp với phạm
vi quy định của biến này. Giá trị
bù được chọn thông qua PV_OFF
MANIPULATED VALUE
FACTOR
Giá trị giới hạn được nhân với
một hệ số bù cho phù hợp với
phạm vi quy định của biến quá
trình, giá trị bù này được thiết lập
thông qua LMN_FAC
MANIPULATED VALUE
OFFSET
Giá trị giới hạn được cộng với
với một hệ số bù cho phù hợp với
phạm vi quy định của biến quá
trình, giá trị bù này được thiết lập
thông qua LMN_OFF
I_ITLVAL
REAL
-100.0…
100.0%
0.0
DISV
REAL
-100.0…
100.0%
0.0
INITIALIZATION VALUE OF
THE INTEGRAL ACTION
Giá trị đầu ra của bộ điều khiển
tích phân có thể được thiết lập
thông qua cổng vào I_ITLVAL
DISTURBANCE VARIABLE
Giá trị đặt bù nhiễu khi sử dụng
phương pháp điều khiển thẳng
Bảng môt tả tham số đầu ra :
Tham số
LMN
Kiểu
loại
REAL
LMN_PER
WORD
Dải
trị
giá Giá
trị
mặc định
0.0
W#16#00
00
Mô tả
MANIPULATED VALUE
Giá trị được thiết lập bằng tay
thông qua cổng ra LMN
MANIPULATED VALUE
PERIPHERAL
Giá trị đầu ra được thiết lập bằng
tay theo kiểu biểu diễn phù hợp
với cổng vào ra tương tự được
chọn qua LMN_PER
QLMN_HLM BOOL
FALSE
HIGH LIMIT OF
MANIPULATED VALUE
REACHED
Giá trị thông báo biến quá trình
vượt giới hạn trên
QLMN_LLM
FALSE
LOW LIMIT OF
MANIPULATED VALUE
REACHED
Giá trị thông báo biến quá trình
vượt giới hạn dưới
BOOL
LMN_P
REAL
0.0
PROPORTIONAL
COMPONENT
Tín hiệu ra của bộ điều khiển tỉ lệ
LMN_I
REAL
0.0
INTEGRAL COMPONENT
Tín hiệu ra của bộ điều khiển tích
phân
LMN_D
REAL
0.0
DERIVATIVE COMPONENT
Tín hiệu ra của bộ điều khiển vi
phân
PV
REAL
0.0
ER
REAL
0.0
PROCESS VALUE
Tín hiệu quá trình được xuất ra
cổng PV
ERROR SIGNAL
Tín hiệu sai lệch được xuất qua
cổng ER
1.2.1. Sử dụng khối FB41 “CONT_C” trong phần mềm Step7
1.2.1.1. Trước hết hãy tạo một trạm PLC S7-300 :
1.2.1.2. Chèn khối FB41 vào trong Project :
Mở thư viện chuẩn của Step7:
1.2.1.3. Lựa chọn khối thư viện và copy :
1.2.1.4. Paste vào phần Blocks:
1.2.2. Tạo khối dữ liệu dạng Instance cho FB41:
1.2.3. Gán tham số cho bộ điều khiển :
Vào Start / SIMATIC /STEP 7 / PID Control Parameter Assignment
Bạn chọn Open , sau đó chọn khối DB1 vừa tạo:
Cửa sổ hiện ra cho phép ta thiết lập các giá trị cho bộ tham số:
Để hiểu ý nghĩa của các tham số cần thiết lập, ta tra bảng tham số của bộ PID.
1.3. Ví dụ sử dụng bộ PID mềm “CONT_C”
Dưới đây ta sẽ áp dụng bộ điều khiển PID để điều khiển mức nước trong bình. Bài
toán như sau:
1.3.1. Mô tả bài toán :
Nước được bơm vào bình thông qua một van V-1. Van này có thể điều khiển
được. Tín hiệu điều khiển van la tín hiệu dòng điện chuẩn công nghiệp : 420mA tương ứng với độ mở của van là 0-100%.
Van V-2 là van xả , van này không điều khiển, độ mở của van được thực
hiện bằng tay và được đặt trước.
Một cảm biến C-1 là loại cảm biến khoảng cách , tín hiệu ra dưới dạng dòng
điện : 4-20mA tương ứng với khoảng cách đặt là h1-h2
Yêu cầu bài toán là ổn định mức nước trong bình với một mức h nào đó đạt
yêu cầu chất lượng là :
Độ quá điều chỉnh là 0%.
Thời gian quá độ nhỏ.
1.3.2. Các bước giải bài toán :
1.3.2.1. Phân tích yêu cầu:
Starrt/stop
Giá trị đặt
lấy từ đầu
vào analog
Đèn báo RUN
S7-300
Tín hiệu
vào từ cảm
biến
Đèn báo STOP
Tín hiệu ra
điều khiển
van
1.3.2.2. Lựa chọn CPU và các module kèm theo:
Vì tín hiệu từ cảm biến về và tín hiệu đưa tới điều khiển van là tín hiệu
analog nên ta chọn một module analog có ít nhất 1 đầu vào và một đầu ra dưới
dạng dòng điện. Cần một số phím điều khiển và một số đèn báo hiệu, nên ta sẽ
lựa chọn module vào ra số. Với CPU ta cũng tùy chọn, phụ thuộc rất nhiều yếu
tố như khả năng nối mạng, khả năng mở rộng nếu cần…
Ví dụ với bài toán này ta lựa chọn như sau:
CPU : chọn CPU318-2DP.
module vào ra số : SM323 (6ES7 323-1BH01-0AA0 Digital I/O module
DI 8/DO 8xDC24V/0.5A).
module vào tương tự SM331(6ES7 331-7KB00-0AB0 Analog input
module AI2/12 to 14 bits).
module ra tương tự (6ES7 332-5HB00-0AB0 Analog output module
AO2/12 bits)
1.3.2.3. Xây dựng phần cứng trên phần mềm Step7
Cấu hình một trạm CPU với các module như trên :
Cấu hình cho 2 module analog:
Sau đó biên dịch và save lại.
Chi tiết xem thêm trong tài liệu kỹ thuật đi kèm.
1.3.2.4. Xây dựng chương trình phần mềm.
Lựa chọn và cấu hình cho bộ PID mềm “CONT_C” như phần trên.
Khai báo các tên hình thức:
Viết chương trình trong khối OB1:
2. Sử dụng các hàm thời gian thực.
Thực tế có rất nhiều hệ thống hoạt động theo một thời gian thực đặt trước. Ta
lấy một ví dụ như sau:
Hệ thống điều khiển bơm nước gồm có 3 bơm. Mỗi hôm chỉ chạy có 2 bơm,
một bơm nghỉ, và cứ xoay vòng như vậy, nếu một bơm hỏng thì bơm còn lại sẽ chạy
nếu có từ 2 bơm bị hỏng trở nên thì báo lỗi.
Hoặc một ví dụ khác như hệ thống sấy sử dụng ánh nắng mặt trời. Đối với
những ngày nắng, hệ thống sẽ qui định các mốc thời gian để xoay góc sấy của giàn
phơi.
v.v..
Đối với những hệ thống như vậy người ta phải dùng tới thời gian thực tế.
Trong phần mềm Step7 đã có những hàm được xây dựng phục vụ cho mục đích này.
2.1. Giới thiệu các hàm sử dụng với thời gian thực.
2.1.1. Các hàm thiết lập và lấy thời gian thực ( SFC0, SFC1).
2.1.1.1. Hàm thiết lập thời gian SFC0 “SET_CLK”:
Hàm SET_CLK cho phép thiết lập thời gian của hệ thống.
Mô tả :
PDT
SFC0
RET_VAL
Set System Clock
“SET_CLK”
Đầu vào :
PDT : đầu vào có kiểu DAT_OF_TIME mà ta muốn thiết lập
Vùng nhớ : D,L
Ví dụ : 15/01/1995 lúc 10h:30m:30s DT#1995-01-15-10:30:30.
Đầu ra :
RET_VAL : là giá trị trả về trạng thái nếu hệ thống có lỗi, có kiểu INT
Vùng nhớ I,Q,M,D,L
2.1.1.2. Hàm đọc thời gian của hệ thống SFC1 “READ_CLK” :
Mô tả :
Hàm READ_CLK cho phép đọc thời gian thực của hệ thống.
SFC1
Read System Clock
“READ_CLK”
RET_VAL
CDT
Đầu vào :
Không có.
Đầu ra :
RET_VAL : là giá trị trả về trạng thái nếu hệ thống có lỗi, có kiểu
INT(I,Q,M,D,L)
CDT : đầu ra có kiểu DAT_OF_TIME mà ta lấy được(D,L)
2.1.2. Các hàm kèm theo để xử lý thời gian (FC3,FC6,FC7,FC8)
2.1.2.1. Hàm FC3 “D_TOD_DT”.
Mô tả :
Hàm này cho phép kết hợp kiểu DATE và kiểu TIME_OF_DAY(TOD)
thành kiểu DATE_AND_TIME. Ứng dụng để tạo thời gian làm đầu vào cho
hàm SFC0.
IN1
FC3
IN2
RET_VAL
“D_TOD_DT”
Đầu vào :
IN1 : là đầu vào kiểu DATE (I,Q,M,L,D,Const)
IN2 : là đầu vào kiểu TOD (I,Q,M,L,D,Const)
Đầu ra :
RET_VAL : là giá trị trả về kiểu DATE_AND_TIME (D,L)
2.1.2.2. Hàm FC6 “DT_DATE”
Mô tả :
Hàm này cho phép lấy ra kiểu DATE từ kiểu DATE_AND_TIME
IN
FC6
RET_VAL
DT to DATE
“DT_DATE”
Đầu vào :
IN : là đầu vào kiểu DATE_AND_TIME (D,L)
Đầu ra :
RET_VAL : là giá trị trả về kiểu DATE (I,Q,M,D,L)
- Xem thêm -