1. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Mở đầu
Trong tự động hóa người ta thường phải xậy dựng những hệ thống có tính tự động cao
có khả năng tự động thực hiện các chức năng cơ bản như:
Điều khiển (Control)
Hiển thị (Display)
Cảnh báo (Alarm)
Lưu trữ (Archieve)
In ấn, thông báo (Report)
Và gọi là một hệ thống SCADA (Supervisory Control and Data Acquisition System -
hệ thống điều khiển giám sát và thu thập dữ liệu)
Để xây dựng như vậy cần phải có những phần mềm chuyên dụng và ở Việt Nam hiện nay
có một số phần mềm được sử dụng như WinCC, Fix-Intellution, Wonderware, Scitect,
Plantscape(HoneyWell) ... Trong đó WinCC của Siemens được đánh giá cao nhất và
thông dụng nhất.
WinCC (Windows Control Center) là một phần chuyên dụng để xây dựng giao diện
điều khiển (Human Machine Interface), xử lí và lưu trữ dữ liệu cho một hệ thống
SCADA trên nền Windows (WinNT, WinXP, WinVista 32bit ...). WinCC là sản phẩm
mà Siemens đã thuê Microsoft xây dựng và hiện tại bản mới nhất là bản WinCC7.0. Và vì
vậy mà WinCC đã thừa hưởng bí quyết của Siemens - một công ty hàng đầu trong lĩnh
vực tự động hóa quá trình và năng lực của Microsoft - công ty hangf ddaauf trong linhx
vực phát triển phần mềm cho PC. WinCC có thể dễ dàng tích hợp trong các hệ thống có
quy mô lớn nhỏ khác nhau và cả những hệ thống cấp cao như MES (Manufacturing
Excution System - hệ thống quản lí việc thực hiện sản xuất) và ERP (Enterprise Resource
Planning). Thực tế thì WinCC đã và đang được ứng dụng trên khắp các hệ thống của
Siemens trên toàn cầu.
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 1 of 20
2. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Các đặc điểm chính của WinCC:
- WinCC sử dụng các công nghệ và phần mềm tiên tiến do Microsoft luôn là người
dẫn đầu trong phát triển công nghệ phần mềm.
- WinCC có thể mở rộng một hệ thống từ đơn giản đến phức tạp một cách linh hoạt,
từ hệ thống với một máy tính giám sát tới hệ thống với nhiều máy tính giám sát hay hệ
thống có tính phân tán với nhiều máy chủ
- WinCC có hàng loạt các module phần mềm kèm theo giúp định hướng theo từng
loại ứng dụng đã được phát triển sẵn để người dùng lựa chọn khi cần
- Tích hợp trong các bộ WinCC thường có các hệ quản trị cơ sở dữ liệu ODBC/SQL
như Sysbase SQL hay SQL Server (ví dụ SQL Server2005 trong WinCC 7). Và có thể dễ
dàng truy cấp tới CSDL của hệ thống bằng ngôn ngữ SQL hoặc ODBC.
- WinCC cũng được tích hợp các giao diện chuẩn như DDE và OLE ... dùng chuyển
đổi các chương trình chạy trên nền Windows. Các tính năng khác như ActiveX control và
OPC server cúng được tích hợp sẵn trong WinCC
- Để lập trình sự kiện thì WinCC hỗ trợ ngôn ngữ lập trình chuẩn ANSI- C và
VBScripts (WinCC 7)
- Tất cả các module của WinCC giao diện mở cho giao diện lập trình dùng ngôn
ngữ C (C-API: Application Programming Interface). Điều này có nghĩa là có thể tích hợp
cả cấu hình của WinCC cà cả các hàm thực hiện (runtime) vào một chương trình của
người sử dụng
- Có thể cài đặt trực tuyến WinCC bằng việc dùng thuật sĩ cài đặt (Setup Wizards)
- WinCC hỗ trợ đa ngôn ngữ như Anh, Pháp, Đức và thậm chí cả một số ngôn ngữ
châu Á, Mĩ cũng được tích hợp làm ngôn ngữ sử dụng
- WinCC hỗ trợ hầu hết các loại PLC do nó đã gắn sẵn các kênh truyền thông để
giao tiếp các loại PLC của Siemens như S5,S7,505 cũng như thông qua các giao thức
chung như Profibus DP, DDE hay OPC. Thêm vào đó các chuẩn thông tin khác cũng có
sẵn hay được lựa chọn bổ sung
- WinCC là phần tử SCADA trong hệ thống PCS7 của Siemens (là một hệ thống
điều khiển quá trình, một giải pháp tự động hóa được tích hợp toàn diện).
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 2 of 20
3. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Làm việc với WinCC
Trong phần này sẽ đi sâu vào cách làm việc cũng như các bước xây dựng một hệ thống
với WinCC.
Nội dung bao gồm:
Giới thiệu giao diện làm việc
Quản lí các thẻ (Tags)
Thiết kế giao diện đồ họa điểu khiển cho một hệ thống tự động
Lập trình xử lí sự kiện cho các đối tượng
Thêm các điều khiển nâng cao khác
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 3 of 20
4. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Giao diện làm việc
Khởi động:
Khởi động WinCC từ menu start như hình trên
Tạo mới một dự án: Chọn File->New một hộp thoại xuất hiện như hình dưới:
Chọn loại dự án muốn tạo hoặc mở một dự án có sẵn (‘Open an Existing Project’)
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 4 of 20
5. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Giao diện làm việc:
Giao diện làm việc gồm: - Tag Manaagement: quản lí các tag (thẻ liên kết)
- Tructure tag: Cấu trúc, tổ chức các tag
- Graphics Designer: Thiết kế môi trường đò họa điều khiển
- Menu and toolbars: Tạo menu và thanh công cụ
- Alarm Logging: Tạo lịch trình hệ thống
- Report Designer: Thiết kế thông báo
- Global Script: Tạo các đoạn mã điều khiển hệ thống(VBS&C)
- .....
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 5 of 20
6. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Quản lí Tags
Trong hệ thống SCADA để truyền thông số giữa các thiết bị phần cứng PLC (sensor, cảm
biến, hệ thống vận hàng , kiểm tra ...) với WinCC thì WinCC đã dùng các Tag. Các Tag
này có nhiệu vụ đồng bộ hóa các dữ liệu giữa thiết bị PLC và các thành phần điều khiển
trong WinCC trong đó có giao diện đồ họa điều khiển.
Tag chứa các giá trị thực như là mức điền đầy của thùng nước, tình trạng các Van
(đóng/mở)... hoặc là các giá trị tính toán cục bộ hay mô phỏng bên trong WinCC. Tương
ứng với các Tag trong WinCC là các Tag quá trình trong PLC hoặc thiết bị mô phỏng. Có
2 loại Tag trong WinCC:
- External Tag (Tag liên kết ngoài,Tag quá trình): Là các Tag do người dùng thiết
lập để liên kết với PLC thông qua từng driver cụ thể cho mỗi loại PLC. Để tạo Tag loại
này ta click phải chuột vào Link “Tag Management” chọn “Add new driver” sau đó chọn
các PLC driver có sẵn kèm theo WinCC hoặc chọn một driver khác từ tệp tin có đuôi
“.chn”.
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 6 of 20
7. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
- Internal Tag (Tag cục bộ): Là Tag chứa các giá trị cục bộ trong WinCC để phục
vụ tính toán, điều khiển trong giao diện đồ họa điều khiển. Để tạo một InternalTag ta
chọn mục “Internal tags”, cửa sổ bên phải sẽ hiện ra các Tag cho bạn quản lí. Click phải
chuột cào của sổ chọn “New Tag” nếu muốn tạo Tag mới hoặc “New Group” nếu muốn
tạo nhóm các Tag. Nếu tạo Tag mới thì trong cửa sổ hiện ra yêu cầu nhập các thuộc tính
cho Tag bao gồm: tên (Name), kiểu dữ liệu (DataType) và một số tùy chọn khác. Và tùy
theo mục đích sử dụng Tag của mình mà có thể chọn kiểu dữ liệu thích hợp không gây dư
thừa cũng như tràn bộ nhớ.
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 7 of 20
8. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Thiết kế giao diện đồ họa điều khiển
Để tạo một giao diện điều khiển mới, trong thẻ Graphics Dessigner click phải chuột
chon “New picture”. Chương trình sẽ tự động tạo file giao diện “NewPdl0.Pdl”, click
phải chuột chon “Rename” để đổi tên. Để thiết kế giao diện nào thì double click vào file
đó, một trình thiết kế giao diện đồ họa điều khiển (Graphics Dessigner) sẽ hiện ra:
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 8 of 20
Bảng màu
Công cụ
Các lớp giao diện
Zoom
Tọa độ chuột
Các đối tượng
đồ họa
Nét vẽ đối
tượng
9. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Việc thiết kế giao diện điều khiển cho hệ thống đơn giản chỉ là gắp, thả, di chuyển, thay
đổi thuộc tính. Tuy nhiên để có được hệ thống tối ưu thì phải có bước phân tích trước, tức
là giải bài toán: hiển thị cái gì, thông số gì, ở đâu, tích chất của nó như thế nào ...
Sau khi tạo bộ mặt cho giao diện thì tiếp theo là phải thiết lập liên kết từ đối tượng đồ
họa đến các Tag cho từng thông số cụ thể và thông qua các Tag tạo mối quan giữa các đối
tượng đồ họa. Để làm tốt điêu này cũng cần có bước phân tích tốt trước đó.
Để thêm đối tượng đồ họa mới ta có thể gắp thả các đối tượng đồ họa cơ bản bên mục
“Object Palette” hoặc trong thư viện bằng cách vào menu “View” chọn “Library” hoặc
click vào biểu tượng “Display Library” trên thanh công cụ.
Trong cửa sổ Library ta chọn các nhóm đối tượng bên phải và các đối tượng trong nhóm
sẽ hiển thị bên trái. Ta có thể cho hiển thị mẫu thu nhỏ các đối tượng hoặc theo danh sách
Các bạn chỉ việc gắp thả đối tượng muốn vào màn hình thiết kế.
Bước tiếp theo là đặt thuộc tính thích hợp cho các đối tượng: Click phải vào đổi tượng
chọn “Properties” chọn thẻ “Properties”. Trong bảng Object Properties có một các thông
số của đối tượng như màu sắc, hình thức hiển thị, kích thước, vị trí... và liên kết đến các
Tag, thông báo hiển thị hoặc liên kết với một hàm viết bằng C-Action hoặc VBS (kèm
theo các liên kết là các giá trị thời gian cập nhật lại thông số cho đối tượng )
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 9 of 20
Hiển thị
Danh sách
10. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Sau khi đã tạo các đối tượng đồ họa thích hợp ta chuyển sang bước tiếp theo là viết
các hàm xử lí sự kiện cho các đối tượng đồ họa thông qua các Tag và trạng thái đối tượng
khác (trình bày phần tiếp).
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 10 of 20
11. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Lập trình xử lí sự kiện cho các đối tượng
Để điều khiển các đối tượng đồ họa, người xây dựng hệ thống có thể sử dụng ngôn
ngữ ANSI-C (C chuẩn) hoặc VBS (VB Script) xây dựng các hàm độc lập hoặc thông qua
các sự kiện bị kích thích của các đối tượng đồ họa cũng như các Tag.
Để tạo hàm sử lí cho một đối tượng đồ họa ta chọn thẻ “Events” trong hộp thoại
“Properties” (đã nêu trên). Ở khung bên phải là các hàm sự kiện được hỗ trợ cho đối
tượng đồ họa này, click vào một đối tượng và khung bên phải hiển thị những hàm xử lí
của nó (có hoặc không).
Bạn thêm hàm mới cho sự kiện đó bằng click phải chuột vào mục “Action” của sự
kiện đó và chọn ngôn ngữ muốn làm việc, tiếp đó của sổ biên tập mã nguồn sẽ hiện ra
cho bạn xử lí.
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 11 of 20
12. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Trong cửa sổ biên tập mã sẽ có 2 khung, bên trái là các hàm cho hệ thống, hàm
chuẩn và các hàm cục bộ, khung bên phải là nơi biên tập mã cho sự kiện hiện tại.
Mặc định các tham số của hàm phải giữ nguyên, toàn bộ những câu lệnh điều khiển,
lặp ... đều thực hiện trong thân hàm. Ví dụ đoạn mã sau:
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 12 of 20
Tham số mặc định
Biên dịch
Phạm vi hàm
Thư vện hàm
13. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName,
char* lpszPropertyName, double value)
{
float TankValue;
TankValue=GetTagFloat("Tank"); //lấy giá trị của Tag tên là Tank kiểu float
if (GetTagBit("Vale1")){ //Ktra giá trị của Van số (Vale1) mở hay đóng(1/0)
if (TankValue<100){
SetTagFloat("Tank",TankValue+1); //Thiết lập giá trị cho Tank lên 1
}else{
SetTagBit("Vale1",0); //khóa van 1 bằng cách đặt giá trị là 0
}
}else{
if(TankValue<GetTagFloat("MinTank")&&GetTagBit("On")){
SetTagBit("Vale1",1);
SetTagFloat("Tank",TankValue+1);
}
}
}
(tham khảo thêm về ngôn ngữ ANSI-C)
Sau khi biên tập đoạn mã xong thì click vào công cụ có nhãn “Create Action” để
biên dịch và tạo sự kiện.
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 13 of 20
14. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Tạo các điều khiển khác
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 14 of 20
15. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Trong phạm vi của đề tài em chỉ mới tìm hiểu việc lập trình trên WinCC và chưa tìm
hiểu cách tạo các điều khiển khác nên xin phép không trình bày phần này.
Ví dụ xây dựng hệ thống cụ thể
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 15 of 20
16. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Để minh họa em xin trình bày các bước xây dựng một hệ thống đơn giản và chỉ xây
dựng ở mức giao diện điều khiển cơ bản: Hệ thống tưới nước tự động cho cây
Để xây dựng hệ thống trên nói riêng và hệ thống với WinCC nói chung thì cần thực
hiện các bước sau:
Phân tích thiết kế
Thiết kế giao diện đồ họa điều khiển
Lập trình các sự kiện cho đối tượng
Tạo các bảng thông báo, bảng đánh giá, bản quy trình sản xuất ...
Kết nối thiết bị, chạy thử và đóng gói.
Phân tích thiết kế mô hình
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 16 of 20
17. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Ta nhận thấy hệ thống tưới cây tự động có những đặc điểm sau:
Có sensor cảm ứng độ ẩm của đất (nơi trồng cây)
Có hệ thống vòi bơm nước và dẫn nước
Có bể chứa nước (trên cao) và thiết bị kiểm tra mức nước
Có 2 van: van trạng thái dẫn nước bể chứa và van cho phép dẫn nước tưới cây
Có công tắc nguồn cho cả hệ thống
Có các hiển thị về độ ẩm đất, mức nước trong bể, công suất bơm ...
Từ những đặc điểm trên ta cần một số Tag cục bộ và kiểu dữ liệu như sau:
Thiết kế giao diện điều khiển
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 17 of 20
18. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Từ những phân tích trên ta xây giao diện đồ họa điều khiển cho hệ thống như sau:
Lập trình xử lí sự kiện cho các đối tượng
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 18 of 20
19. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Mã nguồn xử lí sự kiện cho các đối tượng: công tắc nguồn, bể nước (mức nước trong
bể), độ ẩm của đất thay đổi, thay đổi công suất bơm nước, tốc độ bốc hơi nước của đất...
Xin xem cụ thể trong mã nguồn hệ thống kèm theo tài liệu này.
Chạy thử và đóng gói
Kết quả chạy thử thành công !
Kết luận
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 19 of 20
20. Tiểu luận: Tìm hiểu Lập trình WinCC cho hệ thống SCADA
Do lần đầu tiếp cận với kiến thức mới và việc số lượng tài liệu về vấn đề này còn ít nên
không tránh khỏi những thiếu sót cả về cách thức lẫn nôi dung của bài tiểu luận này. Em
mong thầy, cô chỉ day thêm cho em để có thể đạt được những thành công hơn cho những
lần tiếp theo.
Sinh Viên: Lê Đình Trường-Tink10b-ĐH Hồng Đức. Page 20 of 20