Tài liệu Kỹ thuật lập trình (Mới)

Chương trình người dùng thường được chia nhỏ thành từng khối logic theo kiểu chương trình cấu trúc, giúp cho việc lập trình và sữa lỗi thuận tiện. Có nhiều loại khối logic:

• Khối tổ chức OB (Organization blocks)

• Khối hàm hệ thống SFB (System function blocks) và hàm hệ thống SFC (system functions) tích hợp trong PLC

• Khối hàm FB (Function blocks) trong thư viện hay người dùng tự viết

• Hàm FC (Functions) trong thư viện hay người dùng tự viết

• Khối dữ liệu Instance (Instance Data Blocks ) liên kết với FB/SFB

• Khối dữ liệu chia xẻ (Shared Data Blocks )

Khối tổ chức OB là giao diện giữa chương trình người dùng và hệ điều hàmh của PLC. OB được gọi bởi hệ điều hành theo chu kỳ hay khi có ngắt, có sự cố hay khi khởi động PLC. Có nhiều khối OB và có ưu tiên khác nhau, khối OB có số ưu tiên cao hơn có thể ngắt khối OB số ưu tiên thấp hơn. Tuỳ theo loại CPU, số lượng khối OB sử dụng được sẽ khác nhau, bảng sau liệt kê các loại OB

 

doc23 trang | Chuyên mục: Lập Trình | Chia sẻ: yen2110 | Lượt xem: 428 | Lượt tải: 0download
Tóm tắt nội dung Tài liệu Kỹ thuật lập trình (Mới), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 not running" 
Agitator_fault 
Q8.3  
BOOL 
Lamp for ”agitator motor fault" 
Agitator_maint 
Q8.4  
BOOL 
Lamp for ”agitator motor maintenance" 
Tank_below_max 
 I1.3  
BOOL 
Sensor ”mixing tank not full" 
Tank_above_min 
 I1.4  
BOOL 
Sensor ”mixing tank above minimum level" 
Tank_not_empty 
 I1.5  
BOOL 
Sensor ”mixing tank not empty" 
Tank_max_disp 
 Q9.0 
BOOL 
Lamp for "mixing tank full" 
Tank_min_disp 
 Q9.1 
BOOL 
Lamp for "mixing tank below minimum level" 
Tank_empty_disp 
 Q9.2 
BOOL 
Lamp for "mixing tank empty" 
Drain_open 
I0.6  
BOOL 
Button for opening the drain valve 
Drain_closed 
I0.7  
BOOL 
Button for closing the drain valve 
Drain 
Q9.5 
BOOL 
Activates the drain valve 
Drain_open_disp 
Q9.6 
BOOL 
Lamp for "drain valve open" 
Drain_closed_disp 
Q9.7 
BOOL 
Lamp for "drain valve closed" 
EMER_STOP_off 
I1.6  
BOOL 
EMERGENCY STOP switch 
Reset_maint 
I1.7 
BOOL 
Reset switch for the maintenance lamps on all motors 
Motor_block 
FB1 
FB1 
FB for controlling pumps and motor 
Valve_block 
FC1 
FC1 
FC for controlling the valves 
DB_feed_pump_A 
DB1 
FB1 
Instance DB for controlling feed pump A 
DB_feed_pump_B 
DB2 
FB1 
Instance DB for controlling feed pump B 
DB_agitator 
DB3 
FB1 
Instance DB for controlling the agitator motor 
3.1 Lập trình khối FB
FB là khối logíc với các biến in, out, in_out, static và temp, được tạo ra trong bảng biến địa phương đi kèm. Các biến in, out, in- out là các tham số hìmh thức có địa chỉ cụ thể do chương trình gọi truyền đến, biến static là biến trong chương trình FB được lưu lại khi ra khỏi khối FB, biến temp mất giá trị khi ra khỏi khối FB. Kèm với FB là khối dữ liệu data block chứa các biến in, out, in- out và static. Có thể có nhiều data block cho một FB khi một FB dùng cho các nhiệm vụ khác nhau, gọi là instance data block. Khi chương trình gọi FB cần phải kèm theo instance data block tương ứng. Ta vào cửa sổ Project bấm chuột phải - Insert New Object – Function block thêm vào khối FB1. Bấm chuột vào khối FB1 để soạn chương trình cho khối. Ta vào bảng khai báo biến để khai báo các biến hình thức cho khối theo thứ tự in, out, in_out, static và temp. Với ví dụ ở trên, bảng biến của FB1 “Motor_Block” như sau: 
Address 
Declaration 
Name 
Type 
Initial Value 
0.0 
IN 
Start 
BOOL 
FALSE 
0.1 
IN 
Stop 
BOOL 
FALSE 
0.2 
IN 
Response 
BOOL 
FALSE 
0.3 
IN 
Reset_Maint 
BOOL 
FALSE 
2.0 
IN 
Timer_No 
TIMER 
4.0 
IN 
Response_Time 
S5TIME 
S5T#0MS 
6.0 
OUT 
Fault 
BOOL 
FALSE 
6.1 
OUT 
Start_Dsp 
BOOL 
FALSE 
6.2 
OUT 
Stop_Dsp 
BOOL 
FALSE 
6.3 
OUT 
Maint 
BOOL 
FALSE 
8.0 
IN_OUT 
Motor 
BOOL 
FALSE 
10.0 
STAT 
Time_bin 
WORD 
W#16#0 
12.0 
STAT 
Time_BCD 
WORD 
W#16#0 
14.0 
STAT 
Starts 
INT 
0 
16.0 
STAT 
Start_Edge 
BOOL 
FALSE 
 Các biến STAT Time_ bin và Time_BCD lư u thời gian timer, Starts lưu số lần khởi động motor, Start_ Edge phục vụ cho lệnh lấy cạnh lên
Network 1 Start/stop and latching 
A( 
O #Start 
O #Motor 
) 
AN #Stop 
= #Motor 
Network 2 Startup monitoring 
A #Motor 
L #Response_Time 
SD #Timer_No 
AN #Motor 
R #Timer_No 
L #Timer_No 
T #Timer_bin 
LC #Timer_No 
T #Timer_BCD 
A #Timer_No 
AN #Response 
S #Fault 
R #Motor 
Network 3 Start lamp and fault reset 
A #Response 
= #Start_Dsp 
R #Fault 
Network 4 Stop lamp 
AN #Response 
= #Stop_Dsp 
Network 5 Counting the starts 
A #Motor 
FP #Start_Edge 
JCN lab1 
L #Starts 
+ 1 
T #Starts 
lab1: NOP 0 
Network 6 Maintenance lamp 
L #Starts 
L 50 
>=I 
= #Maint 
Network 7 Reset counter for number of starts 
A #Reset_Maint 
A #Maint 
JCN END 
L 0 
T #Starts 
END: NOP 0 
	Thêm khối DB project với các tên DB1, DB2, DB3 loại Instance DB và thuộc FB1
Các biến trong DB1 sẽ tự tạo ra theo bảng khai báo biến của khối FB1, tương tự cho các DB2 và DB3.
	3.2 Lập trình khối FC
	Khối FC có các biến hình thức in, out và in_ out do chương trình gọi cung cấp các địa chỉ cụ thể, ngoài ra còn có biến temp sử dụng nội bộ. Khối FC không có bộ nhớ nên dữ liệu mất đi khi ra khỏi khối. Ta thêm vào project khối FC1 và khai báo các biến trong bảng khai báo biến kèm theo. Sau đó lập trình cho FC1 
Address
Declaration
Name
Type
Initial Value
0.0
IN
Open
BOOL
FALSE
0.1
IN
Close
BOOL
FALSE
2.0
OUT
Dsp_Open
BOOL
FALSE
2.1
OUT
Dsp_Closed
BOOL
FALSE
4.0
IN_OUT
Valve
BOOL
FALSE
Network 1 Open/close and latching 
A( 
O #Open 
O #Valve 
) 
AN #Close 
= #Valve 
Network 2 Display "valve open" 
A #Valve 
= #Dsp_Open 
Network 3 Display "valve closed" 
AN#Valve 
= #Dsp_Closed
	Bước tiếp theo là lập trình cho OB1, ta khai báo các biến cho OB1
Address 
Declaration 
Name 
Type 
0.0 
TEMP 
OB1_EV_CLASS 
BYTE 
1.0 
TEMP 
OB1_SCAN1 
BYTE 
2.0 
TEMP 
OB1_PRIORITY 
BYTE 
3.0 
TEMP 
OB1_OB_NUMBR 
BYTE 
4.0 
TEMP 
OB1_RESERVED_1 
BYTE 
5.0 
TEMP 
OB1_RESERVED_2 
BYTE 
6.0 
TEMP 
OB1_PREV_CYCLE 
INT 
8.0 
TEMP 
OB1_MIN_CYCLE 
INT 
10.0 
TEMP 
OB1_MAX_CYCLE 
INT 
12.0 
TEMP 
OB1_DATE_TIME 
DATE_AND_TIME 
20.0 
TEMP 
Enable_motor 
BOOL 
20.1 
TEMP 
Enable_valve 
BOOL 
20.2 
TEMP 
Start_fulfilled 
BOOL 
20.3 
TEMP 
Stop_fulfilled 
BOOL 
20.4 
TEMP 
Inlet_valve_A_open 
BOOL 
20.5 
TEMP 
Inlet_valve_A_closed 
BOOL 
Chương trình OB1 
Network 1 Interlocks for feed pump A 
A "EMER_STOP_off" 
A "Tank_below_max" 
AN "Drain" 
= #Enable_Motor 
Network 2 Calling FB Motor for ingredient A 
A "Feed_pump_A_start" 
A #Enable_Motor 
= #Start_Fulfilled 
A( 
O "Feed_pump_A_stop" 
ON #Enable_Motor 
) 
= #Stop_Fulfilled 
CALL "Motor_block", "DB_feed_pump_A" 
Start :=#Start_Fulfilled 
Stop :=#Stop_Fullfilled 
Response :="Flow_A" 
Reset_Maint :="Reset_maint" 
Timer_No :=T12 
Reponse_Time:=S5T#7S 
Fault :="Feed_pump_A_fault" 
Start_Dsp :="Feed_pump_A_on" 
Stop_Dsp :="Feed_pump_A_off" 
Maint :="Feed_pump_A_maint" 
Motor :="Feed_pump_A" 
Network 3 Delaying the valve enable ingredient A 
A "Feed_pump_A" 
L S5T#1S 
SD T 13 
AN "Feed_pump_A" 
R T 13 
A T 13 
= #Enable_Valve 
Network 4 Inlet valve control for ingredient A 
AN "Flow_A" 
AN "Feed_pump_A" 
= #Close_Valve_Fulfilled 
CALL "Valve_block" 
Open :=#Enable_Valve 
Close :=#Close_Valve_Fulfilled 
Dsp_Open :=#Inlet_Valve_A_Open 
Dsp_Closed:=#Inlet_Valve_A_Closed 
Valve :="Inlet_Valve_A" 
Network 5 Feed valve control for ingredient A 
AN"Flow_A" 
AN"Feed_pump_A" 
=#Close_Valve_Fulfilled 
CALL"Valve_block" 
Open:=#Enable_Valve 
Close:=#Close_Valve_Fulfilled 
Dsp_Open:=#Feed_Valve_A_Open 
Dsp_Closed:=#Feed_Valve_A_Closed 
Valve :="Feed_Valve_A"
Network 6 Interlocks for feed pump B 
A "EMER_STOP_off" 
A "Tank_below_max" 
AN "Drain" 
= "Enable_Motor 
Network 7 Calling FB Motor for ingredient B 
A "Feed_pump_B_start" 
A #Enable_Motor 
= #Start_Fulfilled 
A( 
O "Feed_pump_B_stop" 
ON #Enable_Motor 
) 
= #Stop_Fulfilled 
CALL "Motor_block", "DB_feed_pump_B" 
Start :=#Start_Fulfilled 
Stop :=#Stop_Fullfilled 
Response :="Flow_B" 
Reset_Maint :="Reset_maint" 
Timer_No :=T14 
Reponse_Time:=S5T#7S 
Fault :="Feed_pump_B_fault" 
Start_Dsp :="Feed_pump_B_on" 
Stop_Dsp :="Feed_pump_B_off" 
Maint :="Feed_pump_B_maint" 
Motor :="Feed_pump_B" 
Network 8 Delaying the valve enable ingredient B 
A "Feed_pump_B" 
L S5T#1S 
SD T 15 
AN "Feed_pump_B" 
R T 15 
A T 15 
= #Enable_Valve 
Network 9 Inlet valve control for ingredient B 
AN "Flow_B" 
AN "Feed_pump_B" 
= #Close_Valve_Fulfilled 
CALL "Valve_block" 
Open :=#Enable_Valve 
Close :=#Close_Valve_Fulfilled 
Dsp_Open :=#Inlet_Valve_B_Open 
Dsp_Closed:=#Inlet_Valve_B_Closed 
Valve :="Inlet_Valve_B" 
Network 10 Feed valve control for ingredient B 
AN "Flow_B" 
AN "Feed_pump_B" 
= #Close_Valve_Fulfilled 
CALL "Valve_block" 
Open :=#Enable_Valve 
Close :=#Close_Valve_Fulfilled 
Dsp_Open :=#Feed_Valve_B_Open 
Dsp_Closed:=#Feed_Valve_B_Closed 
Valve :="Feed_Valve_B" 
Network 11 Interlocks for agitator 
A "EMER_STOP_off" 
A "Tank_above_min" 
AN "Drain" 
= #Enable_Motor 
Network 12 Calling FB Motor for agitator 
A "Agitator_start" 
A #Enable_Motor 
= #Start_Fulfilled 
A( 
O "Agitator_stop" 
ON #Enable_Motor 
) 
= #Stop_Fulfilled 
CALL "Motor_block", "DB_Agitator" 
Start :=#Start_Fulfilled 
Stop :=#Stop_Fullfilled 
Response :="Agitator_running" 
Reset_Maint :="Reset_maint" 
Timer_No :=T16 
Reponse_Time:=S5T#10S 
Fault :="Agitator_fault" 
Start_Dsp :="Agitator_on" 
Stop_Dsp :="Agitator_off" 
Maint :="Agitator_maint" 
Motor :="Agitator" 
Network 13 Interlocks for drain valve 
A"EMER_STOP_off" 
A"Tank_not_empty" 
AN"Agitator" 
= "Enable_Valve
Network 14 Drain valve control 
A "Drain_open" 
A #Enable_Valve 
= #Open_Drain 
A( 
O "Drain_closed" 
ON #Enable_Valve 
) 
= #Close_Drain 
CALL "Valve_block" 
Open :=#Open_Drain 
Close :=#Close_Drain 
Dsp_Open :="Drain_open_disp" 
Dsp_Closed :="Drain_closed_disp" 
Valve :="Drain" 
Network 15 Tank level display 
AN"Tank_below_max" 
="Tank_max_disp" 
AN"Tank_above_min" 
="Tank_min_disp" 
AN"Tank_not_empty" 
= "Tank_empty_disp"
4. Sử dụng hàm thư viện
	Các hàm thư viện do Siemens viết sẵn thuộc các loại FC, FB, SFC,SFB giúp người dùng thuận tiện trong lập trình. Muốn dùng các hàm thư viện trong khối logic nào thì ta mở khối logic đó ra, kích chuột vào chỗ lệnh CALL gọi hàm thư viện, vào menu Insert- Program Elements- Libraries chọn các hàm thư viện phù hợp rồi bấm chuột kép vào đó, hoặc gõ CALL tên hàm thư viện. Các hàm thư viện cần chuyển giá trị cho các biến hình thức và ta phải cung cấp cho hàm gọi theo qui định của hàm thư viện. 

File đính kèm:

  • doctai_lieu_ky_thuat_lap_trinh_moi.doc