Chào mọi người, Hi vọng các bạn đọc phần này trước để không phụ lòng của tôi. Wincc Flexible không hề khó, khi lập trình với Flex có thể nói là khá đơn giản và thân thiện nữa. Tài liệu Wincc tiếng việt đã có nhiều, nhưng tài liệu Flex thì rất ít, tuy đơn giản những cái gì khi mới bắt đầu thì chúng ta phải rất nhọc công trong việc tìm hiểu khi học nó, bởi chúng ta chẳng biết nên bắt đầu như thế nào. Hôm nay tôi muốn gởi lên cho mọi người một tài liệu có thể nói là khá đơn giản về Flexible, coi như giúp các bạn học tập tìm hiểu, mong nó sẽ tạo nền tảng cho các bạn để thực hiện các dự án to lớn sau này. Ngày xưa tôi cũng nhọc công lắm để mò ra, hỏi hết người này đến tìm trên mạng, nhất là bó tay với cái manual đọc chẳng hiểu gì hết. Tôi xin gởi một dự án nhỏ mà tôi thực hiện khi học trong trường học, “điều khiển PID động cơ DC bằng S7-200, giám sát điều khiển bằng Flexible”. Ta không thể so sánh Wincc và Flex bởi 2 chương trình được thiết kế để thực hiện hai mục đích khác nhau dù cho trong những dự án nhỏ ta có thể dùng loại nào cũng được. Khi dùng Flex bạn cảm thấy dung lượng nhỏ hơn rất nhiều. Hy vọng với mục tiêu học tập là tiếp thu và chia sẻ, tôi mong các bạn hãy suy nghĩ sâu xa hơn, đừng ích kỷ khi chia sẻ tài liệu với bạn của mình. Người ích kỷ sẽ tự hại mình, hại cho người khác, hại xã hội thôi. Tôi mong rằng tài liệu này tôi gởi lên là miễn phí nên các trang Web không được kinh doanh nó để lấy lợi nhuận với bất kỳ hình thức nào. Xin cảm ơn mọi người. Người viết, Nguyễn Quốc Bình
[email protected] Đại học công nghiệp TP HCM
MỤC TIÊU: Điều khiển tốc độ động cơ DC bằng thuật toán PID trên S7-200. Điều khiển giám sát, báo lỗi hệ thống bằng giao diện Wincc Flexible 2008. NỘI DUNG: Thiết kế giao diện điều khiển hệ thống trên Wincc Flexible 2008, giao diện gồm có: Nút nhấn Start/Stop. Đảo chiều quay. Đèn báo lỗi hệ thống. Đồ thị hiển thị trạng thái đáp ứng của động cơ. Chương trình điều khiển động cơ trên S7-200.
Khởi động Wincc Flexible:
Giao diện khởi động xuất hiện, chọn Creat an empty project:
Một cửa sổ có tên Devide selection xuất hiện, đây là cửa sổ cho phép ta chọn loại màn hình HMI sử dụng, nếu quan sát trên máy tính thì chọn PC/ Wincc Flexible Runtime. Click OK.
Đây là giao diện chương trình, chú thích một số tùy chọn đơn giản nhất:
Vùng tùy chọn thêm giảm các Screen.
Tùy chỉnh chọn loại kết nối, đặt Tag.
Điều chỉnh độ phân giải, loại màn hình của giao diện khi chạy RunTime
Và các tùy chọn khác như báo lỗi, Report, Scrip… Lập trình cho Flexible kết nối với S7-200 gần giống như Wincc, ta không thể kết nối trực tiếp mà phải sử dụng server OPC làm trung gian kết nối. Ở đây ta sử dụng PC Access. Khởi động PC Access, cửa sổ chương trình hiện ra, chọn File/ New :
Click phải vào biểu tượng có hình PLC chọn New PLC:
Đặt tên là Motor. Click chuột phải vào khoảng trống giữa màn hình chọn New/Item và đặt các biến như sau:
Sau khi lưu thì nhấn vào đây để kích hoạt OPC
Tiến hành lưu lại và chạy OPC (nhấn vào biểu tượng Test client status). Chú ý phải lưu lại để kích hoạt chương trình trên PC Access vứa tạo.
Vào lại Wincc Flexible. Vào Communication/Connection:
Nhấp chuột phải vào đây chọn Add Connection.
Màn hình hiện ra như sau, tiến hành đổi tên Connection_1 thành S7-200 server 1 (có thể đổi tên bất kỳ). Trong bảng Communication Driver chọn OPC:
Chọn S7200.OPC Server
Tên S7200 OPC.Server xuất hiện
Trong bảng có các biểu tượng màu xanh bên dưới chọn S7200 OPC.Server, lúc này tại ô OPC server name sẽ có tên S7200 OPC.Server:
Việc kết nối hoàn tất, lúc này ta tiến hành đặt các biến Tag cho hệ thống. Vào Communication/Tags:
Chuột phải chọn Add Tag, một Tag mới vừa tạo hiện ra, các thuộc tính của nó bao gồm: Name: Tên Tag, nên tiến hành đổi tên Tag cho dể quản lý. Display name: Tên hiển thị, có thể dùng chức năng này hoặc bỏ qua, tên hiển thị mặc định là tên đặt ở mục Name. Connection: Chọn loại kết nối sử dụng. Ở đây chọn kết nối OPC vừa tạo ra. Data type: Kiểu dữ liệu. Symbol: đây là phần quan trọng nhất, là nơi liên kết giữa Wincc Flex với OPC, ví dụ kết nối biến start với địa chỉ Start trên PC access vừa tạo ở trên:
Tại mục Acquisition Cycle là nơi chọn chu kỳ update, nên chọn 100ms. Tương tự ta tạo các Tag và kết nối các biến Tag với PC Access như sau:
Quay lại màn hình Screen. Dùng các Object để tạo ra giao diện như sau:
Simple Object: Dùng Text Field tạo chú thích, dùng IO Field để tạo ô xuất nhập dự liệu, dùng Switch để tạo chọn lựa quay trái quay phải, dùng Button để tạo các nút nhấn, Circle tạo đèn báo…
Để vẽ đồ thị ta vào Enhanced Objects/ chọn Trend View:
Trend view
Ta tạo giao diện như sau:
Bây giờ ta sẽ kết nối thuộc tính của các Object trên giao diện với các Tags mà ta đã tạo.
Với các IO Field: Nhấp chuột phải vào IO Field tại S.P chọn Properties, cửa sổ Properties hiện ra:
Cycle: chu kỳ cập nhật dữ liệu, chọn 100ms
Cửa sổ Properties của IO Field. Chọn lựa thuộc tính xuất hay nhập.
Kết nối IO với Tag tương ứng.
Sửa đổi kiểu định dạng cho dữ liệu xuất nhập.
Check vào dấu sau khi hoàn thành việc điều chỉnh để lưu lại.
Làm theo các bước như trên cho 5 IO Field như sau:
S.P: Vận tốc đặt ngoài giao diện. Ta kết nối với biến Setpoint. Kiểu dữ liệu định dạng là 9999. Chọn lựa xuất nhập là Input (chỉ nhập). P.V: Vận tốc đo về. Kết nối Tag Feedback, kiểu dữ liệu là 9999, chọn lựa kiểu xuất nhập là Output ( chỉ xuất dữ liệu). Kp, Ki, Kd: Là các tham số của bộ điều khiển PID, chọn kiểu xuất nhập là Input/Output, kết nối tương ứng với các Tag cùng tên, kiểu dữ liệu là 99.999999. Với các nút nhấn: Nút start:
Button Mode: chọn kiểu hiển thị là hình ảnh hay text hay ẩn đi. Chọn text.
Chữ hiển thị khi nhấn (Text on)và không nhấn (Text off).
Hotkey? Chon F1.
Vào Event/Click:
Nơi đây là nơi lập trình cho các biến cố xảy ra khi nhấn nút Start. Tại dòng
, ta nhấp vào nó, biểu tượng bên phải xuất hiện cho phép ta chọn lựa các biến cố, chọn Setbit, tại noi có chữ ta nhấn và chọn đến tag Start.:
Hoàn thành cho nút nhấn Start. Với nút nhấn stop cũng làm tương tự nhưng function là Resetbit Start.
Với Switch: chuột phải/Properties: Chọn kết nối với Tag Dao chieu. Khi tag này kích lên 1 thì motor quay phải.
Chọn lựa kiểu hiển thi, ở đây chọn kiểu switch.
Chú ý chọn Value On là 1.
Chọn như vậy thì khi kích hoạt thì motor sẽ quay phải, bình thường là quay trái.
Đèn báo: Chuột phải vào đèn báo chọn Properties. Bảng điều chỉnh hiện ra:
Tùy chỉnh Properties của đèn báo
Liên kết Tag
Chọn màu sắc: màu viền và màu nền. Chọn giá trị
Vào Amination/Apearance. Ta chọn liên kết với Tag Bao loi tại ô Tag và đặt màu sắc, giá trị cho đèn báo như hình trên.
Vẽ đồ thị trong Wincc Flexible (TrendView Properties): Nhấn chuột phải vào TrendView/Properties:
Các thuộc tính Properties cần chú ý tới:
Apearance: Tùy chỉnh màu nền,màu trục tọa độ, màu thước… Layout: Chỉnh vị trí đặt đồ thị. Các tùy chọn Axis: Hiệu chỉnh độ lớn, title… của trục tọa độ. Trend: Tùy chọn này cho phép hiển thị giá trị các Tag lên đồ thị (liên kết Tag, chọn màu hiển thị…).
Trên đồ thị ta chọn Left Value Axis, Right Value Axis là 1400. Trên trục X Axis ta chon Interval Time là 100. Kết nối biến Setpoint và Feedback với đồ thị: Properties/Trend/ Chuột phải/Add Trend.
Source setting: Tùy chọn kết nối với Tag cần đưa lên đồ thị.
Chọn màu cho đồ thị.
Kết nối PLC và nhấn Runtime để bắt đầu chạy chương trình.
Bảng Symbol: XUNG
SMD48
//gia tri hien tai hsc1
CHU_KY_XUNG SMW68
//chu ky xung
DO_RONG_XUNG SMW70
//do rong xung
PID0_Table VB100 PID_ENABLE
//dia chi bat dau pid
VB140
//cho phep chay pid (1=run, 0=stop)
SP
VD12 //toc do dat (vong/ph)
PV
VD28 //toc do do (vong/ph)
XUNG_ENCODER VD32 //so xung cua encoder TOC_DO_MAX KP
VD80 KP
KI
VD84 KI
KD
VD88 KD
VD40 //toc do toi da cho phep (vong/ph)
PID_PV
VD100
toc do do
PID_SP
VD104
toc do dat trong pid
OUT VD108 PID_Gain
ngo ra
VD112
kp
Ts
VD116
thoi gian lay mau ts
Ti
VD120
thoi gian tich phan ti
Td
VD124
thoi gian vi phan td
BIAS VD128 OUT_N
tong vi phan
VD132
output truoc do
Chương trình trên PLC:
TITLE=PROGRAM COMMENTS Main: Network 1 // Nap chuong trinh khoi tao xung Encoder, PID, Phat xung trong chu ky quet dau tien. LD SM0.1 CALL SBR0 CALL SBR1 CALL SBR2 Network 2 // Reset ngo ra o chu ky quet dau tien, cho ngat timer 0, sau do chay chuong trinh HSC de doc xung va PID de thuc hien thuat toan PID. LD M0.0 O I0.0 EU //lenh phat hien xung canh len R Q0.0, 1 ATCH INT0, 10 ENI //cho phep ngat HSC 1 MOVB 1, VB140 Network 3 // Khi nhan stop thi xoa het cac thong so dang chay cua he thong: Gia tri do duoc, ngo ra, reset HSC, ngat chuong trinh PID. LD M0.1 O I0.1 MOVR 0.0, VD100 MOVR 0.0, VD108 MOVR 0.0, VD28 MOVB 0, VB140 MOVD 0, SMD48 Network 4 // Neu nhan M0.2 la dem len. LD M0.2 S SM47.3, 1
Network 5 // neu khong nhan M0.2 la dem xuong. LDN M0.2 R SM47.7, 1 Network 6 //bao loi khi nhan start ma motor van khong quay LD M0.3 AD<= HC1, 5 = V48.1 = Q0.2 Network 7 //bao loi khi nhan stop ma motor van quay hoac motor quay mat dieu khien LDN M0.3 AD>= HC1, 5 = V48.1 = Q0.2 Chuong trinh khoi tao HSC: Network 1 // Instruction Wizard HSC // Chon HSC1 chay o MODE9. LD SM0.0 MOVB 16#7C, SMB47 //Set control bits: count UP; reset active HIGH; start //active HIGH; rate 1X; enabled; MOVD 0, SMD48 //Load CV MOVD 0, SMD52 //Load PV HDEF 1, 9 HSC 1 S SM47.7, 1// Lenh cuoi cung (SET SM47.7) la cho HSC1 hoat dong. Chuong trinh khoi tao PID: TITLE=SUBROUTINE COMMENTS Network 1 // Network Title // Network Comment // cai dat thong so cho chuong trinh pid, cac he so kp ti td duoc tinh va nap thang tu giao dien, khong co dung gia tri mac dinh ban dau.
LD SM0.0 MOVR VD12, VD52 /R 2000.0, VD52 //chia gia tri dat cho toc do toi dasetpoint. MOVR VD52, VD104 MOVB 0, VB140 MOVR 0.0, VD132 MOVR 0.0, VD28 MOVR 0.1, VD128 MOVR 0.06, VD116 //thoi gian lay mau 0.06s
Khởi tạo bộ điều xung: Network 1 // Network Title // Network Comment LD SM0.0 MOVB 16#D3, SMB67 MOVW 1000, SMW68 MOVW 0, SMW70 MOVB 16#D3, SMB67 PLS 0 Chương trinh ngắt: TITLE=INTERRUPT ROUTINE COMMENTS Network 1 // Network Title LD SM0.1 MOVR VD12, VD52 /R 2000.0, VD52 MOVR VD52, VD104 PID VB100, 0 //goi vong lap chuong trinh pid 0 MOVD HC1, VD0 //dua gia tri hsc vao vd0 DTR VD0, VD4 MOVR VD4, VD8 /R 400.0, VD8 MOVR VD8, VD100 MOVR VD8, VD28 *R 2000.0, VD28
MOVR VD108, VD16 *R 1000.0, VD16 ROUND VD16, VD17 DTI VD17, AC0 MOVW AC0, SMW70 PLS 0 Network 2 LD SM0.0 MOVD 0, SMD48 HSC 1 MOVB 1, VB140 CRETI