Giáo trình Đo lường và điều khiển bằng máy tính - Chương 9: Bộ điều khiển Logic lập trình được
Trong hệ thống tự động thường gặp những thiết bị làm việc
theo kiểu tuần tự, theo qui luật if then else với tín hiệu vào và
ra có hai mức, ví dụ như contact hành trình, rơle. Các sơ đồ này
có thể thực hiện bằng rơle và mạch định thời nhưng với sơ đồ
phức tạp số lượng rơle khá lớn, độ tin cậy kém và nhiều khi
không đạt yêu cầu. Từ những năm70 để đáp ứng yêu cầu có
những thiết bị điều khiển thay thế sơ đồ rơle, đã xuất hiện bộ
điều khiển logic lập trình được (Programmable Logic Controller-
PLC)và ngày càng hoàn thiện, được áp dụng rộng rãi trong công
nghiệp (PLC của hãng Allen Bradley Corporation sản xuất năm
1977 sử dụng vi xử lý 8080).
4 năm 2006 chiều dài bảng tối đa 255. Byte đầu của bảng cho biết chiều dài dữ liệu. Khi ký tự cuối của bảng được gởi sẽ báo sự kiện ngắt 9 hay 26 hay tác động SM4.5. Khi thu xong bằng lệnh RCV sẽ tác động sự kiện 23, 24, SMB86..94 (port 0) SMB186..194 (port 1). Lệnh RCV Ví dụ:Truyền và nhận ký tự LD SM0.1 MOVB 9, SMB30 // Chọn Protocol 9600 baud, 8 bits/1 kýtự, không parity MOVB 1, VB100 // chiều dài thông điệp là 1 ký tự ASCII MOVB 16#41, VB101 // ký tự truyền là "A", có mã ASCII là 41 H LD SM0.1 // bit SM0.1 on trong chu kỳ quét đầu tiên ATCH INT_0, 8 // liên kết ngắt 0 (INT0) với biến cố 8. ENI // cho phép tất cả ngắt sự kiện. LD I0.1 // Load ngõ vào I0.1. EU // Xét sườn lên I0.1 XMT VB100, 0 // truyền bảng có địa chỉ đầu VB100 ra port 0 Chương trình ngắt INT0 // nhận đúng ký tự truyền là “A” thì báo hiệu ở ngõ ra Q0.1 LDB= Receive_Char, 16#41 S Char_A, 1 // bật ngõ ra Q0.1. Có thể dùng các ô nhớ SMB86 ÷ SMB94 và SMB186 ÷ SMB194 đểâ đặt cấu hình cho việc thu bản tín, ngoài ra sự kiện ngắt 8, 25 sẽ xảy ra khi thu một ký tự, lúc này SMB2 chứa ký tự vừa nhận còn SM3.0 chứa kết quả kiểm tra parity. Khi nối nhiều PLC với nhau qua mạng 485 ta dùng lệnh NETR/ NETW để đọc/ghi dữ liệu, các PLC phải có địa chỉ cụ thể. Tác giả: TS Nguyễn Đức Thành Trang 309 9.25.3 Đếm vận tốc cao Có ba bộ đếm vận tốc cao HSC0, HSC1 và HSC2 dùng để đếm xung tần số cao từ encoder, HSC0 đếm lên xuống với xung nhịp vào ở I0.0 tần số tối đa 2KHz, hướng đếm định như sau SM37.3 = 0 đếm xuống, SM37.3 = 1 đếm lên. Giá trị đếm của HSC0 chứa trong 32 bit của SMD38 gồm SMB38, SMB39, SMB40 và SMB41 (MSB trong SMB38, LSB trong SMB41). Giá trị đặt trước cho HSC0 chứa trong SMD42. Khi giá trị hiện tại bằng giá trị đặt sẽ gây ra sự kiện ngắt 12. HSC1 và HSC2 là bộ đếm vận CHƯƠNG 9: BỘ ĐIỀU KHIỂN LOGIC LẬP TRÌNH ĐƯỢC Trang 310 Thành phố Hồ Chí Minh, tháng 4 năm 2006 Chế độ Miêu tả I0.6 I0.7 I1.0 I1.1 0 (I1.4) 1 (I1.5) 2 Đếm lên xuống SM47.3=0 đếm xuống (SM57.3) SM47.3=1 đếm lên (SM57.3) (I1.2) Nhịp (I1.3) Xóa Start 3 4 5 Đếm lên xuống với điều khiển hướng bên ngoài I0.7 = 0 đếm xuống (I 1.3) I0.7 = 1 đếm lên Nhịp Hướng Xóa Start 6 7 8 Đếm lên xuống với hai xung nhịp Nhịp lên Nhịp xuống Xóa Start 9 10 11 Đếm lên xuống với 2 xung AB vuông pha từ encoder Nhịp A Nhịp B Reset Start tốc cao có 12 chế độ hoạt động, giá trị hiện tại của HSC1 là SMD48 và của HSC2 là SMD58. Trị đặt của HSC1/HSC2 là SMD52/SMD62. Khi trị hiện tại bằng trị đặt sẽ phát sinh ngắt 13 với HSC1 và 16 với HSC2. Khi chân xóa tích cực giá trị hiện tại của HSC được xóa, khi chân start tích cực cho phép HSC đếm xung. Mức tích cực của các chân này được định bởi SMB47 và SMB57. Bảng 9.8 HSC1 HSC2 Tác dụng khi lệnh HDEF được thực hiện SM 47.0 SM 57.0 0: chân xóa tích cực cao SM 47.1 SM 57.1 0: chân start tích cực cao SM 47.2 SM 57.2 0: số xung đếm bằng 4 lần xung vào A Muốn dùng HSC, đầu tiên phải xác định số HSC, mode hoạt động, từ điều khiển, sau đó dùng lệnh HDEF để khởi động. Tác giả: TS Nguyễn Đức Thành Trang 311 Bảng 9.9 HSC0 HSC1 HSC2 Miêu tả SM 37.0 SM 47.0 SM 57.0 Không dùng sau khi HDEF đã thực hiện SM 37.1 SM 47.1 SM 57.1 nt SM 37.2 SM 47.2 SM 57.2 nt SM 37.3 SM 47.3 SM 57.3 Bit hướng 0: đếm xuống; 1: đếm lên SM 37.4 SM 47.4 SM 57.4 Ghi bit hướng 0: không ghi; 1: ghi SM 37.5 SM 47.5 SM 57.5 Ghi trị đặt vào HSC 0: không ghi; 1: ghi SM 37.6 SM 47.6 SM 57.6 Viết trị hiện tại mới vào HSC 0: không ghi; 1: ghi SM 37.7 SM 47.7 SM 57.7 0: cấm HSC; 1: cho phép HSC Các bit điều khiển chỉ tác động sau khi lệnh HSC được thực hiện. Để hiểu rõ HSC ta xét trưòng hợp dùng HSC1 đếm xung AB từ encoder kiểu đếm 4X, hai tín hiệu A, B nối vào I0.6 và I0.7, tín hiệu xóa vào I1.0 và tín hiệu khởi động vào I1.1 Network 1 LD SM0.1 // khi quét lần đầu, gọi chương trình con 0 CALL 0 // khởi động bộ đếm HSC Network 2 MEND Network 3 SBR 0 Network 4 LD SM0.0 MOVB 16#F8, SMB47 // Dùng HSC1 mode 11 CHƯƠNG 9: BỘ ĐIỀU KHIỂN LOGIC LẬP TRÌNH ĐƯỢC Trang 312 Thành phố Hồ Chí Minh, tháng 4 năm 2006 HDEF 1, 11 // Ban đầu đếm lên, chân xóa và start tích cực ở mức cao, 4X MOVD 0,5MD48 // Trị hiện tại là 0 MOVD 50, SMD52 // Trị đặt là 50 ATCH 0,13 // sự kiện ngắt 13 sẽ gọi ngắt số 0 ENI // cho phép ngắt HSC 1 // Nạp thông số vào HSC1 Network 5 RET Network 6 INT 0 Network 7 LD SM 0.0 // khi có ngắt xóa trị hiện tại MOVD 0, SMD 48 // của HSC0 MOVB 16#C0, SMB47 HSC 1 Network 8 RETI 9.26 LỆNH PID Lệnh này không có ở CPU 212, 214, trong chương trình có thể dùng tối đa 8 lệnh PID. Thông số lệnh chứa trong một bảng 36 byte gồm 9 thông số thực 4 byte. TABLE là địa chỉ bảng (vùng VB), LOOP từ 0 đến 7. Sau đây là bảng các thông số Bảng 9.4 Địa chỉ lệnh Tên Miêu tả 0 Đại lượng hiện tại nPV Đại lượng được điều khiển, chuẩn hóa từ 0.0 đến 1.1 4 Đại lượng đặt nSV Trị đặt, chuẩn hóa 8 Đại lượng điều khiển nM Ngõ ra của PID, chuẩn hóa 12 Độ lợi vòng CK Hệ số tỷ lệ 16 Thời gian lấy mẫu ST Thời gian lấy mẫu, đơn vị là giây 20 Thời gian tích phân 1T 24 Thời gian vi phân DT Tác giả: TS Nguyễn Đức Thành Trang 313 28 Đại lượng offset MIn-1 Giá trị tích phân ở thời điểm trước, chuẩn hóa 32 Đại lượng trước n 1PV − Trị số đo của đại lượng được điều khiển ở thờùi gian lấy mẫu trước Thuật toán PID được thực hiện theo phương trình: = + +n n n nM MP MI MD ∗= −n c n nMP K SV PV( ) ∗ ∗−= + −1n n c S I n nMI MI K T T SV PV/ ( ) ∗ ∗ −= −1n c D S n nMD K T T PV PV/ ( ) Trị đặt SV và trị đo PV đều phải là số thực và được chuẩn hóa. Đầu tiên phải đổi số nguyên 16 bit ra số thực, sau đó chia cho tầm (Span) của đại lượng đó và cộng với Offset (là 0.0 nếu đơn cực và 0.5 nếu lưỡng cực) Ví dụ, ta muốn đổi trị số đo của AIW0 ra số thực và chuẩn hóa cho 64000 cất vào VD100: XORD AC0, AC0 //Xóa ACC MOVW AIW0, AC0 //Cất trị đo vào ACC LDW>= AC0, 0 //Nếu dương JMP 0 //đổi sang số thực NOT //Nếu âm ORD 16#FFFF0000, AC0 //Khai triển dấu giá trị trong AC0 LBL 0 DTR AC0, AC0 //Đổi số nguyên 32 bit ra số thực /R 64000.0, AC0 //Chuẩn hóa +R 0.5, AC0 MOVR AC0, VD100 Tín hiệu ra M là đại lượng đã chuẩn hóa, muốn dùng để điều khiển ta phải đổi ra số nguyên 16 bit. Ví du: đổi trị thực lưỡng cực ở VD108 ra số nguyên 16 bit ở AQW0 MOVR VD108, ACV0 -R 0.5, AC0 *R 64000.0, AC0 TRUNC AC0, AC0 MOVW AC0, AQW0 CHƯƠNG 9: BỘ ĐIỀU KHIỂN LOGIC LẬP TRÌNH ĐƯỢC Trang 314 Thành phố Hồ Chí Minh, tháng 4 năm 2006 Ví dụ: lập trình PID điều khiển mức nước trong bồn chứa sao cho áp suất nước ở đường xả không đổi, mức nước được duy trì ở mức 75% tối đa bằng cách điều khiển vận tốc bơm. Đo mức: AIW0 Điều khiển bơm: AQW0 Bảng PID: VD100 Gọi PID: gọi ngắt thời gian 0.1s CK : 0.25, ST : 0.1s, 1T : 30 phút Chương trình dạng STL: Network 1 LD SM0.1 CALL 0 // Gọi chương trình con 0 đặt cấu hình PID ở lần quét đầu Network 2 MEND Network 3 SBR 0 Network 4 LD SM0.0 MOVR 0.75, VD104 // Điểm đặt 75% MOVR 0.25, VD112 // Độ lợi vòng MOVR 0.10, VD116 // ST MOVR 30.0, VD120 // 1T MOVR 0.0, VD124 // Không dùng đạo hàm MOVB 100, SMB34 // Ngắt thời gian 0.1s gọi PID ATCH 0,10 ENI Network 5 RET Network 6 INT 0 Network 7 LD SM0.0 XORD AC0, AC0 MOVW AIW0, AC0 // Đọc mức nước và đổi sang số thực rồi đưa vào bảng DTR AC0, AC0 / R 32000.0, AC0 Tác giả: TS Nguyễn Đức Thành Trang 315 MOVR AC0, VD100 Network 8 LD I0.0 // Khi I0.0 ON thì điều khiển PID PID VB100,0 Network 9 LD SM0.0 MOVR VD108, AV0 // Xuất ra điều khiển *R 32000.0, AC0 TRUNC AC0, AC0 MOVW AC0, AQW0 Network 10 RETI 9.27 LỆNH ĐỒNG HỒ Đồng hồ trong PLC đếm thời gian ngày giờ phút giây, đọc thời gian bằng lệnh READ_RTC, chỉnh sửa thời gian bằng lệnh SET_RTC. Thời gian chứa trong bảng T 8 byte BCD có dạng sau T Năm 00..99 T+1 Tháng 01..12 T+2 Ngày 01..31 T+3 Giờ 00..23 T+4 Phút 00..23 T+5 Giây 00..59 T+6 0 T+7 Ngày trong tuần 0..7, 1: Chủ nhật, 2: thứ hai 0: Không dùng CHƯƠNG 9: BỘ ĐIỀU KHIỂN LOGIC LẬP TRÌNH ĐƯỢC Trang 316 Thành phố Hồ Chí Minh, tháng 4 năm 2006 Tác giả: TS Nguyễn Đức Thành Trang 317 Các bit nhớ SM cần lưu ý SMB0, B1 SM 0.0 Luôn luôn ON SM 0.1 ON ở chu kỳ quét đầu SM 0.2 ON khi dữ liệu cần lưu trữ bị mất (1 chu kỳ) SM 0.3 ON khi RUN SM 0.4 Xung nhịp chu kỳ 1 phút SM 0.5 Xung nhịp chu kỳ 1 sec SM 0.6 Xung nhịp có chu kỳ bằng hai lần thời gian quét SM 0.7 Phản ảnh chế độ hoạt động của PLC SM 1.0 ON khi kết quả tích là Zero SM 1.1 ON khi bị tràn SM 1.2 ON khi kết quả âm SM 1.3 ON khi chia cho zero SM 1.4 ON khi bảng bị tràn (xem lệnh bảng) SM 1.5 ON khi bảng bị trống (xem lệnh bảng) SM 1.6 ON khi lệnh BCDI không thực hiện được SM 1.7 ON khi lệnh ATH không thực hiện được -------O-------- Bài tập gợi ý 1/Nghiên cứu các thiết bị HMI của OMRON và SIEMENS 2/ Nghiên cứu giao thức truyền Modbus 3/ Lập trình giao tiếp với máy tính
File đính kèm:
- Giáo trình Đo lường và điều khiển bằng máy tính - Chương 9 Bộ điều khiển Logic lập trình được.pdf