Xây dựng ứng dụng trên OPC client:

Một phần của tài liệu Xây dựng hệ thống thu nhập dữ liệu, giám sát và điều khiển qua mạng trên cơ sở công nghệ OPC (Trang 54)

Phát biểu bài toán: Hệ thống các thiết bị tại phòng thí nghiệm trọng điểm bao gồm các thiết bị như trong hình 36 ở trên. Bài toán đặt ra là sau khi cài đặt máy chủ OPC và cấu hình phần cứng cho máy chủ OPC ta cần phải xây dựng một ứng dụng từ phía client có thể đọc và điều khiển được toàn bộ các tham số

của từng thiết bị.

Như đã trình bày ở phần trước, các ứng dụng Client truyền thông với OPC server thông qua 2 giao diện: giao diện tự động( Automation interface) được viết bằng VB hoặc giao diện tuỳ biến( Custom interface) được viết bằng C++.

Ứng dụng VB Trình chuyển đổi OPC tựđộng Máy chủ OPC từ xa hoặc cục bộ Vùng đệm dữ liệu máy chủ Thiết bị vật lý Dữ liệu Giao diện tuỳ biến OPC Giao diện tựđộng OPC Ứng dụng C++

Hình 55. Truyền thông giữa ứng dụng client với máy chủ OPCServer

Mặc định các máy chủ OPC bắt buộc phải thực hiện các giao diện tuỳ

biến và cung cấp thêm tuỳ chọn giao diện tự động nhờ bộ bao gói giao diện tự động chuẩn “wrapperDLL” được cung cấp bởi tổ chức OPC Foundation.

Dưới đây là minh hoạ một đoạn chương trình kết nối với máy chủ OPC SIMATIC đặt tại phòng thí nghiệm trọng điểm được viết bằng ngôn ngữ lập trình VB:

Private Sub cmdConnectServer_Click() If Not ServerConnected Then

On Error GoTo ErrorHandler ServerConnected = True

'Khai bao may chu OPCServer

Set g_Server = New OPCServer

'Ket noi toi may chu OPC thong qua ten may chu la SIMATIC.

g_Server.Connect ServerName, "SIMATIC"

MsgBox "Server " & ServerName & " da duoc ket noi !", _ vbInformation, "Message"

Else

MsgBox "May chu da duoc ket noi", _ vbInformation, "Message"

End If Exit Sub ErrorHandler:

MsgBox Err.Description + Chr(13) + _

" Khong the ket noi toi may chu", vbCritical, "ERROR" End Sub

Tuy nhiên chương trình sẽ được xây dựng dựa trên phần mềm WinCC và sử dụng ngôn ngữ lập trình C.

Chương trình gồm 5 modun:

• Modun điều khiển và giám sát tín hiệu số: thực hiện việc đọc và

điều khiển tới từng bit trên bộ DI DO 16 bit và DO 32bit.

• Modun điều khiển và giám sát tín hiệu tương tự: đọc và thiết lập giá trị cho bộđiều khiển tín hiệu tương tự.

• Modun giám sát nhiệt độ và khối lượng: Thực hiện việc đọc hai tham số nhiệt độ và khối lượng của thiết bị đo nhiệt độ và cân Siwarex được nối với modun ET-200M.

• Modun điều khiển động cơ 3 pha: điều khiển tốc độ, chiều của động cơ 3 pha.

• Modun hệ thống điều khiển quá trình: thiết đặt mực nước cần điều khiển nhờ tham số SetPoint và điều khiển quá trình tắt, mở van nước bằng một hệ thống có dự phòng nóng giữa trạm Simantic400A và trạm Simatic400B.

Bước 1: Cấu hình truyền thông giữa máy client và OPC thông qua WinCC:

WinCC là phần mềm hỗ trợ cho người lập trình thiết kế những ứng dụng giám sát và điều khiển quá trình sản xuất. Để chương trình có thể truyền thông với máy chủ, bước đầu tiên ta phải cấu hình truyền thông cho WinCC:

- Ta tiến hành mở một dự án WinCC (adsbygoogle = window.adsbygoogle || []).push({});

- Ấn phải chuột tại Tag management => chọn Add new driver.

Hình 56. Chèn Driver để truyền thông với OPC

- Xuất hiện cửa sổ dưới đây, ta chọn Driver cho WinCC truyền thông với các thiết bị là file OPC.chn trong thư mục hiện thời.

Hình 57. Lựa chọn OPC.chn là Driver truyền thông

- Xuất hiện biểu tượng OPC và tiếp theo là OPC Group(OPCHN Unit #1), ấn phải chuột tại biểu tượng này và chọn New driver connection để tạo một kết nối với máy chủ OPC như hình dưới

đây:

Hình 58. Tạo kết nối tới máy chủ OPC

- Trên ô Name của hộp hội thoại connection properties ta gõ vào tên kết nối là: ConnectionOPC.

- Lựa chọn thuộc tính Properties để khai báo các tham số cho kết nối:

o Ta điền OPC.SimaticNet là tên của OPC vào ô OPC Server Name

o Điền tên máy chủ chạy OPC trong trường hợp ở đây là Simatic vào ô “Run the server on another computer” do ở đây ta chạy từ

máy client và kết nối tới máy chủ OPC có tên là Simatic.

Hình 59. Khai báo tham số cho kết nối

Bước 2: Tạo các nhóm và các thuộc tính:

Bước tiếp theo ta cần tạo các nhóm và các item thuộc từng nhóm. Để tạo nhóm ta chỉ cần ấn phải chuột tại biểu tượng connection vừa tạo và chọn New group rồi gõ vào tên nhóm để tạo nhóm mới.

Hình 60. Tạo các nhóm

Để tạo một Item thuộc một nhóm nào đó ta lựa chọn nhóm đó và ấn phải chuột chọn New tag. Trên ô Name gõ vào tên của item cần tạo, trên ô Data Type gõ vào kiểu dữ liệu, trên ô Address chọn select và gõ vào địa chỉ của Item đó, ví dụ địa chỉ của biến chiều quay của Motor là: SIMATIC 400(A).CPU 414-3 DP.Direction_Motor.

Hình 61. Khai báo thuộc tính của một item.

- Danh sách các nhóm và các Item cần tạo theo danh sách dưới đây:

Nhóm Item Kiểu dữ liệu Địa chỉ Ghi chú

Switch Motor Binary Tag SIMATIC 400(A).CPU 414-3 DP.Start_Stop_Motor

Direction Binary Tag SIMATIC 400(A).CPU 414-3

DP.Direction_Motor Speed Floating-point number 32-

bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Motor_Speed

Setpoint Floating-point number 32- bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Motor_Sp

ErrorMotor Binary Tag SIMATIC 400(A).CPU 414-3

DP.Motor_Error Motor (adsbygoogle = window.adsbygoogle || []).push({});

Invertercontrol Floating-point number 32- bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Inverter Control word Được định nghĩa tại bảng Symbol trong bộ Step7

Weight Weight Floating-point number 32- bit IEEE 754

S7:[S7 connection_1]MREAL160, 1 Temp Temperature Floating-point number 32-

bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Hart_temp

Do16_i (i=0,7) Binary Tag S7:[S7 connection_1]M0.i, 1 (i=0,7) Do16_i (i=8,15) Binary Tag S7:[S7 connection_1]M1.i, 1 (i=0,7) DI16_i (i=0,7) Binary Tag S7:[S7 connection_1]M0.i, 1 (i=0,7) DIDO16

DI16_i (i=8,15) Binary Tag S7:[S7 connection_1]M1.i, 1(i=0,7) D032_i (i=0,7) Binary Tag S7:[S7 connection_1]M4.i, 1 (i=0,7) D032_i (i=8,15) Binary Tag S7:[S7 connection_1]M5.i, 1 (i=0,7) D032_i (i=16,23) Binary Tag S7:[S7 connection_1]M6.i, 1 (i=0,7) Do32

Analog_Input_4 Floating-point number 32- bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Analog_Input_4

Analog_Input_5 Floating-point number 32- bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Analog_Input_5

Analog_Input_6 Floating-point number 32- bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Analog_Input_6

AI_300

Analog_Input_7 Floating-point number 32- bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Analog_Input_7

AO_300 Analog_OutPut_1 Floating-point number 32- bit IEEE 754

SIMATIC 400(A).CPU 414-3 DP.Analog_OutPut_1

Out_V_A Floating-point number 32- bit IEEE 754

S7:[S7 connection_1]MREAL146,1 SETPOINT_Redundance_A Floating-point number 32-

bit IEEE 754

S7:[S7 connection_1]MREAL121,1 ON_OFF_Redundance_A Binary Tag S7:[S7 connection_1]M120.1,1

ON_OFF_V_A Binary Tag S7:[S7 connection_1]Q4.0,1

CHANGE_STATION_A Binary Tag S7:[S7 connection_1]DB5,10.0,1 FAILED_A Binary Tag S7:[S7 connection_1]DB5,9.5,1 GAIN_Redundance_A Floating-point number 32-

bit IEEE 754

S7:[S7 connection_1]MREAL125,1 TI_Redundance_A Signed 32-bit value S7:[S7 connection_1]MTIME129,1 Redundance_A

STATUS_A Binary Tag S7:[S7 connection_1]DB5,9.0,1 OUT_V_B Floating-point number 32-

bit IEEE 754

S7:[S7 connection_2]MREAL146,1 SETPOINT_Redundance_B Floating-point number 32- (adsbygoogle = window.adsbygoogle || []).push({});

bit IEEE 754

S7:[S7 connection_2]MREAL121,1 ON_OFF_Redundance_B Binary Tag S7:[S7 connection_2]M120.1,1

ON_OFF_V_B Binary Tag S7:[S7 connection_2]Q4.0,1

CHANGE_STATION_B Binary Tag S7:[S7 connection_2]DB5,10.0,1 FAILED_B Binary Tag S7:[S7 connection_2]DB5,9.5,1 GAIN_Redundance_B Floating-point number 32-

bit IEEE 754

S7:[S7 connection_2]MREAL125,1 TI_Redundance_B Signed 32-bit value S7:[S7 connection_2]MTIME129,1 Redundance_B

STATUS_B Binary Tag S7:[S7 connection_2]DB5,9.0,1

Bảng 2. Danh sách các nhóm và các item cần tạo

Địa chỉ của các item trên có thể có được từ công cụ OPC Scout nằm trong bộ phần mềm Simatic được cài đặt lên máy khách. Dưới đây ta sẽ mình hoạ cách

Sau khi mở công cụ OPC Scout xuất hiện giao diện như sau:

Hình 62. Giao diện công cụ OPC Scout

Nhấn đúp chuột tại biểu tượng Add Remote Server để chèn máy chủ OPC từ xa cần kết nối tới thông qua OPC Scout.

Hình 63. Khai báo thông tin của máy chủ OPC cần kết nối

Trên ô Nodename ta gõ vào tên của máy chạy phần mềm máy chủ OPC, trong trường hợp ở đây là SIMATIC. Trên ô OPC Servername ta gõ vào tên máy chủ OPC, cụ thể là OPC.SimaticNET và chọn ok.

Nháy đúp tại OPC.SimaticNET xuất hiện New Group, nháy đúp tại biểu tượng này và nhập một tên bất kỳ cho nhóm cần tạo.

Hình 64. Tạo một nhóm

Nháy đúp tại nhóm vừa tạo xuất hiện cửa sổ OPC navigator:

Hình 65. Cửa sổ OPC Navigator

Tại đây ta có thể kết nối tới các biến của chương trình trong Step7 thông qua 2 loại kết nối đó là kết nối tới bảng Symbol hoặc thông qua kết nối S7:

- Với kết nối thông qua bảng symbol: ta có thể lấy địa chỉ của các biến thông qua ký hiệu symbol đã được định nghĩa trong Step 7. Ví dụ ta chọn biến Direction_Motor là biến điều khiển chiều quay của motor, sau đó chọn biểu tượng để thêm vào danh sách các item, nháy đúp chuột tại item vừa thêm ta có thể có được địa chỉ của biến Direction_Motor.

Hình 66. Địa chỉ của biến Direction_Motor

- Truy cập thông qua kết nối S7: với dạng truy cập này ta cần chỉ rõ địa chỉ từng bít của biến cần lấy. Địa chỉ này được quy định trong tài liệu của thiết bị. Ví dụ biến trọng lượng được quy định bởi kiểu số thực floating Point và nằm trong biến M160 ta phải chọn S7 => S7 connection1 => Object => chọn biến M => chọn New definition để

khai báo một biến => trên ô Data Type ta chọn kiểu dữ liệu là kiểu Real, do biến này có kiểu số thực nên trên ô Address ta gõ vào địa chỉ

160, trên ô No.Values ta gõ vào số 1 => ấn Ok, khi đó ta sẽ khai báo

được biến trọng lượng với địa chỉ là S7:[S7 connection_1]MREAL160, 1.

Sau khi xây dựng xong các nhóm và các item chứa các tham số cần tạo ta chuyển sang bước xây dựng giao diện và lập trình điều khiển.

Bước 3: Xây dựng giao diện và lập trình:

Phần mềm WinCC giúp ta có thể dễ dàng tạo ra các giao diện, các nút lệnh và lập trình cho giao diện đó sử dụng cú pháp của ngôn ngữ lập trình VB hoặc C++. Sau đây ta sẽ xây dựng giao diện cho 5 modun chương trình như đã trình bày ở trên.

• Giao diện chính chương trình:

Hình 68. Giao diện chính chương trình (adsbygoogle = window.adsbygoogle || []).push({});

• Modun điều khiển và giám sát tín hiệu số:

Giao diện modun này gồm có 16 nút thuộc dãy DO của DIO 16 bit dùng

để điều khiển các bit đầu ra của DO và giá trị này được đọc lại bởi các bit của DI. Các nút của DO 32 bit dùng đểđiều khiển 32 bit của modun DO. Các giá trị

của DIO 16 bit và DO 32 bit được điều khiển bởi bộ Simatic 300.

Trong Modun này ta sẽ lập trình cho các nút điều khiển bít DO 2 sự kiện On/Off. Khi nút được bấm thì nút sẽ đổi trạng thái và bít DI sẽ thay đổi giá trị

theo trạng thái của nút DO tương ứng.

Để gắn giá trị của Do16_0 (tức là bít 0 của Do) với nút thứ nhất ta ấn phải chuột tại nút đó và chọn Configuration Dialog:

Hình 70. Gắn nút lệnh với giá trị của một Tag cụ thể

Trên ô Tag ta chọn item cần gắn với giá trị của nút lệnh, trường hợp ở đây sẽ là D016_0. Trên ô Update ta chọn tốc độ cập nhật giá trị từ thiết bị. Thông thường ta sẽ chọn là Upon change nghĩa là thay đổi ngay sau khi giá trị thực thay đổi.

Tương tự như vậy để hiển thị giá trị của các bit DI ta cũng ấn phải chuột tại các nhãn hiển thị giá trị của từng bít và chọn Configuration Dialog, trên ô Tag ta chọn item tương ứng với tag đó.

Tiếp theo ta sẽ lập trình cho sự kiện nhấn chuột và bàn phím trên mỗi nút bằng cách ấn phải chuột tại nút chọn Properties => chọn event => ấn phải chuột tại sự kiện Mouse Action (tương tự như vậy với Keyboard)=> chọn ngôn ngữ

lập trình là C.

Hình 72. Chọn ngôn ngữ C để lập trình cho sự kiện nhấn chuột lên nút lệnh

Tiếp theo là lập trình cho nút lệnh này để thay đổi giá trị của bít Do16_0 như sau:

Hình 73. Giao diện lập trình cho nút lệnh

Giá trị của biến DO16_0 được phủ định giá trị khi nhấn nút lệnh tương

ứng. Tuy nhiên còn một điểm nữa ta cần lưu ý đó là để cho giá trị Text trên các nút sẽ tự động chuyển thành On hay Off mỗi khi người dùng bấm nút lệnh. Ta phải thêm vào một trường giá trị trên giao diện, gắn trường này với cùng một item của nút cần điều khiển.

Hình 74. Khai báo tham số cho một trường giá trị tương ứng với nút lệnh DO16_0

Ví dụ nút điều khiển bít Do16_0 thì trường tương ứng cũng gắn với Item của bít đó và lập trình cho trường này như sau:

Hình 75. Lập trình cho trường giá trịđể thay đổi dòng chữ ON/OFF của nút lệnh tương ứng

Trong dòng lệnh trên Digital_300.Pdl là file giao diện của Modun điều khiển giám sát tín hiệu số, Button1 là nút lệnh điều khiển bít Do16_0, hàm SetText có tác dụng đặt lại giá trị text cho nút lệnh.

Với các giao diện tiếp theo ta cũng thực hiện các bước tương tự như ở

giao diện của Modun điều khiển giám sát tín hiệu số, vì vậy ta sẽ không đi vào chi tiết từng giao diện một mà chỉ giới thiệu qua về chúng.

• Modun điều khiển và giám sát tín hiệu tương tự:

Hình 76. Giao diện chương trình điều khiển và giám sát tín hiệu tương tự

Giá trị đầu ra Analog Output được điều khiển bởi người dùng và qui đổi ra 4 giá trịđầu vào tương tự là Analog Input

• Modun giám sát nhiệt độ và khối lượng:

Hình 77. Giao diện chương trình giám sát nhiệt độ và khối lượng

Modun này đọc 2 giá trị là nhiệt độ trên biến Hart_temp và khối lượng trên biến Weight. (adsbygoogle = window.adsbygoogle || []).push({});

• Modun điều khiển động cơ 3 pha:

Hình 78. Điều khiển động cơ 3 pha quay theo chiều dương và chiều âm

Chương trình này điều khiển tốc độ của motor dựa vào biến Motor_Sp, và

đo tốc độ hiện thời của motor qua biến Motor_Speed. Chương trình đọc chiều quay của Motor qua biến Direction_motor, đồng thời chương trình cũng đo các thông số của dòng điện cung cấp cho motor thông qua bộ Simeas.

• Modun hệ thống điều khiển quá trình:

Hình 80. Mực nước khi mới bật hệ thống và sau khi chạy ổn định được duy trì ở

mức 4cm

Hệ thống điều khiển quá trình có nhiệm vụ điều khiển van và bơm nước

đểđảm bảo mực nước trong bể chứa luôn duy trì ở một mức đã đặt được cho bởi tham số SetPoint. Ví dụ hình trên ta thấy tham số Setpoint được đặt giá trị là 4.0 và sau khi bấm nút bật thì mực nước trong bình sau một khoảng thời gian sẽ duy trì ổn định ở mức 4cm. Quá trình này được thực hiện trên cả 2 hệ thống Simatic 400A và Simatic 400B theo cơ chế dự phòng nóng. Hệ thống được tổ chức để có thể lựa chọn trạm chủ bằng tay. Ví dụ khi chọn nút Trạm B hoạt động của hệ

thống sẽ chuyển từ trạm A sang trạm B nếu trạm A hiện tại đang điều khiển và ngược lại. Khả năng hoạt động dự phòng nóng được kiểm chứng như sau: giả

định Simatic400-A là trạm chủ, Simatic400-B là trạm dự phòng. Nếu ta đột ngột làm dừng hoạt động của trạm chủ (ví dụ: vặn nút dừng hoạt động từ Run →

Stop, hoặc cắt nguồn điện) thì trạm Simatic400-B thực hiện điều khiển thay thế

KẾT LUẬN

Việc ứng dụng công nghệ OPC trong hệ thống giám sát và điều khiển từ

xa hệ thống có dự phòng nóng có ý nghĩa quan trọng trong môi trường sản xuất công nghiệp. Nó tạo ra tính thống nhất của các hệ thống công nghiệp phức tạp gồm các thiết bị đa hãng sản xuất và phân chia ở nhiều cấp độ quản lý khác nhau. Nhờ vậy việc tích hợp và mở rộng hệ thống trở nên dễ dàng hơn, giảm giá thành lắp đặt.

Nội dung của luận văn được chia làm ba phần, phần đầu trình bày tổng quan về công nghệ OPC và kiến trúc mạng điều khiển, phần 2 giới thiệu về hệ

thống điều khiển và giám sát có dự phòng nóng và phần cuối cùng trình bày cụ

Một phần của tài liệu Xây dựng hệ thống thu nhập dữ liệu, giám sát và điều khiển qua mạng trên cơ sở công nghệ OPC (Trang 54)