You are on page 1of 151

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ PHẦN MỀM

WONDERWARE
I. Giới thiệu chung về Wonderware:
Wonderware là công ty hàng đầu thế giới của Hoa Kỳ chuyên cung cấp
phần mềm công nghiệp cho các nhà máy, hệ thống điều khiển, tự động. Được
thành lập từ năm 1986, đến nay đã có hơn 100.000 nhà máy lớn trên toàn cầu
sử dụng Wonderware để giám sát, điều khiển quản lý nhằm nâng cao khả năng
sản xuất và cạnh tranh cho các doanh nghiệp. Các sản phẩm của Wonderware
được phát triển trên nền tảng của hệ điều hành Microsoft, và được Microsoft
chọn làm đối tác đi tiên phong trong việc đưa giao diện người máy và cơ sở dữ
liệu xuống sàn nhà máy. Thị phần của Wonderware chiếm 32% trên toàn cầu
về giao diện người máy HMI (Human Machine Interface), 28% về cơ sở dữ
liệu nhà máy (Historian Database). Các sản phẩm của Wonderware được thiết
kế trên dựa trên kiến trúc mở, module hoá, có khả năng ổn định và tương thích
cao với phần cứng của các hãng, bộ sản phẩm bao gồm:

 InTouch :Thiết kế Giao diện Người-Máy HMI


 I/O Server :Module trung gian kết nối với phần cứng của các
hãng
 IAS :Nền tảng để thiết kế hệ thống tương tác với các
phần mềm khác
 Historian :Thu thập dữ liệu từ sàn nhà máy trên nền MS SQL
 ActiveFactory :Tạo báo cáo, bảng biều trên bộ MS Office
 Information Server:Báo cáo và hiển thị trên website
 InBatch :Cho các ứng dụng xử lý theo mẻ
 InControl :Ứng dụng cho các điều khiển thuật toán, logic mờ
 QI Analyst :Quản lý chất lượng sản phẩm
 DT Analyst :Giám sát, quản lý tình trạng dừng của nhà máy
 MEM :Quản lý tài nguyên, thông tin sản xuất của nhà máy
 SCADAlarm :Quản lý báo động hệ thống

1. Giới thiệu Intouch( Wonderware):


Phần mềm Intouch được biết tới như một phần mềm chuyên dụng trong lĩnh
vực thiết kế và điều khiển trên nền tảng SCADA. Trên thực tế, Intouch hiện
đang được sử dụng trong 1/3 các nhà máy công nghiệp trên thế giới, và được
biết tới hầu như ở tất cả các nước và các ngành công nghiệp. Có được sự ứng
dụng rộng rãi như trên là do Intouch có những đặc điểm và tính năng ưu việt
sau:
 Khả năng đồ họa với độ phân giải cao.
 Môi trường phát triển ứng dụng có xu hướng tạo điều kiện cho nhiều
người sử dụng, góp phần nâng cao năng suất cũng như kỹ thuật cộng tác
trong công việc.
 Các ký hiệu đồ họa mang tính độc lập mạnh mẽ với việc viết code và
kết nối phần cứng được tích hợp, có chức năng trong việc duy trì hoạt động
kỹ thuật thông qua tái sử dụng và tiêu chuẩn hóa.
 Thao tác linh hoạt với tính năng viết lệnh và đồ họa hoàn hảo cho phép
các kỹ sư trong quá trình vận hành và giám sát có thể nhanh chóng thay đổi
chức năng ứng dụng.
 Môi trường ứng dụng của Intouch cho phép quản lý tập trung đồng thời
triển khai từ xa ứng dụng HMI tại các trạm vận hành.
 Bên cạnh đó, Intouch còn có tính năng xử lý và giám sát dữ liệu bên
trong.
 Quan trọng nhất đó là các đặc tính vận hành, cung cấp, giám sát rõ
ràng, chính xác, có khả năng mở rộng dữ liệu thông tin.
Có thể nói bằng việc ứng dụng Intouch, các kỹ sư thiết kế cũng như các kỹ sư
vận hành sẽ hoạt động năng suất hơn và có điều kiện phát huy tính sáng tạo
trong việc thiết kế cũng như lựa chọn hướng vận hành sao cho tiết kiệm, hợp
lý. Một ứng dụng SCADA xây dựng trên Intouch sẽ đáp ứng tốt các tiêu chuẩn
cần thiết về độ an toàn, tin cậy và góp phần tăng cường khả năng bảo trì cho
toàn hệ thống.
Không chỉ có vậy, một hệ thống công nghiệp hay bất kỳ dây chuyền công
nghiệp nào cũng không duy trì hình thức và cơ cấu hoạt động liên tục. Với
những yêu cầu đặt ra về ứng dụng công nghệ mới, giảm giá thành sản phẩm,
thay đổi mẫu mã… Thì vấn đề tất yếu là phải phát triển ứng dụng. Intouch
giúp giảm chi phí khi phải tiến hành quá trình này vì khi chu trình hoạt động
thay đổi, kỹ thuật viên hoàn toàn có khả năng thể hiện sự thay đổi này trên
Intouch mà không cần thay đổi phần mềm hay tốn thêm bất kỳ chi phí nào
khác.
2. Cài đặt Intouch
Các bước cài đặt Intouch:
Đầu tiên ta vào thư mục chứa chương trình Intouch

Double click vào biểu tượng trên thì xuất cửa sổ cài đặt sau:

Ta click next để tiếp tục quá trình cài đặt cửa sổ sau xuất
Ta chọn như hình sau đo click next

Ta đặt user , pass tùy ý sau đó click next


Ta click vào Intouch Supplementary chọn như hình sau để chèn thư viện
vào Intouch sau đó click next
Sau đó click next

Cửa sổ xuất hiện ta chọn như hình trên sau đó click Finish
Quá trình cài đặt Intouch hoàn tất
Intouch chúng ta đang cài là bản Demo. Nếu có key thì ta sẽ update key
như sau:
Start/ Programs/ Wonderware/ Common/ License Utility xuất hiện cửa sổ
sau:
Ta click file chọn intall license file sau đó dẫn đến nơi chứa file key sau đó
chọn ok.
3. Các thành phần của Intouch:
Intouch gồm 3 chương trình chính:
Intouch Application Manager là nơi chứa các ứng dụng mà chúng ta đã tạo
ra và cũng là nơi để đặt cấu hình cho WindowViewer và WindowMaker. Mở
các tiện ích DBDump databases và DBLoad databases.
WindowMaker là môi trường phát triển các ứng dụng của Intouch. Đây là nơi
người dùng thiết kế giao diện mong muốn, liên kết các hình ảnh ứng dụng với
các thiết bị ngoại vi và các ứng dụng khác của Window.
WindowViewer là môi trường chạy các ứng dụng mà người dùng tạo ra
trong WindowMaker.
3.1 Intouch Application Manager:
Đầu tiên khởi động Intouch :
Vào Start/ Programs/ Wonderware/ Intouch :
Màn hình khởi động Intouch application manager hiện lên:

Trong cửa sổ Intouch - Application Manager đã có sẵn các ứng dụng đã được
tạo trước đó.
3.2 WindowMaker:
Để thiết kế được giao diện ta phải vào của sổ làm việc Window Maker:
Click chuột phải vào tên ứng dụng cần thiết kế, chọn WindownMaker hoặc
double click chuột trái vào ứng dụng vừa tạo ra, để vào môi trường thiết kế
WindowMaker:

Vì đây là bản Demo nên cửa sổ sau xuất hiện:

Ta chọn Ok

Sau đó chọn Ignore


Cửa sổ Window Maker hiện ra:
3.3 WindowViewer:
Để xem quá trình hoạt động các ứng dụng ta vừa tạo ra ta vào WindowViewer
bằng cách Click phải chuột vào ứng dụng chọn WindowViewer hoặc chọn
Runtime trong WindowMaker:

Hoặc
Cửa sổ WindowViewer xuất hiện:

Để thoát WindowViewer ta chọn biểu tượng Development! trong


WindowViewer
CHƯƠNG 2: THIẾT KẾ GIAO DIỆN VÀ THIẾT LẬP THUỘC TÍNH
CHO ĐỐI TƯỢNG
I. Môi trường thiết kế HMI của Intouch:
1. Các cửa sổ trong WindowMaker:

Cửa sổ Windows là nơi chứa các trang giao diện thiết kế.

Cửa sổ Tools là nơi chứa các thiết lập thuộc tính, tạo biến cho đối tượng

Cửa sổ Scripts là nơi để tạo các ứng dụng để viết chương trình Scripts
Cửa sổ Windows & Scripts là nơi để chứa các trang giao diện và các Scripts sử
dụng trong ứng dụng.

Page2 là môi trường thiết kế giao diện.


2. Các công cụ chính của WindowMarker:
2.1. Thanh Drawing:

2.1.1 Line: Là công cụ để vẽ đoạn thẳng. Có 3 loại :

Line: dùng để tạo một đoạn thẳng theo phương bất kì.

H/V Line: dùng để tạo các đoạn thẳng theo phương ngang hoặc
phương đứng.

PolyLine: dùng để tạo ra các đường ziczac( nếu muốn kết thúc đường vẽ
thì double click chuột.
2.1.2 Fill shape: Là công cụ để tạo các hình ảnh 2 chiều, có các loại như sau:

Rectangle: dùng để tạo các hình chữ nhật.

Round Rectangle: dùng để tạo các hình chữ nhật có đỉnh tròn.

Elipse: dùng để tạo các hình elipse.


2.1.3 Polygon, Text, Bitmap, Button:

Polygon: dùng để tạo đa giác bất kì( kết thúc bằng cách double click
chuột).

Text: Là công cụ dùng để tạo chuỗi ký tự trên 1 dòng, công cụ này


thường được dùng để tạo các chú thích.

Bitmap: là công cụ để chèn hình ảnh vào ứng dụng


Cách chèn hình:
Click vào biểu tượng Bitmap rồi rê thành hình chữ nhật trên form, click chuột
phải vào đối tượng và chọn Import Image. Sau đó, chọn hình ảnh muốn chèn
vào khoảng trống.
Chúng ta có thể sửa chữa hình ảnh thông qua Edit Bitmap hoặc dán 1 hình bất
kỳ bằng cách chọn Paste Bitmap

Button:
Là công cụ tạo nút nhấn 3 chiều. Khi vẽ đối tượng Button vào trong
ứng dụng, trên Button sẽ được mặc định chữ Text, để thay đổi ta làm như sau:
Right click / Substitute / Substitute Strings

Hộp thoại sau hiện ra:

Nhập tên cần hiển thị vào ô text, sau đó nhấp OK để hoàn tất
2.1.4 Trends: Là công cụ dùng để biểu diễn giá trị của tag theo thời
gian dưới dạng 1 đồ thị. Có 2 loại Trends: Real-times Trend và Historical
Trend:

Real times Trend: là công cụ dùng để biểu diễn giá trị theo thời gian hiện
tại của tag.
Historical Trend: là công cụ dùng để biểu diễn giá trị lưu trữ dữ liệu trong
quá khứ của Tag.
2.2 Thanh Wizar:

Là những đối tượng hình ảnh có sẵn trong thư viện. Khi cần sử dụng, chỉ cần
chọn và dán lên form.
Cách chọn 1 đối tượng trong Wizard:
Click vào biểu tượng Wizard Selection trên thanh công cụ. Cửa sổ
Wizard Selection sẽ được hiện ra như sau:
Cửa sổ bên trái chứa các tên thư mục, cửa sổ bên phải là các đối tượng có
trong thư mục được chọn.
Khi chọn đối tượng cần sử dụng, ta click vào OK. Muốn vẽ đối tượng được
chọn lên form, ta click giữ chuột và rê chuột.
2.3 Thanh Arrange:
Các công cụ xử lý ảnh

Align Left: dùng để canh lề trái cho các đối tượng được chọn. Khi nhấn
vào biểu tượng này thì mép bên trái của các đối tượng được chọn sẽ trùng
nhau.

Align Center: dùng để căn chính giữa cho các đối tượng được chọn.

Align Right: dùng để canh lề phải cho đối tượng được chọn.

Align Top: dùng để canh trên cho các đối tượng.

Align Middle: dùng để canh chính giữa theo phương ngang cho các đối
tượng được chọn.

Align Bottle: dùng để canh dưới cho các đối tượng được chọn.

Align centerpoints: dùng để canh điểm giữa cho các đối tượng được
chọn.

Send to back: công cụ này cho phép đối tượng được chọn nằm dưới các
đối tượng được chọn.

Bring to front: công cụ này cho phép đối tượng được chọn nằm trên tất
cả các đối tượng được chọn.

Space Horizontal: giãn đều các đối tượng được chọn theo phương ngang.

Space Vertical: giãn đều các đối tượng được chọn theo phương thẳng
đứng.

Make Symbol: liên kết các đối tượng thành 1 đối tượng đơn giản.
Break symbol: dùng để tách các đối tượng được liên kết bằng Make
Symbol thành các đối tượng thành phần.

Make Cell: dùng liên kết các đối tượng được chọn thành đối tượng phức
tạp.

Break Cell: dùng để tách các đối tượng được liên kết bằng Make Cell
thành các đối tượng thành phần.

Rotate Clockwise: dùng để quay đối tượng 1 góc 90 theo kim đồng hồ.

Rotate Counter Clockwise: dùng để quay đối tượng ngược chiều kim
đồng hồ 1 góc 900.

Flip Horizontal: dùng để lật đối tượng theo chiều dọc.

Flip Vertical: dùng để lật đối tượng theo chiều ngang.


3. Thiết kế giao diện trong WindowMaker:
Các tạo một dự án mới:
Để tạo một ứng dụng mới ta phải vào Intouch Application Manager:
Đầutiên khởi động Intouch: nhấp chuột vào
Start/Program/Wonderware/Intouch
Màn hình khởi động Intouch application manager hiện lên:

Trong cửa sổ Intouch - Application Manager đã có sẵn các ứng dụng đã


được tạo trước đó. Để tạo ra ứng dụng mới ta vào menu File, chọn New hoặc
click vào biểu tượng New trên thanh công cụ. Giao diện Create New
Application thứ nhất sẽ hiện ra:

Nhập đường dẫn đến thư mục chứa ứng dụng vào ô Text, hoặc nhấn nút
Browse để chọn đường dẫn. Tên thư mục chứa ứng dụng có thể mặc định hoặc
thay đổi theo ý muốn.
Click Next, giao diện Creat New Application thứ hai hiện ra:
Đặt tên cho thư mục chứa ứng dụng, click Next giao diện Creat New
Application thứ ba hiện ra:

Nhập tên và mô tả về ứng dụng trong 2 ô text tương ứng. Sau đó, click
vào finish để hoàn tất. Khi đó ứng dụng mới sẽ được tạo ra trong giao diện
Intouch Application Manager.
Để mở một ứng dụng sẵn có của Intouch:
Ta click vào Tool / Find applications, hoặc nhấp vào biểu tượng ống
nhòm, sẽ hiện ra cửa sổ Browse for Folder:
Chỉ đường dẫn tới ứng dụng, sau đó nhấp OK.
Tạo 1 dự án với tên như cửa sổ sau:

Để thiết kế được giao diện ta phải vào WindowMaker:


Click chuột phải vào tên ứng dụng vừa tạo ra, chọn WindownMaker hoặc
double click chuột trái vào ứng dụng vừa tạo ra, để vào môi trường thiết kế
WindowMaker:
Ta được của sổ WindowMaker như sau:

Để thiết kế giao diện ta phải tạo một ứng dụng Form tại đó ta có thể vẽ các đối
tượng, hình ảnh và viết lệnh điều khiển cho các đối tượng .
Ta có 3 cách để tạo 1 Form mới:
Vào menu File, chọn NewWindow.
Click vào biểu tượng New trên thanh công cụ.
Click phải chuột trên mục Window trong cửa sổ Application Manager và chọn
New.
Hộp thoại hiện ra và ta đặt ứng dụng như sau:
Name: nhập tên cửa sổ, tên này sẽ xuất hiện trên thanh ghi tiêu đề của cửa sổ
được tạo.
Comment: ô này dùng để nhập 1 số ghi chú cho cửa sổ, ta có thể bỏ qua.
Window Color: ô này để tạo màu nền của cửa sổ.
Window Type: Có 3 option trong mục:
Replace: ta chọn thuộc tính này cho form khi muốn nếu form này xuất hiện thì
tất cả các form khác sẽ biến mất.
Overlay: chọn thuộc tính này cho phép khi form xuất hiện thì nó sẽ luôn nằm
đè lên các form khác.
Popup: thuộc tính này tương tự overlay. Nghĩa là khi form này xuất hiện thì
nó sẽ luôn nằm đè lên các form khác. Điểm khác ở chỗ, form Overlay không
cho phép form khác nằm đè lên nó khi fom khác được click chọn, còn form
Popup thì cho phép.
Dimensions: Các thuộc tính trong mục này dùng để định dạng kích thước và
vị trí
của form, ta có thể xác định các thuộc tính này ngay từ đầu hoặc để mặc định
và thay đổi sau quá trình thiết kế( muốn thay đổi được trong quá trình thiết kế,
ta phải chọn thuộc tính Size Controls.
X Location: đây là khoảng cách giữa mép trái của màn hình và mép phải của
form
Y Location: đây là khoảng cách giữa mép phải của màn hình và mép
phải của form.
Windown Height: chiều cao của form.
Windown Width: chiều rộng của form.
Title Bar: chọn mục này nếu muốn form có thanh ghi tiêu đề.
Size controls: chọn mục này nếu muốn kích thước của form có thể thay đổi
trong quá trình thiết kế.
Frame Style: các option trong mục này chỉ được phép chọn khi ta không chọn
Title Bar và Size Control.
Single: form có 1 đường viền đơn.
Double: form có 1 đường viền kép.
None: form không có đường viền.
Sau khi xác định xong các thuộc tính, ta click vào OK, quá trình tạo form đã
hoàn tất. Một ứng dụng có thể có 1 hay nhiều form, nếu muốn tạo thêm các
form khác, ta cũng làm theo các bước như trên.
Sau khi đặt xong click Ok ta có cửa sổ sau:

II.Các biến chương trình (Tagname Dictionary ):


1. Định nghĩa biến( Tag):
Tag(biến) là cơ sở dữ liệu của việc thực thi chương trình ứng dụng. Việc điều
khiển hoạt động của các đối tượng, thu thập dữ liệu từ PLC đều thông qua các
Tag.
2. Phân loại Tag:
2.1 Tag loại Memory( biến nội):
Đây là loại Tag nhớ trong Intouch. Loại Tag này dùng để tạo các hằng số hay
các biến dùng cho điều khiển các đối tượng.
Có 4 kiểu Tag loại Memory:
Memory Discrete: Tag kiểu này chỉ có 2 giá trị là 0 hoặc 1(False hoặc True).
Memory Integer: Tag kiểu số nguyên có giá trị từ -231 đến ( 231 – 1).
Memory Real: Tag kiểu số thực, có giá trị từ - 3.448 đến (3.448 -1).
Memory Message: Tag kiểu chuỗi, có chiều dài tối đa 131 ký tự.
2.2Tag loại I/O( biến ngoại):
Tag loại này được dùng để thu thập dữ liệu hay xuất tín hiệu đến thiết bị ngoại
vi( như các relay, timer, counter… trong PLC) thông qua I/O driver. Muốn sử
dụng loại Tag loại này, ta phải định dạng I/O driver và định địa chỉ cho Tag.
Tương tự loại Memory, Tag loại I/O cũng có 4 kiểu:
I/O Discrete: có 2 giá trị là 1 và 0.
I/O Interger: kiểu số nguyên.
I/O Real: kiểu số thực.
I/O Message: kiểu chuỗi.
1.3Các loại Tag khác:
Group var:
Loại tag này được dùng để tạo các cửa sổ cảnh báo.
Histrend:
Loại tag này chỉ được sử dụng cho đối tượng Historical Trend. Được dùng
để lưu trữ dữ liệu trong quá khứ và được theo dõi thông qua đối tương
Historical trend.
Tag ID:
Loại tag này chỉ được sử dụng cho đối tượng Historical Trend. Nó được
dùng để gọi thông tin nào đó được theo dõi trong Historical trend.
Indiscrete:
Loại Tag này được dùng để truy xuất đến 1 Tag khác. Loại Tag này có 3 kiểu:
Indirect Discrete: chỉ có 2 giá trị là 1 hoặc 0.
Indirect Analog: kiểu số thực.
Indirect Message: kiểu chuỗi.
Để truy xuất dữ liệu của 1 Tag khác, ta dùng cú pháp:
Tên Tag Indirect.name = “Tên Tag cần truy xuất”;
Vd: ta định nghĩa Data là Tag kiểu Indirect Analog và dữ liệu là Tag kiểu
Memory Real ( hay I/O Real). Khi đó lênh:
Data.name=”dulieu”;
Có nghĩa là Tag Data sẽ truy xuất dữ liệu của Tag dulieu, và giá trị của Data=
dulieu. Ưu điểm của Tag loại này là có thể truy xuất đến giá trị của nhiều tag
khác chỉ bằng các lệnh đơn giản.
Vd: ta định nghĩa 10 Tag Dulieu1, Dulieu2…Dulieu10 kiểu số thực, Num là
Tag kiểu số nguyên. Khi đó, lệnh:
Data.name=”Dulieu”+text(num);
Nghĩa là Data sẽ truy xuất giá trị của Dulieu1 nếu Num=1, Dulieu2 nếu
Num=2,…
Để tạo 1 tag mới tại cửa sổ Window Maker Vào menu Special / Tagname
Dictionary hoặc click vào mục Tagname Dictionary trong khung Tool hay
rê chuột vào cửa sổ Tool sau đó double click vào mục Tagname Dictionary .
Cửa sổ các loại tag:
Màn hình sau hiện ra:

Click vào New để tạo tag mới:

Click vào Tagname để đặt tên, click vào nút Type để chọn kiểu tag:
Màn hình sau hiện ra:

Click vào New để tạo tag mới:


Click vào Tagname để đặt tên, click vào nút Type để chọn kiểu tag:

Chọn kiểu cho tag, rồi nhấn OK để về cửa sổ định nghĩa tag.
III. Liên kết các đối tượng( Animation Links):
1.Cách tạo các liên kết:
Để các đối tượng trên giao diện thể hiện được quá trình hoạt động bên
ngoài ta phải tạo mối liên kết giữa các đối tượng đó lại với nhau.
Muốn định dạng các đặc tính cho đối tượng, double click vào đối tượng,
hộp thoại sau hiện ra:

Muốn gán 1 đặc tính nào cho đối tượng, ta click và đặc tính đó. Một đối tượng
có thể có nhiều đặc tính.
Các đặc tính có trong hộp thoại:
1.1. User Input:

Có 3 đặc tính có thể gán cho đối tượng:


Discrete: cho phép đối tượng trở thành nơi nhập dữ liệu cho 1 tag kiểu
Discrete.
Analog: cho phép đối tượng trở thành nơi nhập dữ liệu cho 1 tag kiểu số thực.
String: cho phép đối tượng trở thành nơi nhập dữ liệu cho1 tag kiểu chuỗi.
Ví dụ: Muốn đối tượng được chọn trở thành nơi nhập dữ liệu cho tag l kiểu
analog, click vào nút Analog / Next link:

Tại ô Tagname nhập tên tag cần liên kết, nhập tầm giá trị trong ô Min Value,
Max Value, sau đó click OK để hoàn tất.
1.2.Slider:

Các đặc tính trong mục này cho phép đối tượng dịch chuyển theo phương nằm
ngang hoặc thẳng đứng.
Vertical: dịch chuyển đối tượng theo phương thẳng đứng.
Horizontal: dịch chuyển đối tượng theo phương nằm ngang.
Vị trí của đối tượng được dịch chuyển thông qua tag đã liên kết với nó.
Ví dụ: để gán đăc tính Vertical cho đối tượng, ta làm như sau:
Click vào ô Vertical, hộp thoại sau sẽ xuất hiện:
Trong ô tag name, ta nhập tên tag điều khiển đối tượng( tag kiểu số).
Trong 2 ô At Top, At Bottom( mục Value) ta nhập tầm giá trị của tag.
Trong 2 ô Up, Down( mục Vertical Movement) ta nhập vị trí di động của đối
tượng, 0 là vị trị ban đầu của đối tượng. Khi đó, nếu giá trị của tag thay đổi từ
At Top, At Bottom thì đối tượng di động từ Up đến Down theo phương thẳng
đứng, và ngược lại.
Trong mục Reference Location: ta chọn vị trí ban đầu cho đối tượng khi
chương trình bắt đàu thực thi Top, Middle, Bottom( trên, giữa, dưới)
Nhập xong, click OK để hoàn tất.
1.3.Touch Pushbuttons:

Mục này có 4 thuộc tính, khi gán 1 trong 4 thuộc tính này, đối tượng sẽ
trở thành 1 nút nhấn, khi chương trình thực thi, ta click vào đối tượng, thì
thuộc tính được gán với đối tượng sẽ được thực thi.
Chức năng của các thuộc tính như sau:
Discrete Value: đặc tính này cho phép viết giá trị vào tag( kiểu Discrete) khi
click vào đối tượng. Khi chọn đặc tính này, hộp thoại sau sẽ xuất hiện:
Trong ô Tagname nhập tên của tag muốn liên kết, tag phải thuộc kiểu
Discrete.
Chọn chức năng của đối tượng trong mục Action:
Direct: giá trị của tag bằng 1 khi click chuột.
Reverse: giá trị của tag bằng 0 khi click chuột.
Toggle: đảo giá trị của đối tượng sau mỗi lần click chuột.
Reset: click vào đối tượng thì giá trị của tag bằng 0;
Set: click vào đối tượng thì giá trị của tag bằng 1;
Thiết lập các thuộc tính xong, click OK.
Action: Thuộc tính này cho phép thực thi 1 đoạn chương trình khi click vào
đối tượng. Chọn thuộc tính này thì cửa sổ viết lệnh xuất hiện:
Phần chính là 1 ô text để viết lệnh, các nút bên dưới là các nút tắt, các nút bên
mục Functions là các hàm, ta sử dụng các hàm này khi viết chương trình.
Trong ô Condition Type ta chọn biến cố khi thực thi lệnh. Có 13 biến cố như
sau:
On Left Click/Key Down: thực thi đoạn lệnh 1 lần khi click chuột
trái vào đối tượng.
While Left Click/Key Down: thực thi đoạn lệnh sau mỗi chu kỳ. Khi
chọn biến cố này bên cạnh hộp thoại Condition Type sẽ xuất hiện hộp thoại
Every cho phép nhập chu kỳ thực hiện lệnh.
On Left/Key Up: thực thi đoạn lệnh 1 lần khi nhả chuột.
On Left Double Click: thực thi đoạn lệnh 1 lần khi double click chuột trái.
On Right Click: thực thi đoạn lệnh 1 lần khi click chuột phải.
While Right Down: thực thi đoạn lệnh sau mỗi chu kỳ khi click chuột phải.
Khi chọn biến cố này bên cạnh hộp thoại Condition Type sẽ xuất hiện hộp
thoại Every cho phép nhập chu kỳ thực hiện lệnh.
On Right Up: thực thi đoạn lệnh 1 lần khi nhả chuột phải.
On Right Double Click: thực thi đoạn lệnh 1 lần khi double click chuột phải.
On Center Click: thực thi đoạn lệnh 1 lần khi click nút giữa.
While Center Down: thực thi đoạn lệnh sau mỗi chu kỳ khi click nút giữa.
Khi chọn biến cố này bên cạnh hộp thoại Condition Type sẽ xuất hiện hộp
thoại Every cho phép nhập chu kỳ thực hiện lệnh.
ON Center Up: thực thi đoạn lệnh 1 lần khi nhả nút giữa.
On Center Double Click: thực thi đoạn lệnh 1 lần khi double click nút giữa.
Show Window: Thuộc tính này cho phép hiển thị form khi click vào đối
tượng. Hộp thoại của thuộc tính như sau:

Hộp thoại chứa các form có trong chương trình. Chọn các form mong muốn
rồi nhấp OK, khi chạy chương trình, click vào đối tượng form được chọn sẽ
hiện ra.
Hide Window
Cho phép đóng 1 form khi click vào đối tượng. Việc định dạng tương tự
như Show Window.
1.4.Line Color

Các đặc tính trong mục này cho phép thay đổi màu viền của đối tượng, ta chỉ
sử dụng được mục này khi đối tượng được chọn là loại Fill Shape.
Discrete: đặc tính này cho phép thay đổi màu viền cho đối tượng với 2 mức
màu được quy định:

Trong ô Expression, ta nhập biểu thức muốn liên kết với đối tượng. Biểu
thức này có thể là 1 tag hay 1 hàm của nhiều tag. Kết quả của biểu thức sẽ
được quy về 2 giá trị là 0 hoặc 1. Nếu kết quả biểu thức khác 0 thì giá trị sẽ
được quy về 1, còn nếu bằng 0 thì kết quả sẽ quy về 0. Với mỗi mức giá trị,
đối tượng sẽ có 1 màu viền được chọn trong mục Colors.
Analog: tương tự như đặc tính Discrete, đặc tính Analog cũng cho phép
thay đổi màu viền của đối tượng nhưng với nhiều màu hơn. Hộp thoại định
dạng như sau:

Hình 2.27

Trong ô Expression: nhập biểu thức.


Trong mục BreakPoints: nhập các điểm giá trị thay đổi màu viền. Khi giá trị
biểu thức vượt qua các điểm giá trị này thì màu viền của đối tượng sẽ thay đổi.
Trong mục Color: nhập màu mong muốn ứng với các giá trị của biểu thức.
Các khoảng giá trị này được phân chia bởi các điểm giá trị quy định trong mục
BreakPoints.
Discrete Alarm: đặc tính này tượng tự như đặc tính Discrete( có thể thay đổi
2 màu viền cho đối tượng). Tuy nhiên, màu viền của đối tượng không phụ
thuộc vào giá trị của tag liên kết mà phụ thuộc vào trạng thái cảnh báo của tag.
Việc định dạng trong mục Discrete Alarm cũng tương tự như trong mục
Discrete.
Analog Alarm: tương tự đặc tính Analog nhưng màu viền không thay đổi
theo khoảng giá trị mà thay đổi theo trạng thái cảnh báo của tag liên kết. Việc
định dạng tương tự như trong mục Analog.
1.5.Fill Color:

Các đặc tính trong mục này cho phép thay đổi màu nền của các đối tượng loại
Fill Shape. Chức năng và việc định dạng các thuộc tính tương tự như trong
mục Line Color.
1.6. Text Color:

Các đặc tính trong mục này cho phép thay đổi màu chữ đối tượng loại Text.
Chức năng và việc định dạng các đặc tính tương tự như trong mục Line Color.
1.7.Object Size:
Mục này có 2 đặc tính là Height và Width cho phép thay đổi kích thước của
đối tượng thep chiều dọc và ngang. Hộp thoại định dạng cho đặc tính Height:

Trong ô Expression, ta nhập biểu thức liên kết với đối tượng. Biểu thức có
thể là 1 tag hay 1 hàm của nhiều tag.
Trong ô Value at Max Height và Value at Min Height ta nhập khoảng
giá trị của kết quả trong biểu thức.
Trong ô Max % Height và Min % Height, ta nhập khoảng thay đổi của
kích thước đối tượng( tính theo đơn vị phần trăm của kích thước ban đầu)
Khi kết quả biểu thức thức thay đổi từ Value at Min Height đến Value at
Max Height thì kích thước của đối tượng sẽ thay đổi( theo chiều dọc) từ Min
% Height đến Max % Height ( giá trị 100% tương ứng với kích thước ban
đầu của đối tượng).
Trong mục Anchor, có 3 option là Top, Middle, Bottle dùng để quy định
kích thước của đối tượng sẽ thay đổi tính từ mép trên, ở giữa hay mép dưới.
Định dạng cho đặc tính Width cũng tương tự như đặc tính Height.
1.8.Location:

Các đặc tính trong mục này cho phép di chuyển đối tượng theo chiều dọc
và chiều ngang tương tự như mục Sliders. Nhưng có 1 số điểm khác:
Các đặc tính trong mục Sliders cho phép ta di chuyển đối tượng( khi chạy
chương trình) theo 2 cách:
1. Thay đổi giá trị của tag liên kết với đối tượng.
2. Dùng chuột rê đối tương.
Các đặc tính trong mục Location chỉ cho phép ta di chuyển đối tượng
bằng cách thay đổi giá trị của tag liên kết với đối tượng, ta không thể dùng
chuột rê đối tượng.
1.9. Percent Fill:

Đặc tính trong mục này cho phép làm đầy đối tượng theo chiều dọc và
chiều ngang. Trong đó:
Vertical: làm đầy đối tượng theo chiều dọc.
Horizontal: làm đầy đối tượng theo chiều ngang.
1.10.Value Display:

Các đặc tính trong mục này cho phép biến đối tượng thành nơi hiển thị nội
dung, giá trị của 1 tag. Ta chỉ sử dụng được các đặc tính trong mục này khi đối
tượng thuộc loại Text. Việc định dạng các đặc tính tương tự như mục User
Inputs.
1.11.Miscellaneous:

Mục này chứa các đặc tính sau:


Visibility: cho phép ẩn hoặc hiện đối tượng.
Expression: nhập biểu thức. Kết quả biểu thức được quy về mức 1 nếu khác 0
và mức 0 nếu bằng 0.
Visible State: chọn trạng thái hiển thị đối tượng.
On: hiển thị đối tượng nếu kết quả biểu thức ở mức 1.
Off: hiển thị đối tượng nếu kết quả biểu thức ở mức 0.
Blink: cho phép nhấp nháy đối tượng.

Expression: nhập biểu thức. Kết quả biểu thức được quy về mức 1 nếu khác 0
và mức 0 nếu bằng 0. Đối tượng sẽ nhấp nháy nếu kết quả của biểu thức bằng
1.
Blink Speed, chọn tốc độ nhấp nháy là chậm,vừa, hoặc nhanh. Blinked
Attributes: chọn kiểu nhấp nháy.
Blink Invisible: kiểu xuất hiện và biến mất đối tượng.
Blink Visible With these attributes: kiểu thay màu đối tượng. Các màu thay
đổi được xác định ở ô bên dưới.
Orientation: cho phép xoay đối tượng.

Expression: nhập biểu thức.


Value at Max CCW và Value at Max CW: nhập tầm thay đổi giá trị của biểu
thức.
CCW Rotation và CW Rotation: nhập tầm thay đổi góc quay( độ).
X Position và Y Position: nhập tâm quay. Mặc định tâm quay là (0,0) tương
ứng với tâm quay nằm tại tâm đối tượng.
Disable: cho phép thực thi hay không thực thi các đăc tính đã được người sử
dụng gán cho đối tượng từ trước đó.
Expression: nhập biểu thức. Kết quả của biểu thức được quy về mức 1 nếu
khác 0 và mức 0 nếu bằng 0.
Disabled State: chọn trạng thái bỏ qua các đặc tính liên kết với đối tượng.
On: các đặc tính được liên kết sẽ không còn giá trị nếu kết quả biểu thức ở
mức 1
Off: các đặc tính được liên kết sẽ không còn giá trị nếu kết quả biểu thức ở
mức 0.

CHƯƠNG 3: CÁC CÂU LỆNH LẬP TRÌNH TRONG INTOUCH


(SCRIPTS)

Sau khi thiết kế giao diện, ta sẽ viết lệnh để điều khiển hoạt động của các đối
tượng bằng SCRIPTS. Lệnh được thực thi dựa vào các biến cố. Các biến cố
này đườc qui định trong các cửa sổ soạn thảo lệnh. Có nhiều loại cửa sổ soạn
thảo lệnh trong Window Maker tạo sự linh hoạt và tiện dụng hơn cho ngưới
thiết kế.
Cửa sổ Script:
1

2
5

4
Gồm các phần:
1.Toolbars: thanh công cụ.
2.Condition definition area: các loại điều kiện của cửa sổ.
3.Script window: vùng viết lệnh
4.Equivalency and math operator buttons: các nút lệnh và biểu thức toán
học dùng để viết Scripts.
5.Command buttons: các nút điều khiển cửa sổ lệnh
6.Built-in Script function buttons: các hàm xử lý hổ trợ viết Scripts được tạo
sẵn.
I. Ngôn ngữ script trong intouch:
Quy tắc cú pháp cơ bản: Các quy tắc cú pháp cơ bản bao gồm các khía cạnh
của ngôn ngữ script InTouch HMI:
Chương trình con
Câu lệnh
Sự thụt dòng
Lời chú thích
Biến tham chiếu
Giá trị dữ liệu
Giá trị biểu thức
Xác nhận cú pháp
1.Chương trình con:

Không có khái niệm về chương trình con riêng biệt trong cùng một script,
chẳng hạn như "sub" thủ tục trong Visual Basic. Để cấu trúc một đoạn script
thành nhiều chương trình con, bạn phải tạo một tuỳ chỉnh QuickFunction cho
mỗi chương trình con.
2.Câu lệnh:
Một khai báo có thể là một giá trị chỉ định, gọi một chức năng, hoặc một cấu
trúc điều khiển.
Mỗi khai báo trong một script phải kết thúc với một dấu chấm phẩy (;).
Bạn có thể có nhiều khai báo trong cùng một dòng, miễn là mỗi câu kết thúc
bằng dấu chấm phẩy.
Bạn có thể chia ra nhiều phần một khai báo trên nhiều dòng bằng cách
sử dụng ngắt dòng (nhấn Enter).
3.Thụt đầu dòng:
Bạn có thể thụt lề đoạn mã script của bạn theo bất kỳ cách nào. Các thụt lề
không liên quan về chức năng.
4.Lời chú thích:
Để đánh dấu văn bản như là một chú thích, đặt nó bên trong dấu ngoặc {}.Lời
chú thích có thể nối nhiều dòng.
5.Biến tham chiếu:
Có một số cách để làm biến tham chiếu.
Để tham chiếu 1 biến thì biến đó phải được định nghĩa trong Tagname
dictionary địa phương
Để tham chiếu một trường chấm đặc biệt, ta sử dụng định dạng tham chiếu
bình thường trong (Tagname.Dotfield).
Để tham chiếu một mục dữ liệu trên một nút từ xa, sử dụng biến tham chiếu từ
xa (AccessName: Item).
Bạn cũng có thể xác định các biến địa phương có phạm vi là giới hạn các
script hiện hành.
6.Giá trị dữ liệu:
Bạn có thể chỉ định các giá trị số nguyên trong ký hiệu thập phân hoặc hệ thập
lục phân
Ví dụ, 255 hoặc 0xFF.
Bạn có thể chỉ định các giá trị dấu chấm động trong ký hiệu thập phân hoặc
khoa học. Ví dụ, 0,001 hoặc 1E-3.
Để xác định một giá trị Boolean, sử dụng các giá trị số 0 cho FALSE và 1 cho
TRUE.
Để xác định một giá trị chuỗi, đặt nó bên trong dấu ngoặc képđánh dấu.
Ví dụ: "this is string".
7.Giá trị biểu thức:
Giá trị biểu thức có thể bao gồm các giá trị, biến tham chiếu và gọi khối chức
năng, tất cả các liên kết với nhau bởi sự phù hợp của toán hạng.

8.Xác nhận cú pháp :


Khi bạn lưu một script, các Script Editor tự động kiểm tra nó cho chính xác cú
pháp. Bạn cũng có thể bắt đầu xác nhận này bằng tay bằng cách nhấn vào nút
Val Idate.
II.Các kiểu câu lệnh:
1. Application Scripts: là các câu lênh viết trong cửa sổ này sẽ được thực thi
khi ứng dụng hoạt động( Runtime). Có 3 loại sau:
On Startup: lệnh được thực thi 1 lần lúc ứng dụng bắt đầu chạy.
While Running: lệnh được thực thi sau mỗi chu kì.
On Shutdown: lệnh được thực thi 1 lần khi đóng ứng dụng
2. Window Scripts: lệnh viết trong cửa sổ soạn thảo này chỉ có tác dụng trong
phạm vi Form thiết kế. Có 3 loại:
On Show: lệnh được thực thi 1 lần khi mở form.
While Showing: lệnh được thực thi sau mỗi chu kỳ.
Hide Show: lệnh được thực thi khi đóng form
Để mở cửa sổ này, ta click phải chuột trên Form và chon Window Scripts…

3. Key Scripts: lệnh trong cửa sổ soạn thảo này được thực thi khi nhấn phím
mặt định trên bàn phím( phím tắt). Có 3 loại:
On Key Down: lệnh được thực thi 1 lần lúc nhấn phím.
While Down: lệnh được thực thi sau mỗi chu kì trong lúc nhấn phím.
On Key Up: lệnh được thực thi 1 lần lúc nhả phím.
4.Condition Scripts: lệnh trong cửa sổ soạn thảo này được thưc thi khi điều
kiện qui định được thỏa.
Điều kiện được viết trong mục condition
Có 4 loại:
On False: lệnh được thực thi 1 lần lúc điều kiện bắt đầu sai.
While False: lệnh được thực thi sau mỗi chu kì trong lúc lệnh còn sai.
On True: lệnh được thực thi 1 lần lúc điều kiện bắt đầu đúng.
While True: lệnh được thực thi sau mỗi chu kì trong lúc lệnh còn đúng.
Data change: lệnh trong cửa sổ soạn thảo này được thưc thi khi Tag
qui định thay đổi giá trị.
ActiveX event scripts: lệnh được thực thi khi một AtiveX event Scripts
xuất hiện, hay đang click ActiveX control.
Để mở các cửa sổ trên, ta di chuyển chuột đến cửa sổ Scripts và double
click vào cửa sổ cần mở.
III. Gọi các chức năng:
1. Gọi các chức năng chuẩn:
Các chức năng tiêu chuẩn được xác định trước với InTouch HMI.
Cú pháp cho gọi các chức năng chuẩn: Để gọi một chức năng mà không
trả lại kết quả: Chỉ sử dụng tên hàm (và các thông số, nếu có) trong một khai
báo.
Ví dụ: FunctionName (tham số);
Để gọi một chức năng mà đòi hỏi kết quả của nó đã được gán:Sử dụng
các tên hàm (và các thông số, nếu có) ở bất cứ đâu trong một script, nơi bạn có
thể sử dụng một giá trị hoặc một tagname của các loại dữ liệu có liên quan.
Ví dụ, trong mộtgiá trị chỉ định:
ResultsTagname = FunctionName (tham số);
Hoặc trong gọi chức năng lồng nhau, sử dụng nó như một tham số cho một
chức năng:
OtherFunction (FunctionName (Tham số));
Chuyển các tham số đến một chức năng:
Các thông số chức năng tiêu chuẩn được xác định trước thường thông
qua giá trị. Điều này có nghĩa rằng bạn có thể chuyển bất kỳ biều thức hợp lệ
biểu hiện như một tham số, miễn là biểu thức đánh giá các loại dữ liệu được
yêu cầu cho tham số. Biểu thức như vậy có thể bao gồm các giá trị thật, biến
tham chiếu,và gọi các chức năng, tất cả các liên kết với nhau bởi toán hạng
phù hợp.
Khi một script gọi các chức năng, biểu thức thường đánh giá kết quả và giá trị
truyền cho hàm.Tuy nhiên, có một số chức năng mà yêu cầu biến tham chiếu
như một tham số.
Ví dụ: RecipeSelectRecipe (Tên, RecipeName, số);
Trong ví dụ này, tham số RecipeName phải là một biến tham chiếu (có nghĩa
là, bạn phải sử dụng một tagname thật cho RecipeName tham số. Bạn không
thể chuyển một biểu thức chuỗi vào đó, ngay cả khi biểu thức đánh giá một
tagname hợp lệ.
2. Gọi tính năng khác (QuickFunctions):
Gọi một QuickFunction tùy chỉnh khác biệt chút ít so với gọi các chức
năng chuẩn:
Từ khóa gọi phải trước tên QuickFunctions
Kết quả trả về bởi QuickFunctions là không bắt buộc,bạn có thể sử
dụng chúng.
Để gọi một QuickFunction mà không trả lại kết quả: Sử dụng các tên hàm (và
các thông số, nếu có) trước bằng cách gọi từ khóa trong câu lệnh.
Ví dụ: CALL QuickFunctionName(Parameters);
Để gọi một QuickFunction mà trả về một kết quả:
Làm một trong hai điều sau đây:
Gọi QuickFunction như thể nó không trả về một kết quả
Sử dụng tên hàm (và các thông số, nếu có) trước bằng cách các gọi từ khóa bất
cứ nơi nào trong một script nơi bạn có thể sử dụng một giá trị thật hay
tagname một các loại dữ liệu liên quan.
Ví dụ, trong một giá trị khai báo: ResultsTagname = CALL
QuickFunctionName(Parameters);.
Hoặc trong gọi các chức năng lồng nhau, sử dụng nó như một tham số cho
một chức năng tiêu chuẩn: OtherFunction (GỌI FunctionName (Tham số));
Lưu ý: Bạn không thể gọi tổ hợp QuickFunction để cho một QuickFunction
được sử dụng như một tham số cho QuickFunction khác.
Ví dụ,Gọi QF1 (Call QF2 ()); không hợp lệ.
3. Chuyển các tham số đến một QuickFunction:
Các thông số từ QuickFunctions luôn luôn thông qua bởi giá trị. Bạn
không thể chuyển các thông số đến QuickFunctions theo tham chiếu. Bạn có
thể chuyển bất kỳ biểu thức hợp lệ như một tham số, miễn là định lượng biểu
thức đến các loại dữ liệu mà là cần thiết cho các tham số. Biểu thức như vậy có
thể bao gồm các giá trị thật, biến tham chiếu, và các gọi chức năng, tất cả các
liên kết với nhau bởi toán hạng phù hợp .
4. Giá trị chỉ định và toán hạng:
Trong script, bạn sử dụng giá trị chỉ định để viết giá trị cho một biến.
Cú pháp cho một giá trị chỉ định là như sau:
Tagname = ValueExpression;
Khi khai báo này được thực thi, ValueExpression được viết bằng biến
đề cập đến bởi Tagname. ValueExpression có thể là bất kỳ biểu thức hợp lệ có
kiểu dữ liệu phù hợp với biến kiểu dữ liệu. Giá trị biểu thức có thể bao gồm
các giá trị thật, biến tham chiếu, và các gọi chức năng, tất cả các liên kết với
nhau bằng cách phù hợp bởi nhà điều khiển.
5.Hỗ trợ của tóan hạng:
Bảng sau đây liệt kê tất cả các hỗ trợ của các toán hạng.
Lưu ý: Đối với các phép tính số, luôn luôn chọn các toán hạng để kết
quả của phép tính vẫn còn trong phạm vi giá trị của một số thực. Nếu không,
kết quả sẽ không chính xác.
a. Cộng hoặc nối: “+”

Thêm hai toán hạng số hoặc nối hai chuỗi toán hạng.
Toán hạng hợp lệ:
Đối với cộng: Bất kỳ giá trị integer hoặc real.
Đối với nối: Bất kỳ giá trị string.
Lọa dữ liệu của giá trị trả về:
Đối với cộng: integer hoặc real.
Đối với nối: string.
Ví dụ:
MessageTag = "Setpoint value: " + Text(SetpointTag, "#.##");

b. Phép trừ hay phủ định: “-“


Khi được sử dụng với hai toán hạng, thực hiện trừ một số thường xuyên.
Khi được sử dụng với một toán hạng, thay đổi dấu các toán hạng.
Toán hạng hợp lệ: bất kỳ giá trị Integer hoặc Real
Dữ liệu loại giá trị trả về: Integer hoặc Real.
c. Phép nhân: “*.”
Toán hạng hợp lệ: bất kỳ giá trị Integer hoặc Real.
Dữ liệu loại giá trị trả về : Integer hoặc Real.
d. Phép chia: ”/”

Nếu bạn cố gắng để chia cho 0 ở thời gian chạy thì 0 là kết quả được trả về.
Toán hạng hợp lệ: Bất kỳ giá trị Integer hoặc Real.
Dữ liệu loại giá trị trả về: Integer hoặc Real.

e. Lũy thừa: “**”


Toán hạng hợp lệ: giá trị là Integer hoặc Real.
Dữ liệu loại giá trị trả về: Integer hoặc Real
Ví dụ: 8 ** (1/3) kết quả là 2
f. Chia lấy dư: “MOD”
Trả về phần dư của việc chia hai giá trị số nguyên.
Toán hạng hợp lệ: Bất kỳ giá trị Integer.
Dữ liệu loại giá trị trả về: Integer
Ví dụ: 37 MOD 4 trả về 1
g. So sánh bit AND: “&”
So sánh phần biểu diễn nhị phân của hai số nguyên, bit cho bit, và trả về
một kết quả theo bảng sau đây:

h. Bitwise OR:
So sánh sự biểu diễn nhị phân của hai số nguyên,bit cho các bit, và trả
về một kết quả theo sau đây bảng:

Toán hạng hợp lệ: bất kỳ giá trị Integer.


Dữ liệu loại giá trị trả về:Integer
l. Bitwise XOR:
So sánh biễu diễn nhị phân của hai số nguyên, bit cho
các bit, và trả về một kết quả theo sau đây bảng:

Toán hạng hợp lệ: Bất kỳ giá trị Integer.


Dữ liệu loại giá trị trả về: Integer

m. Logic: AND
Trả về TRUE nếu cả hai toán hạng discrete là TRUE,ngược lại thì trả
về FALSE.

Toán hạng hợp lệ: Bất kỳ giá trị Discrete.


Dữ liệu loại giá trị trả về: Discrete
n. Logic: OR
Trả về TRUE nếu ít nhất một trong các toán hạng rời rạc là TRUE,
ngược lại thì trả về FALSE.
Toán hạng hợp lệ: Bất kỳ giá trị discrete.
Dữ liệu loại giá trị trả về : discrete
o. Logic phủ định: NOT
Trả về TRUE nếu toán hạng rời rạc là FALSE , và ngược lại.

Toán hạng hợp lệ Bất kỳ giá trị discrete.


Dữ liệu loại giá trị trả về : discrete
p. Các phép so sánh: <,>, <=,> =, ==, <>:
Các toán tử này so sánh hai giá trị và trả về TRUE nếu điều kiện theo
quy định của toán tử được thõa mãn. Các toán hạng có thể là của bất kỳ loại
dữ liệu nào. Đối với toán hạng chuỗi, việc so sánh được dựa trên các chữ cái,
không phân biệt kiểu chữ, với b được lớn hơn a, c lớn hơn b, và như vậy. Đối
với toán hạng discrete , TRUE được xem là lớn hơn FALSE.
Bảng sau liệt kê tất cả các toán tử so sánh cùng với họ điều kiện:
Toán hạng hợp lệ: giá trị của bất kỳ loại dữ liệu .
Dữ liệu loại giá trị trả về: discrete (true hoặc false)
q. Thiết lập mức độ ưu tiên của các toán hạng:
Trong bất kỳ biểu thức, bạn có thể sử dụng dấu ngoặc đơn để nhóm các
toán hạng có độ ưu tiên được đánh giá theo một thứ tự nhất định. Công việc
này giống cùng một cách như trong bất kỳ biểu thức toán học. Nếu bạn không
sử dụng ngoặc đơn, biểu thức của bạn được đánh giá dựa trên mặc định ưu
tiên quy tắc cho các toán hạng. Các toán hạng vớimức độ ưu tiên cao nhất
được thực thi đầu tiên, tiếp theo là hoạt động với mức độ ưu tiên cao thứ
hai,….
Bảng dưới đây chỉ cho ta thấy mức độ ưu tiên của mỗi toán hạng. Các toán
hạng trên cùng một hàng có cùng một mức độ ưu tiên.
t. Quá trình chuyển đổi loại dữ liệu ẩn:
Các ngôn ngữ scrip trong InTouch HMI cung cấp quá trình chuyển đổi
giá trị ẩn trong chỉ định giữa các loại dữ liệu chắc chắn.Tuy nhiên, điều này có
thể dẫn đến kết quả không mong đợi, vì vậy bạn nên sử dụng tính năng này
thận trọng.
Bảng dưới đây cho thấy những gì xảy ra khi bạn gán một giá trị của kiểu biến
nào đó đển một kiểu khác.
Ví dụ cho biểu thức:
Bảng dưới đây cho thấy một số biểu thức hợp lệ, cùng với kết quả
của biểu thức và kết quả kiểu dữ liệu.

6. Cấu trúc phân nhánh khi sử dụng chương trình có điều kiện:
Bạn có thể điều khiển linh hoạt các hướng thực thi của một scrip dựa
trên điều kiện nhất định được đáp ứng. Các InTouch HMI hỗ trợ cấu trúc
điều khiển IF-THEN-ELSE cho mục đích này.
6.1. Cú pháp cơ bản cho một cấu trúc điều khiển IF-THEN-ELSE
là như sau:
Cú pháp:
IF điều kiện THEN
... khai báo và / hoặc thêm cẩu trúc IF-THEN-ELSE
ELSE
... báo cáo và / hoặc thêm một IF-THEN-ELSE
Endif;
6.2. Hãy nhớ các quy tắc sau đây khi làm việc với cẩu trúc IF-
THEN-ELSE :
•Cấu trúc IF-THEN-ELSE có thể được lồng nhau, giữa phần THEN và
trong phần ELSE.
• Đối với mỗi khai báo IF, phải có một ENDIF đóng cửa khai báo. Một
khai báo ENDIF luôn luôn áp dụng cho khai báo lồng IF gần nhất.
• Điều kiện phải là một biểu thức discrete hợp lệ. các phần THEN được
thực hiện nếu điều kiện là TRUE. các ELSE là phần được thực hiện nếu điều
kiện là FALSE.
• Phần ELSE là tùy chọn.
• Một số ngôn ngữ lập trình khác cho phép bạn kiểm tra nhiều điều kiện
trên cùng một hệ thống phân cấp mức độ của một cấu trúc IF-THEN-ELSE và
có một phần chung ELSE phần đó được thực thi nếu các điều kiện để đánh
giá là FALSE. Điều này là không cho phép trong các InTouch HMI. Đối với
mọi điều kiện để kiểm tra, bạn phải mở một cấu trúc IF-THEN-ELSE mới. Vì
vậy, để có một phần đơn
của đoạn mã để thực hiện như mã ELSE cho tất cả các điều kiện, bạn phải đặt
nó trong phần ELSE của cầu trúc IF-THEN-ELSE cấu trúc ở cấp độ lồng
cuối.
6.3. Cấu trúc đơn giản điều kiện:
Các scrip sau đây cho thấy một cấu trúc đơn giản điều kiện. Nếu
SuccessTag là TRUE, cửa sổ "Success" mở ra, ngược lại thì cửa sổ "Failure"
sẽ mở ra.
IF SuccessTag == 1 THEN
Show "Success";
ELSE
Show "Failure";
Endif;
6.4. Cấu trúc lồng nhau có điều kiện:
Các script sau đây cho thấy làm thế nào để kiểm tra nhiều điều kiện và
có một phần chung ELSE với đoạn mã được thực thi nếu không có điều kiện
nào thõa mãn
IF ChoiceTag == 1 THEN
Show "Procedure 1";
ELSE
IF ChoiceTag == 2 THEN
Show "Procedure 2";
ELSE
IF ChoiceTag == 3 THEN
Show "Procedure 3";
ELSE
Show "Default Procedure";
ENDIF;
ENDIF;
ENDIF;.
Ví dụ Scripting không hợp lệ (Thiếu ENDIF):
Nếu bạn đã quen thuộc với Visual Basic, bạn có thể thử viết một khai
báo IF đơn giản như thế này:IF OpenThisWindow = = 1 THEN Show "This
Window";
Điều này không làm việc trong InTouch HMI. Đối với mỗi khai báo IF,
phải có một khai báo đóng cửa ENDIF.
Ví dụ Script không hợp lệ (lồng không đúng)
Nếu bạn đã quen thuộc với ngôn ngữ như Visual Basic, bạn có thể
muốn viết một cấu trúc có điều kiện với nhiều điều kiện và điều kiện mặc định
như thế này:
IF ChoiceTag == 1 THEN
Show "Procedure 1";
ELSE IF ChoiceTag == 2 THEN
Show "Procedure 2";
ELSE IF ChoiceTag == 3 THEN
Show "Procedure 3";
ELSE
Show "Default Procedure";
ENDIF;
Điều này không làm việc trong InTouch HMI. Mỗi IF sẽ mở ra một mức độ
lồng mới và phải có một khai báo ENDIF tương ứng.
7. Sử dụng chương trình vòng lăp (loop):
Các vòng lặp cho phép bạn thực hiện một phần của đoạn mã liên tục.
Các InTouch HMI chỉ hỗ trợ đối với các vòng lặp FOR. Một vòng lặp FOR
hoạt động bằng cách giám sát giá trị của một biến số đó là vòng lặp tăng lên
hoặc giảm đi với mỗi lần lặp vòng. các
vòng lặp được thực thi cho đến khi giá trị của biến vòng lặp đạt đến một giới
hạn.
Cú pháp: FOR LoopTag = StartExpression TO EndExpression
[STEPChangeExpression]
... statements or another FOR loop ...;
NEXT;

StartExpression, EndExpression và ChangeExpression cùng nhau xác


định số phần lặp đi lặp lại.
StartExpression thiết lập giá trị bắt đầu của dãy vòng lặp.
EndExpression thiết lập giá trị cuối của dãy vòng lặp.
Bước ChangeExpression tùy chọn thiết lập giá trị bằng cách mà biến
vòng lặp được tăng lên hoặc giảm đi trong thời gian mỗi vòng lặp, nếu bạn
không chỉ định này, một mặc định của 1 được sử dụng.
7.1Khi bạn thực hiện một vòng lặp FOR, các HMI InTouch:
b1: Thiết lập LoopTag với giá trị của StartExpression.
b2: Kiểm tra xem thử LoopTag lớn hơn EndExpression.
Nếu có, InTouch HMI thoát khỏi vòng lặp. (NếuChangeExpression là vô
hiệu, InTouch HMI kiểm tra xem LoopTag liệu ít hơn EndExpression.)
b3: Thực thi khai báo trong vòng lặp.
b4: Gia tăng LoopTag bởi giá trị của ChangeExpression
b5: Lặp lại bước 2 đến 4.
7.2Hãy nhớ các quy tắc sau đây khi làm việc với vòng lặp FOR:
Vòng lặp FOR có thể được lồng nhau. Số lượng tối đa của
mức độ lồng phụ thuộc vào bộ nhớ có sẵn và dung lượng hệ thống.
Đối với mỗi khai báo FOR, thì phải có đóng bằng khai báo NEXT. Một khai
báo NEXT luôn luôn áp dụng cho vòng lặp lồng gần nhất.
LoopTag phải là một biến số (hay biến địa phương).
StartExpression, EndExpression vàChangeExpression phải là biểu thức hợp lệ
để đánh giá đến kết quả số học.
Nếu ChangeExpression là tích cực, EndExpression phải lớn hơn
StartExpression, nếu ChangeExpression là tiêu cực, StartExpression phải lớn
hơn EndExpression.
Nếu không, vòng lặp không bắt đầu.
Để thoát khỏi một vòng lặp, sử dụng câu lệnh EXIT FOR.
Có một giới hạn thời gian cho các vòng lặp.

 Cảnh báo vòng lặp thực thi ảnh hưởng khác đến thời gian chạy quy trình,
đối vớinhiều thông tin hơn, xem ảnh hưởng của vòng lặp trên các Run-Time
7.2.1Câu lệnh bắt buộc kết thúc một vòng lặp:
Bạn có thể thoát khỏi một vòng lặp bất cứ lúc nào bằng cách gọi câu
lệnh sau đây:
EXIT FOR;câu lệnh này gây ra script thực thi để tiếp tục thực thi câu lệnh
ngay sau vòng lặp NEXT khai báo.
Ví dụ : FOR Counter = 1 TO 1000
ResultCode = SQLInsert(ConnectionID, "BatchDetails", "BindList1");
IF ResultCode <> 0 THEN,
LogMessage("Error creating records! Aborting...");
EXIT FOR;
ENDIF;
NEXT;
7.2.2Ảnh hưởng của vòng lặp trên các quy trình Run-Time khác:
Trong khi một vòng lặp FOR được thực thi, tất cả các thời gian chạy
các quá trình khác trong WindowViewer là dừng lại. Điều này bao gồm các
khu vực sau:
Màn hình cập nhật (liên kết hình ảnh động, hiển thị giá trị, biểu đồ,…).
Điều này có nghĩa rằng bạn không thể sử dụng đối với các vòng lặp để đối
tượng sinh động, bởi vì không có hành động nào sẽ xảy ra cho đến sau khi
vòng lặp đã hoàn thành.
Các I / O truyền đạt. Ví dụ, nếu bạn thay đổi giá trị của một biến I / O
trong một vòng lặp FOR, chỉ có giá trị sau khi vòng lặp cuối cùng được ghi
vào thiết bị I / O.
Các script khác, bao gồm cả QuickFunctions không đồng bộ.
Bạn có thể tránh tạm dừng thời gian chạy các quy trình khác bằng cách đặt
vòng lặp FOR trong một QuickFunction không đồng bộ.
7.2.3Thời gian giới hạn thực thi vòng lặp:
Để tránh vòng lặp vô hạn, có một giới hạn thời gian mà vòng lặp FOR
phải thực thi hoàn thành. Nếu một vòng lặp không thực thi hoàn thành sau thời
gian này thì WindowViewer tự động kết thúc nó và viết viết một thông điệp
về việc chấm dứt đến Log Viewer.Thời gian mặc định là 5 giây. Bạn có thể tùy
chỉnh nó bằng thêm dòng sau vào file intouch.ini trong tập tin ứng dụng của
bạn.
LoopTimeout = x
Thay thế x với thời hạn giới hạn trong vài giây.
Lưu ý: Thời hạn được kiểm tra chỉ ở câu lệnh NEXT của vòng lặp. Do đó,
phần lặp đầu tiên của vòng lặp là luôn luôn được thực thi, thậm chí nếu phải
mất lâu hơn thời hạn giới hạn.
Ví dụ về các vòng lặp:
Các script sau đây sử dụng một vòng lặp đơn giản và một biến gián tiếp
để
khởi tạo lại biến 100 (Tag001 để Tag100) với giá trị 0.
DIM Counter AS INTEGER;
FOR Counter = 1 TO 100
IndirectInteger.Name = "Tag" + Text(Counter, "000");
IndirectInteger.Value = 0;
NEXT;
8. Sử dụng biến địa phương:
Bạn có thể khai báo các biến địa phương trong một script để lưu trữ tạm
thời hoặc các kết quả trung gian. Điều này làm tăng hiệu suất và làm giảm biến
đếm của bạn. Bạn có thể sử dụng các biến địa phương giống như tên biến
trong script của bạn. Tuy nhiên, có một số sự khác biệt:
Các biến địa phương chỉ tồn tại trong phạm vi của script mà chúng
được khai báo.Nó mất đi giá trị của nó khi script thực hiện xong. Nó không
thể được tham chiếu bởi bất kỳ script khác trong ứng dụng của bạn.
Các biến địa phương không có dotfields.
Các biến địa phương không được tính vào số lượng biến thật.
Trước khi bạn có thể sử dụng một biến địa phương trong một script, bạn phải
khai báo, nếu không, tham chiếu được xem là một tagname.
8.1Khai báo một biến địa phương:
Bạn có thể khai báo các biến địa phương bất cứ nơi nào trong kịch bản
của bạn, miễn là bạn khai báo nó đầu tiên trước khi sử dụng. Để khai báo một
biến địa phương, sử dụng câu lệnh sau:
DIM LocVarName [AS DataType];
LocVarName: là tên của biến địa phương. Tên phảithực hiện theo các quy
ước đặt tên cho tagnames.
DataType: là kiểu dữ liệu của các biến địa phương. Giá trị hợp lệ là Discrete,
Integer, Real, and Message. Nếu bạn khôngchỉ định tùy chọn này, Integer
được sử dụng như mặc định. Bạn phải sử dụng một khai báo riêng biệt cho
từng biến địa phương DIM
Bạn có thể khai báo bất kỳ số lượng các biến địa phương. Con số này được chỉ
giới hạn bởi bộ nhớ có sẵn.

Ví dụ: Để khai báo một biến là số nguyên: DIM MyLocalIntVar AS


Integer
Để khai báo một biến là số thực: DIM MyLocalRealVar1 AS Real;
DIM MyLocalRealVar2 AS Real;
Khai báo sau đây là không hợp lệ:
DIM MyLocalRealVar1, MyLocalRealVar2 AS Real;

8.2Xung đột giữa việc đặt tên biến địa phương và biến thật:
Bạn có thể khai báo một biến địa phương có cùng tên như là một biến
hiện có. Tuy nhiên, khi bạn tham chiếu tên đó trong một script, các biến địa
phương luôn luôn ưu tiên hơn các biến thật. Ví dụ, giả sử bạn có một biến hiện
có là Integer được gọi là "iTag", và bạn chạy script sau đây:
DIM iTag As Integer;
iTag = 20;
Trong script này, các giá trị chỉ định chỉ ghi một giá trị cho các biến địa
phương. Giá trị của biến hiện có cùng tên vẫn không thay đổi.
9. Các hàm chức năng có sẵn trong intouch:
Các chức năng được cài sẵn
Chức năng InTouch QuickScript cho phép bạn thực hiện các lệnh và
các thao tác hợp lý dựa trên tiêu chuẩn quy định được thõa mãn. Bạn có thể sử
dụng chức năng QuickScript bởi chính chúng và họ đã thực hiện bất cứ khi
nào một điều kiện nhất định được thõa mãn hoặc sử dụng chúng trong các liên
kết hiển thị hình ảnh động. Cập nhật bắt buộc trong trong Liên kết hiển thị
hoạt cảnh.
Nếu bạn sử dụng QuickScripts trong các liên kết hình ảnh động, các liên kết
hình ảnh động được cập nhật nếu chỉ có một biến có liên quan đến chúng. Biến
này hoạt động như một kích hoạt bất cứ khi có sự thay đổi giá trị của nó. Một
sự lựa chọn tốt là sử dụng $ second hoặc $ Minute hệ thống biến để cập nhật
hình ảnh động liên kết.
Để bắt buộc một bản cập nhật trong một liên kết hiển thị hình ảnh động
1 Mở liên kết hình ảnh động trong cửa sổ thuộc tính đối tượng.
2 Thêm một biến kích hoạt (ví dụ $ second) cho tính toán.
Các tính toán toán học
Các InTouch HMI hỗ trợ chức năng cơ bản toán học mà bạn có thể sử dụng
trong chương trình và trong các liên kết hình ảnh động, chẳng hạn như chức
năng:
Làm tròn và cắt bỏ số.
Tính sin và cosin.
Tính toán logarit và số mũ.
Tính căn bậc hai.
Làm tròn, cắt xén, và xác định dấu:
Trong một script, bạn có thể sử dụng các chức năng sau để làm tròn
con số, cắt xén số, và xác định dấu củasố:
Để sử dụng
Abs () Tính tuyệt đối của một giá trị hoặc biểu thức.
Int () Tính toán số nguyên của một giá trị hoặc biểu thức.
Round() làm tròn một giá trị hoặc biểu thức.
SGN () Xác định các dấu (-, +, không có) của một giá trị hoặc biểu
thức.
Hàm TRUNC () Trả về tiền tố là thập phân của một giá trị hoặc biểu
thức.
abs () Chức năng:
Trả về giá trị tuyệt đối của một số quy định. bạn có thể
sử dụng để chuyển đổi một số âm đến một số dương.
Cú pháp: kết quả = Abs (số)
Tham số: Một số thật, tagname tương tự, hoặc biểu thức số.
Ví dụ (s):
Abs (14) trả về 14.
Abs (-7,5) trả 7,5
Int ():
Trả về số nguyên nhỏ hơn (hoặc bằng) một chỉ định số.
Cú pháp: kết quả = Int (số)
Tham số:Một số thật, tagname tương tự, hoặc biểu thức số.
Ví dụ (s)
Int (4.7) trả về 4.
Int (-4,7) trả về -5.
Lưu ý: Đối với con số thực âm, chức năng này trả về một số nguyên
này nhỏ hơn số lượng quy định. Ví dụ, Int (-4,7)
không phải là -4, nhưng -5. Để có một phần số nguyên trở về, sử dụng
Hàm TRUNC () chức năng. Xem TRUNC () chức năng trên trang 78.
round ():
Làm tròn một số với một độ chính xác quy định. Kết quả là một số thực
Cú pháp: kết quả = Round (số, độ chính xác)
Tham số: Một số thật, tagname tương tự, hoặc biểu thức số.
Độ chính xác: Độ chính xác mà số được làm tròn. Có thể là một
số thật, tagname tương tự, hoặc biểu thức số.
Ví dụ (s)
round (4.3, 1) trả về 4.
round (4.3, 0,01) trả về 4,30.
round (4.5, 1) trả về 5.
round (-4,5, 1) trả về -4.
round (106, 5) trả về 105.
round (43,7, 0,5) trả về 43,5.
Sgn ():
Trả về dấu của một số. Sử dụng nó để xác định xem một
số , tagname, hoặc biểu thức là âm, dương, hoặc bằng không.
Cú pháp: kết quả = Sgn (số)
Tham số:Một số thật, tagname tương tự, hoặc biểu thức số.
Ví dụ (s):
SGN (425) trả về 1.
SGN (0) trả về 0.
SGN (-37,3) trả về -1.
Hàm TRUNC ():
Trả về giá trị cắt ngắn của một số. Việc cắt xén giá trị là lấy phần trước dấu
thập phân. - - Sử dụng nó để làm việc với một phần số nguyên của một số
thực.
Cú pháp: kết quả = TRUNC (số)
Tham số:Một số thật, tagname tương tự, hoặc biểu thức số.
Ví dụ (s)
TRUNC (4.3) trả về 4.
TRUNC (-4,3) trả về -4.
Lưu ý: Bạn cũng có thể sử dụng chức năng này để làm việc với các phân đoạn
một phần của một số. Để trở về các phần phân đoạn của một quy định
số sử dụng hàm TRUNC () chức năng như sau:
kết quả = số - hàm TRUNC (số);

Sử dụng chức năng lượng giác:


Trong một script, bạn có thể sử dụng các chức năng sau để tính toán
lượng giác.
Lưu ý: chức năng QuickScript lượng giác trong việc sử dụng InTouch
HMI sử dụng góc (00 – 3600). Để làm việc với radian thay vào đó bạn phải
thực hiện các tính toán tương ứng trước khi chuyển qua các tham số chức năng
hoặc sau khi lấy kết quả từ chức năng.
Để sử dụng:
Sin () Tính sin của một góc.
Arcsin () Tính Arcsin của một giá trị hoặc toán hạng.
Cos () Tính cosin của một góc.
Arccos () Tính Arccos của một giá trị hoặc biểu thức.
Tan () Tính tan của một góc.
Arctan () Tính toán Arctan của một giá trị hoặc biểu thức.
Ví dụ:
Sin ():
Trả về sine của một số. Đối với các hàm chức năng lượng giác số là góc đơn vị
là độ.
Cú pháp: kết quả = Sin (số)
Tham số: Một số thật, tagname tương tự, hoặc biểu thức số.
Ví dụ (s)
Sin (90) trả về 1.
Sin (0) trả về 0.
Sin (30) trả về 0,5.
100 * Sin (6 * $ second) trả về một dạng sóng sin với một
biên độ của 100 và một khoảng thời gian của một phút.
Arcsin ()
Trả về góc của một số. Đây là chức năng đảo so với chức năng Sin (). Sử
dụng arcsin () để tính toán các góc độ từ -90 đến 90 độ.
Cú pháp: kết quả = arcsin (số)
Tham số: Một số thật, tagname tương tự, hoặc biểu hiện số trong khoảng -1
đến 1.
Ví dụ (s)
Arcsin (1) trả về 90.
Arcsin (0) trả về 0.
Arcsin (0,5) trả về 30.

Trả lại giá trị của pi:


Trong một script, bạn có thể sử dụng Pi () để sử dụng hằng số pi trong các tính
toán toán học. Các Pi () chức năng là chính xác đển7 chữ số sau dấu thập phân.
Cú pháp: kết quả = Pi ()
Ví dụ (s): Pi () trả về 3,1415927.
Tính toán Logarit:
Trong một script, bạn có thể sử dụng các chức năng sau để tính toán logarit và
tính toán với các chức năng theo số mũ.
Để sử dụng:
- Log () Tính logarit tự nhiên của một giá trị hoặc biểu thức.
- Exp () Tính toán theo hàm mũ của một giá trị hoặc biểu thức.
- LogN () Tính logarit của một giá trị hoặc biểu thức để các cơ sở
của giá trị khác hoặc biểu thức.
Ví dụ:
log ():
Trả về logarit tự nhiên của một số dương chỉ định.
Đây là chức năng đảo cho các chức năng Exp ().
Lưu ý: lôgarit tự nhiên của con số 0 và tiêu cực là
không xác định. Nếu bạn vượt qua 0 hoặc một số âm đến chức năng Log (), nó
trả về một kết quả của -99,0000000.
Cú pháp: kết quả = Log (số)
Tham số: Một số thật dương, tagname tương tự, hoặc biểu thứcsố.
Ví dụ (s)
Đăng nhập (100) trả về 4,6051702.
Đăng nhập (1) trả về 0.
Exp ():
Trả về số mũ của một số quy định. Đây là
chức năng đảo cho các chức năng log ()
Chú ý: Nếu bạn vượt qua giá trị bên ngoài phạm vi của -88,72 đến 88,72 đến
các Exp () chức năng, nó sẽ trả về một kết quả của -99,0000000.
Cú pháp: kết quả = Exp (số)
Tham số:Một số thật, tagname tương tự, hoặc biểu hiện số trong phạm vi của -
88,72 đến 88,72.
Ví dụ (s)
Exp (1) trả về 2,7182818.
Exp (0) trả về
Toán hạng chuỗi:
Bạn có thể sử dụng các chức năng cơ bản chuỗi trong các script và
hình ảnh động liên kết. Bạn có thể sử dụng các chức năng này để:
Quay trở lại các phần của chuỗi.
Thay đổi trường hợp của chuỗi.
Hủy bỏ và thêm không gian cho chuỗi.
Xử lý các giá trị ASCII trong chuỗi.
Tìm kiếm và thay thế trong chuỗi.
So sánh các chuỗi với nhau.
Trở lại thông tin khác về chuỗi, chẳng hạn chiều dài của nó.
Ví dụ:Trả lại một phần của chuỗi:
Trong một script, bạn có thể sử dụng StringLeft (), StringMid () và
StringRight () chức năng để trả lại các phần của chuỗi.
StringLeft () Chức năng
Trả về một số ký tự đầu quy định của một chuỗi.
Cú pháp: kết quả = StringLeft (chuỗi, chiều dài)
Tham số:
Chuỗi:Một biểu thức văn bản, tagname tin nhắn, hoặc chuỗi

Chiều dài:số ký tự trả lại. Một số thật, tagname số thực, hoặc biểu
thức số.
Ví dụ (s)
StringLeft ("Xin chào thế giới", 5) trả về "Hello".
StringLeft ("Xin chào thế giới", 20) trả về "Xin chào thế giới".
StringLeft ("Xin chào thế giới", 0) trả về "Xin chào thế giới".
Chú ý: Nếu bạn đặt giá trị 0 là chiều dài thì chức năng StringLeft ()
sẽ trả
toàn bộ chuỗi sau khi vị trí bắt đầu.

Định dạng không gian chuỗi:


Trong một script, bạn có thể sử dụng StringSpace () để thêm không gian
(khoảng trống) cho chuỗi.Cú pháp: kết quả = StringSpace (number)
Tham số: Một số chữ, số tagname, hoặc biểu thức số.
Ví dụ: "Pump"+StringSpace(1)+"Station" returns “Pump Station”.
Chuyển đổi giữa mã ký tự và mã ASCII:
Trong một script, bạn có thể chuyển đổi các ký tự của một chuỗi thành mã
ASCII và mã ASCII trở lại với mã ký tự bằng cách sử dụng chức năng
StringChar () và StringASCII ().
Các chức năng này không hỗ trợ bộ ký tự byte nhiều.
Chỉ có ký tự được hỗ trợ trong khoảng 0-255.
Sử dụng mã ASCII là hữu ích nếu bạn muốn thực hiện một số tính toán trên
một chuỗi (ví dụ cho mã hóa một string).
Ví dụ:
Chức năng StringChar ()
Trả về một ký tự đơn tương ứng với một quy định mã ASCII.
Cú pháp:kết quả = StringChar (ASCIICode)
Tham số:(ASCIICode)Một số thật, tagname số, hoặc biểu thức sốtrong khoảng
từ 0 đến 255.
Tìm kiếm và thay thế văn bản trong Strings:
Đối với ngôn ngữ mà sử dụng bộ ký tự byte đơn (như Tiếng Anh) bạn có thể
sử dụng chức năng StringInString () và StringReplace () trong một script để
thực hiện các giới hạn tìm kiếm và thay thế chức năng trên biến tin nhắn.
Để sử dụng:
StringInString () Tìm kiếm một chuỗi nhất định trong một chuỗi và trả về kết
quả như là một vị trí.
StringReplace () Thay thế một số ký tự hoặc nhiều từ với các ký tự khác hoặc
từ trong một quy định chuỗi và trả về kết quả như là một chuỗi mới.
Ví dụ:
Chức năng StringInString ()
Trả về vị trí đầu tiên của một chuỗi quy định trong một chuỗi.
Cú pháp: kết quả = StringInString (string, searchfor, startpos,casesens)
Tham số:(string) đây là chuỗi để tìm kiếm. Một chuỗi chữ, tin nhắn tagname
tin nhắn, hoặc biểu thức chuỗi.
(searchfor):đây là chuỗi mà là để được tìm kiếm. Một chuỗi
chữ,tagname tin nhắn, hoặc biểu thức chuỗi.
(startpos):Đây là vị trí bắt đầu trong chuỗi tìm kiếm. Một đen
giá trị, số tagname, hoặc biểu thức số.
(casesens):Xác định xem tìm kiếm là trường hợp nhạy. Có thể là 0
hoặc 1, tagname discrete, hoặc biểu thức Boolean.
0 - tìm kiếm không phải là trường hợp nhạy (chữ hoa và chữ thường
được xem là như nhau).
1 - tìm kiếm là trường hợp nhạy cảm (chữ hoa và chữ thường là
coi là khác nhau).
Chú ý:
Sử dụng chức năng này để xác định xem một chuỗi nhất định được chứa trong
một biến thông báo.
Ví dụ (s)
script này trả về 5 vì đầu tiên "M" trong "MTX" là trong vị trí thứ năm của
chuỗi:
StringInString ("dbo MTX-010", "MTX", 1,0)
Chức năng StringReplace ()
Tìm kiếm cho một chuỗi trong chuỗi khác, và nếu tìm thấy,thay thế nó bằng
chuỗi có khác. Bạn có thể chỉ định:
• Trường hợp-nhạy cảm - Điều này xác định nếu chữ hoa và chữ thường thì
được coi như giống nhau hay không.
• Số lượng xuất hiện để thay thế - Điều này rất hữu ích nếu có nhiều
hơn một xuất hiện của các chuỗi tìm kiếm được tìm thấy.
• Toàn bộ từ - Sử dụng điều này nếu chuỗi tìm kiếm là một từ đầy đủ.
Lưu ý chức năng này không hỗ trợ bộ ký tự byte kép.
Cú pháp
kết quả = StringReplace (string, searchfor, replacewith,casesens,numtoreplace,
matchwholewords)
Tham số: string
Chuỗi tìm kiếm bên trong. Một chuỗi thật,tagname tin nhắn, hoặc biểu thức
chuỗi.
Searchfor: Các chuỗi đó là để được tìm kiếm. Một chuỗi thật,tagname tin
nhắn, hoặc biểu thức chuỗi.
Replacewith: Các chuỗi được sử dụng để thay thế. Một chuỗi thật,tagname tin,
hoặc biểu thức chuỗi.
Casesens: Xác định xem tìm kiếm là trường hợp nhạy không. Có thể là 0
hoặc 1, tagname discrete hoặc biểu thức Boolean.
0 - tìm kiếm không phải là trường hợp nhạy cảm (chữ hoa và chữ thường
được xem là như nhau)
1 - tìm kiếm là trường hợp nhạy cảm (chữ hoa và chữ thường là coi là khác
nhau)
Numtoreplace: Số lượng thay thế để thực hiện. Thiết lập để -1 để thay thế
tất cả các lần xuất hiện của các chuỗi tìm kiếm được tìm thấy. Một số nguyên
đen giá trị, số nguyên tagname, hoặc biểu thức số nguyên.
Matchwholewords: Xác định xem những lời chỉ toàn là phù hợp. có thể được
0 hoặc 1, rời rạc tagname, hoặc biểu thức Boolean.
0 - chức năng tìm kiếm các ký tự chuỗi tìm kiếm bất cứ nơi nào trong chuỗi
1 - chỉ được khớp toàn bộ từ
Trả về thông tin về chuỗi;
Trong một kịch bản, bạn có thể sử dụng StringLen () và StringTest () chức
năng để trả lại độ dài của một chuỗi quy định và kiểm tra xem ký tự đó nằm
trong nhóm chính của ký tự.
StringLen (): Trả về chiều dài của một chuỗi quy định, bao gồm cả không nhìn
thấy được ký tự.
Cú pháp: kết quả = StringLen (string)
StringTest (): Kiểm tra xem liệu một ký tự đầu tiên của một chuỗi là trong một
số nhóm các ký tự.
Cú pháp: kết quả = StringTest (string, nhóm)
Group:
The number of the group to test the character against. A
literal value, integer tagname, or integer expression in the
range of 1 to 11.
1 - alphanumeric characters (A-Z, a-z, 0-9)
2 - numeric characters (0-9)
3 - alphabetic characters (A-Z, a-z)
4 - uppercase characters (A-Z)
5 - lowercase characters (a-z)
6 - punctuation characters (ASCII 0x21 - 0x2F), for
example !,@,#,$,%,^,&,* and so on
7 - ASCII characters (ASCII 0x00 - 0x7F)
8 - Hexadecimal characters (0-9, A-F, a-f)
9 - Printable characters (ASCII 0x20 - 0x7E)
10 - Control characters (ASCII 0x00 - 0x1F and 0x7F)
11 - White space characters (ASCII 0x09 - 0x0D and
0x20)
Example(s)
This string returns a 1—because “A” is an alphanumeric
character:
So sánh các chuỗi
Trong một script, bạn có thể sử dụng chức năng StringCompare (),
StringCompareNoCase () và StringCompareEncrypted () để so sánh hai chuỗi.
StringCompare () Chức năng
So sánh hai chuỗi với nhau và trả về một Boolean
Kết quả (0 = chuỗi bằng nhau).
Để sử dụng
StringCompare () Thực hiện một trường hợp so sánh nhạy.
StringCompareNoCase () Thực hiện một trường hợp so sánh không nhạy.
StringCompareEncrypted () so sánh một mã hóa với một chuỗi mã hóa
chuỗi.
Cú pháp
kết quả = StringCompare (chuỗi1, chuỗi2)
Ví dụ (s)
StringCompare ("Apple", "Apple") trả về 0.
StringCompare ("Apple", " apple") trả về 1.
Chuỗi này so sánh các thẻ thông báo hai và trả về một
kết quả riêng biệt (0 hoặc 1):
Chức năng GetPropertyI.
Đọc một số nguyên trong wizard và trả về một mã thành công.

Cú pháp: result = GetPropertyI (controlname.property, itag)


Tham số:Tên của một wizard có hỗ trợ thuộc tính. Một chuỗi giá trị, tin
tagname, hoặc biểu thức chuỗi.

Các thuộc tính:property:Các thuộc tính số nguyên của wizard được đọc về.

Controlname: có thể là một giá trị chuỗi, tagname tin nhắn, hoặc biểu thức
chuỗi.
Itag:Các tagname số nguyên mà sẽ nhận các giá trị số nguyên.
Giá trị trả về:Một mã lỗi số nguyên.

Chức năng SetPropertyI.


Thiết lập một thuộc tính số nguyên trong wizard và trả về một mã thành công.
Cú pháp: result = SetPropertyI (controlname.property, integer)
Tham số:controlname:tên của một winzard có hỗ trợ các thuộc tính. Một chuỗi
giá trị, tagname tin nhắn, hoặc biểu thức chuỗi.
property:Các thuộc tính số nguyên của wizard được thiết lập cùng
với tên điều khiển có thể là một chuỗi giá trị, tagname tin nhắn, hoặc biểu thức
chuỗi.
Interger:Giá trị số nguyên được chuyển tới các thuộc tính wizard. Một giá trị
số nguyên, tagname số nguyên, hoặc biểu thức số nguyên.
Giá trị trả về: Một mã lỗi số nguyên.
Chức năng SetPropertyM:
Thiết lập một tin nhắn trong wizard và trả về một mã thành công.
Cú pháp:result = SetPropertyM (controlname.property, message)
Tham số:controlname:Tên của một wizard có hỗ trợ các đặc tính. Một chuỗi
giá trị, tagname tin nhắn, hoặc biểu thức chuỗi.
property.tin nhắn của wizard được thiết lập cùng với tên điều khiển
có thể là một giá trị chuỗi,tagname tin nhắn, hoặc biểu thức chuỗi.
Message:thông tin giá trị được gửi tới wizard. Một
chuỗi giá trị, tagname tin nhắn hoặc biểu thức chuỗi.
Giá trị trả về:Một mã lỗi số nguyên.
Ví dụ (s)
Với một wizard kiểm tra hộp Checkbox1 bạn có thể đặt chú thích của
hộp kiểm tra wizard động với cấu trúc sau đây:
result=SetPropertyM("Checkbox1.caption","Start Engine1");
Cấu trúc này thiết lập chú thích cho Checkbox1 là:
"Bắt đầu động cơ 1".
10. Scripting ActiveX Controls:
Bạn có thể sử dụng điều ActiveX Controls để đọc và ghi vào tagnames
và I / O tham chiếu. Trong một script, bạn có thể tham khảo điều khiển
ActiveX tham chiếu.
Bạn cũng có thể tạo script để thực hiện khi sự kiện xảy ra cho control ActiveX.
Những script có thể được tái sử dụng và nhập vào các ứng dụng khác.
Gọi quá trình ActiveX Control.
Trong script, bạn có thể gọi quá trình control ActiveX để thực hiện
hành động được hỗ trợ bởi control ActiveX. Qúa trình ActiveX có thể được
gọi từ bất kỳ loại InTouch QuickScript nào hoặc ActiveX script.
Lưu ý: Để gọi phương thức ActiveX ActiveX khi một sự kiện xảy
ra, có một số điều kiện tiên quyết bạn cần làm. Xem Cấu hình kịch bản sự kiện
ActiveX.
Để gọi một quá trình control ActiveX:
1. Trong một hộp thoại script, trên menu Insert, kích ActiveX.
Hộp thoại ActiveX Control xuất hiện.
b. Nhấp vào tên của control ActiveX từ khung bên trái. Các cửa sổ bên phải
chứa tên của thuộc tính và quá trìnhđược hỗ trợ bởi control ActiveX.
c. Nhấp vào tên của quá trình sử dụng từ cửa sổ bên phải và sau đó kích OK.
Các quá trình và tên mặc định tham số được dán vào cửa sổ script tại vị trí con
trỏ.
d.Qúa trình cấu hình các thông số bên trong dấu ngoặc đơn, thông số kỹ thuật
của bạn.
Truy cập đặc tính ActiveX Control từ InTouch HMI
Trong script, bạn có thể đọc vào control ActiveX để trao đổi dữ liệu
giữa control ActiveX các InTouch tagnames và các liên kết hiển thị.
Cấu hình đặc tính control ActiveX để đọc và ghi dữ liệu trong
script, bạn có thể đọc dữ liệu từ và ghi dữ liệu vào một control ActiveX. Bạn
sử dụng thuộc tính control ActiveX kết hợp với các control ActiveX cụ thể.
Có hai cách để làm điều này:
Sử dụng thuộc tính của control ActiveX trong InTouch HMI QuickScript
hoặc script event ActiveX. Thuộc tính đọc hay viết trong script được thực
hiện.
Liên kết thuộc tính control ActiveX trực tiếp vào một tag InTouch HMI
hoặc I / O tham chiếu. Giá trị thuộc tính được đọc hoặc viết ở mọi khoảng thời
gian cập nhật.
Cấu hình script để đọc và viết ActiveX
Control Properties
Trong script , bạn có thể cấu hình các thuộc tính control ActiveX để viết hoặc
các giá trị từ InTouch HMI tagnames hoặc biểu thức khác.
Để đọc dữ liệu từ hoặc ghi dữ liệu đến một thuộc tính control ActiveX

1: Mở một cửa script, chọn Insert, và nhấn ActiveX.


Các ActiveX Control hộp thoại xuất hiện.
2 Chọn tên của ActiveX control từ bảng bên trái.
Bảng bên phải chứa các thuộc tính của ActiveX control được lựa chọn.
3 Chọn tên cho các thuộc tính được sử dụng ở bảng bên phải.
Tên thuộc tính được chèn vào cửa sổ cript.
4 xác định thuộc tính cho một tag hoặc dùng theo cách xác định của bạn.
5 nhấn OK.
11. Các lệnh làm việc với Intouch windows:
+ Show ( ) : cho phép cửa sổ ứng dụng window hiện lên
Cú pháp: Show windowname
Windowname: tên cửa sổ muốn hiển thị
Ví dụ: Show “Main” : cho phép cửa sổ window “Main” hiện lên
+Hide( ): cho phép ẩn cửa sổ ứng dụng window
Cú pháp: Hide windowname
Windowname: tên cửa sổ muốn hiển thị
Ví dụ: Hide “Main” : cho phép ẩn cửa sổ window “Main”
7. Các lệnh xử lý thời gian trong Intouch:
$Year, $Month ,$Day, $Hour, $Minute, $Second, $Msec, $Time
Các lệnh này dùng để lấy 1 giá trị thời gian để xử lý.
Ví dụ: If $Month = = 10 Then
MonthName = “October”,
Endif;
$DateString : Lấy giá trị ngày tháng năm
Ví dụ: Date = $DateString
Trị trả về: Date = 25/12/2011
$TimeString: lấy giá trị thời gian giờ phút giây
Ví dụ: Time = $TimeString
Trị trả về: Time = 10:54:15AM
UTCDateTime( ): Lấy giá trị ngày, tháng, năm, giờ, phút, giây
Cú pháp: UTCDateTime( Fomat)
Fomat: định dạng kiểu trả về
UTCDateTime("UTC_SHORT") : 17:24:05
UTCDateTime("UTC_LONG") : 01/06/2003 17:24:05
UTCDateTime("UTC_LOCAL") : -8:0: 1
UTCDateTime("Invalid") : Mon Jan 06 17:24:05 2003.
III. Lập trình Script:
Ví dụ: Lập trình Script cho giao diện điều khiển motor và bồn nước ở trên khi
nhấn start thì mực nước trong bồn tư dâng lên khi nhấn stop thì dừng lại và
nhấn van xả thì mực nước giảm và nhấn lần nữa thì ngừng xả. Đèn từng chế độ
sáng tương ứng. Khi mực nước lớn hơn 9000 thì van an toàn tự động mở ra.
Lúc đó mực nước sẽ giảm.
IF startbom= =1 THEN
Mucnuoc=Mucnuoc+100;
ENDIF;
IF vanxa= =1 THEN
Mucnuoc = Mucnuoc -100;
ENDIF;
IF Mucnuoc>=9000 THEN
vanantoan=1;
Mucnuoc=Mucnuoc -200;
ENDIF;
IF Mucnuoc <=8500 THEN
vanantoan=0;
ENDIF;
IF Mucnuoc<0 THEN
Mucnuoc=0;
ENDIF;
CHƯƠNG 4: CÁC BÁO ĐỘNG HỆ THỐNG ALARM
VÀ THỜI GIAN THỰC

Chương này sẽ giúp các thiết lập báo cáo chi tiết về một đối tượng và báo sự
cố hay có một sự thay đổi nào đó của đối tượng trong lúc vận hành.
Alarm Logging đảm trách về các thông báo nhận được và lưu trữ. Nó chứa các
chức năng để nhận các thông báo từ các quá trình để chuẩn bị hiển thị, hồi đáp
và lưu trữ chúng. Với đặc tính này Alarm logging sẽ giúp tìm ra nguyên nhân
lỗi.
Hệ thống Alarm có các đặt tính sau:
+ Cung cấp các thông tin về lỗi và trạng thái hoạt động toàn diện.
+ Cho phép sớm nhận ra các tình trạng nguy cấp
+ Tránh và giảm thiểu thông báo
+ Chất lượng sản phẩm ngày càng tăng
I. Cách thiết lập thuộc tính Alarm
Trước tiên chúng ta đặt thuộc tính Alarm cho biến đã tạo như đã giới thiệu ở
trên ta di chuyển chuột đến cửa sổ Tool/ tagname dictionary/ click phải
chuột/open

Ta có cửa sổ tagname dictionary


Sau đó ta click select để chọn tag cần thiết lập alrm
Trên hình ta chọn ta chọn Tagname MOTOR1 và chọn Details & Alarms để
thiết lập thuộc tính Alarms

Group: $System là nhóm Alarm chứa tagname của mình


Initial Value: Khởi tạo giá trị ban đầu của tagname vì đây là biến Memory
Discrete nên chỉ có 2 giá trị là ON( 1), OFF( 0).
Nếu bạn muốn hiển thị thông báo khi tagname có giá trị ON thì gõ vào On
Msg
Nếu bạn muốn hiển thị thông báo khi tagname có giá trị ON thì gõ vào On
Msg
Trên ACK Model ta chọn Condition điều kiện báo động
Alrm comment: chú thích báo động
Alarm State: trạng thái của tagname khi báo động ta chọn giống Initial Value
để tín hiệu báo động trùng với giá trị thực của tagname.
Click close để lưu.
Trường hợp nếu biến báo động là analog cũng làm các bước trên ta có cửa sổ
sau:

Chọn loại Alarm ( LoLo, Low, HiHi, High) mà bạn muốn sử dụng khi
tagname vượt quá giá trị định mức
Low,LoLo: khi giá trị nhỏ hơn giá trị đặt thì cảnh báo nhưng nếu sử dụng cả 2
thì giá trị LoLo sẽ nhỏ hơn giá trị Low.
Tương tự High, HiHi: khi giá trị cao hơn giá trị đặt thì cảnh báo.
Alrm Value các giá trị tới hạn của Alarm
Priority: quyền ưu tiên có giá trị từ 0 đến 999
Click close để lưu.
Để hiển thị được Alarm ta phải vào Wizard chọn Alarm Dislays sau đó lấy ra
cửa sổ tạo giao diện
Để đặt thuộc tính cho Alarm displays ta double click vào đối tượng ở giao diện
ta có cửa sổ Alarm Configurstion

Ở Tab General: ta thiết lập thuộc tính cho Alarm Display


Display name: tên Alarm Display
New Alarm Appear at: vị trí hiện báo động mới cập nhật
Top of list: xuất hiện ở đầu trang
Bottom of list: xuất hiện ở cuối trang
Properties : thiết lập giao diện hiển thị cho alarm display
Show titles: cho phép hiển thị thanh tiêu đề.
Show status bar: cho phép hiển thị thanh công cụ update alarm.
Auto – scroll to new alarm: cho phép tự động di chuyển thanh cuộn tại vị trí
alarm mới.
Perform query on starup: hiển thị và cập nhật các alarm đã đặt.
Show vert scrollbar: hiển thị thanh cuộn dọc
Show horz scrollbar: hiển thị thanh cuộn ngang
Delault query properties: thiết lập thuộc tính cho alarm:
Form priority, to priority: hiển thị các alarm có quyền ưu tiên từ 1 đến 999
Alarm state: loại alarm (tất cả, có yêu cầu, không yêu cầu).
Query stype: loại cập nhật alarm
Summary: cập nhật theo sự kiện không lưu trữ
Historical: cập nhật theo sự kiện có lưu trữ.
Tab message: thiết lập thời gian cập nhật, các dữ liệu cập nhật
Select display font: kiểu chữ alarm
Column managerment: cho phép hiển thị các loại dữ liệu cập nhật( ngày, giá
trị, sự kiện… )
Tag color: màu hiển thị alarm theo quyền ưu tiên.
Sau đó click ok để lưu.
II.Đồ thị thời gian thực( Real-time trending):
Để định dạng cho Real-time Trend ta làm như sau:
Click chuột phải vào đốit tượng Real-time Trend trên form và chọn Properties,
hộp thoại sau sẽ xuất hiện:
Các ô thuộc tính trên hộp thoại:
Comment: nhập chú thích.
Time-span: chọn khoảng thời gian theo dõi.
Inteval: khoảng thời gian cập nhật giá trị của tag.
Chart color: chọn màu nền.
Border color: chọn màu đường viền bên ngoài.
Real time trend : là đồ thị có 2 trục, trục thời gian và trục giá trị của tag.
Định dạng các thuộc tính cho trục thời gian:

Number of Major Div: chọn số khoảng chia chính trên trục thời gian, chọn
màu cho đường chia ô bên cạnh.
Minor Div/ Major Div: chọn số khoảng chia phụ trên mỗi khoảng chính.
Có thể chọn Top Labels hoặc Bottom Labels: tương ứng với giá trị thời gian
được hiển thị bên trên hay bên dưới của trục thời gian.
Major Div/Time Label: chọn số khoảng chia giá trị thời gian.
HH:MM:SS Display: chọn đơn vị cho trục thời gian.
Việc định dạng cho trục giá trị tương tự như trục thời gian.
Min Value, Max Value : nhập khoảng giá trị của tag

Trong 1 Real time trend ta có thể hiển thị giá trị của 4 tag khác nhau.

Nhập tên các tag cần hiển thị vào ô 1, 2, 3, 4 và chọn màu, độ rộng vào
ô bên cạnh. Xong, nhấn OK.
CHƯƠNG 5: KẾT NỐI THIẾT BỊ I/O (I/O COMMUNICATION)

InTouch Wonderware dùng Microsoft Dynamic Data Exchange (DDE),


FastDDE và giao thức Wonderware Suitelink để kết nối với chương trình
Window khác, với máy chủ Wonderware I/O và với chương trình Server I/O
của thành phần thứ 3 mà thành phần này kết nối với thiết bị thực.
I.Các giao thức hỗ trợ kết nối.
DDE: là một giao thức kết nối được phát triển bởi Microsoft cho phép những
ứng dụng trong môi trương Window có thể nhận hoặc gửi dữ liệu đến một ứng
dụng khác. Nó bổ sung mối quan hệ client – server giữa hai ứng dụng đang
chạy. Máy chủ cung cấp dữ liệu và cho phép yêu cầu từ một ứng dụng khác
cần dữ liệu của nó. Ứng dụng yêu cầu gội là client. Một số ứng dụng như
InTouch và Microsoft Excel có thể đồng thời là server và client.
FastDDE: cung cấp một gói trung gian của các lời nhắn trong Wonderware
DDE vào một lời nhắn đơn Microsoft DDE. Sự đóng gói này cung cấp giảm
bớt tổng số hoạt động DDE cần cung cấp giữa client và server.
NetDDE: mở rộng tiêu chuẩn WindowsDDE để bao gồm kết nối thông qua
mạng cục bộ và thông qua cổng nối tiếp. Mở rộng mạng có giá trị cho phép
liên kết DDE giữa ứng dụng đang chạy trên một máy tính khác được kết nối
thông qua mạng máy tính hay modem.
Wonderware Suitelink: dùng giao thức TCP/IP. Suitelink được thiết kế đặc
biệt cho những ứng dụng trong công nghệp như dữ liệu toàn vẹn, số liệu nhiều
và dễ chuẩn đoán hơn. Suitelink không thể thay thế cho DDE, FastDDE hoặc
NetDDE.
II. Dùng giao thức Wonderware Suitelink kết nối với PLC qua phần mềm
KepserverEX :
1. Cách thiết lập giao thức Wonderware Suitelink trong Intouch:
1.1Wonderware Suitelink:

Để dùng giao thức kết nối này chúng ta thực hiện các bước sau:
Ta cần có giao thức Microsoft TCP/IP.
Ta phải có tên máy tính không quá 15 kí tự.
Wonderware Suitelink phải chạy như một dịch vụ. Nếu vì một lí do nào đó mà
Suitelink bị dừng, ta sẽ phải khởi động lại từ đầu.

Để bắt đầu dùng Suitelink, ta vào Service của Window Control Panel. Xuất
hiện hộp thoại:

Click vào Wonderware Suitelink để khởi động.


1.2 Các hiểu ngầm trong địa chỉ I/O InTouch.

InTouch xác định một phần tử của dữ liệu trong một chương trình máy
chủ I/O bởi một tên định ngầm thành phần thứ 3 bao gồm application name,
topic name và item name. Để lấy được dữ liệu từ một ứng dụng khác chương
trình máy con mở một kênh cho chương trình máy chủ bởi sự chỉ rõ 3 thành
phần này.
Để cho InTouch có thể lây dữ liệu từ một ứng dụng khác, nó phải biết
được tên của ứng dụng cung cấp dữ liệu, tên topic của ứng dụng mà có chứa
dữ liệu và tên của item đặc biệt bao gồm topic. Thêm vào đó InTouch cần biết
kiểu của dữ liệu. Thông tin này xác định kiểu I/O cho tagname khi nó được
xác định trong cơ sở dữ liệu của InTouch. Khi WindowViewer đang chạy nó
sẽ tự động hoạt động tất cả các hành động khác cần truy cập để thu thập và
duy trì giá trị của item này.
1.3 Địa chỉ I/O InTouch.

Khi một ứng dụng khác cần một giá trị dữ lieu từ InTouch nó cũng có thể biết
địa chỉ I/O item thứ ba, Những điều sau đây mô tả một địa chỉ I/O hiểu ngầm
cho InTouch:
View (application name): nhận biết chương trình InTouch đang thực hiện mà
có chứa thành phần dữ liệu.
Tagname (topic name): là từ luôn được sử dụng khi đọc ghi từ cơ sở dữ liệu
của InTouch.
Actualtagname (item name): là một tagname thực được xác định cho một item
trong InTouch Tagname Dictionary.
1.4Tên truy cập InTouch.

Khi ta tạo một tagname I/O hoặc tagname tham chiếu từ xa, cần có một Access
Name. Access Name chứa thông tin mà được dùng để kết nối với nguồn dữ
liệu I/O khác bao gồm tên node, tên dứng dụng và tên topic.
Để tạo một tên truy cập ta thực hiện như sau:
Vào Special menu, chọn Access Name. Xuất hiện hộp thoại sau:

Click vào Add. Xuất hiện hộp thoại:


Trong Access Name nhập tên mà ta muốn InTouch dùng như tên truy cập.
InTouch dùng Access Name để tham chiếu dữ liệu thời gian thực. Mỗi Access
name trương ứng với một địa chỉ I/O bao gồm Node, Application và Topic.
Nếu dữ liệu chứa trong một server mạng I/O, trong node name nhập vào tên
của node tham chiếu từ xa.
Trong Application Name nhập vào tên chương trình thực cho một chương
trình máy chủ I/O từ đó dữ liệu có thể được thu thập. Trong trường hợp giá trị
đến máy chủ Wonderware Modbus I/O vì Modbus được sử dụng, không nhập
vào phần mở rộng .exe của tên chương trình.
Trong Topic Name nhập vào topic name mà ta muốn truy cập. Topic name là
một ứng dụng đặc biệt nhóm phụ của những thành phần dữ liệu. Trong trường
hợp dữ liệu đến từ một chương trinh Wonderware I/O server, topic name là tên
chính xác được định dạng cho topic trong chương trình Server I/O . Khi kết
nối Microsoft Excel, topic name phải là tên được đưa ra cho bảng tính khi nó
được lưu.
Chọn giao thức sử dụng.
Chọn Option mà ta muốn dùng để tham khảo server:
Advise all items: thu gom tất cả các dữ liệu có hay không xuất hiện trong
window, báo động, truy cập và môt tả hoặc dùng trong một script. Chọn option
này sẽ tác động mạnh do đó ứng dụng của nó poi khi không cần thiết.
Advise only active item: chỉ thu thập những điểm tồn tại trong window và
nhứng điểm mà báo động, log hay trend hoặc được dùng trong script.
Chọn OK để chấp nhận Access Name. Trên hộp thoại sẽ xuất hiện lên một tên
Access name để chọn.

2. Cách cài đặt phần mềm bắt tay KepserverEX:


Đầu tiên ta vào thư mục chứa file cài KepserverEX sau đó double click vào
biểu tượng dưới:

Sau đó click next để tiếp tục quá trình cài đặt

Thiết lập như hình sau đó click next để tiếp tục cài đặt:
Click next để tiếp tục cài đặt:

Chọn tất cả các mục như hình sau đó click next:


Cửa sổ sau hiện ra tiếp tục click next cho đến khi xuất hiện của sổ có tab
Finish
Click Finish để kết thúc quá trình cài đặt:

3. Kết nối I/O qua phần mềm Kepserver:


Tạo kết nối với PLC qua phần mềm Kepserver:
Để bắt tay các dòng PCL ta dùng phần mềm Keepserver:
Khởi động Kepserver:
Ta vào Start/ programs/wonderware/Kepserver for Wonderware/
Kepserver for Wonderware như hình để khởi động chương trình.
Ta sẽ thực hiện thao tác tạo biến bắt tay với PLC trên cửa sổ sau. Đây là cửa
sổ chính của phần mềm:

Để tạo 1 file kết nối ta vào File/New hay chọn biểu tượng trên thanh công
cụ.

Ta nhấp chuột vào click to add a channel để vào cửa sổ New channel –
Identification đây là cửa sổ khởi tạo tên ứng dụng của mình.
Ta đặt tên ứng dụng vào Channel name ở đây ta đặt là Ketnoi sau đó click
next để tiếp tục quá trình thiết lập:

Xuất hiện cửa sổ New channel – Device Driver ở cửa sổ này ta thiết lập tên
thiết bị phần cứng kết nối bên ngoài. Ở đây ta chọn là PLC của hãng
Mitsubishi và giao tiếp qua cổng nối tiếp nên ta chọn Device driver là
Mitsubishi Serial sau đó click Next
Ở cửa sổ New channel – Communications ta sẽ thiết lập kiểu giao tiếp
ID: cổng kết nối
Baud rate: tốc độ truyền
Data bits: số bit truyền
Parity: kiểm tra chẵn lẽ
Stop bits: số bit dừng
Ta cấu hình như hình trên rồi click Next để tiếp tục quá trình thiết lập.

Ở cửa sổ New channel – Write Optimizations ta thiết lập thời gian cập nhật
dữ liệu từ thiết bị bên ngoài. Ta thiết lập như hình sau đó click Next
Cửa sổ các dữ liệu đã thiết lập New channel – Summary ta chọn Finish để
kết thúc quá trình thiết lập.

Cửa sổ KepServer for Wonderware

Để thiết lập thiết bị ta nhấp chuột vào Click to add a device


Cửa sổ New Device – Name ta đặt tên thiết bị trong mục Device name ta đặt
là thiết bị là Device1 sau đó click next để tiếp tục

Trong cửa sổ New Device – Model ta chọn loại thiết bị ma ta sử dụng cần phải
đúng với thực tế trong mục Device model ở đây ta chọn ở đây ta chọn PLC họ
Q nên ta chọn Q Series click next để tiếp tục
Trong cửa sổ New Device – ID đây là cửa sổ chọn kiểu dữ liệu truyền về mặc
định như hình là kiểu số thập phân click next để tiếp tục.

Trong cửa sổ New Device – Timing đây là cửa sổ thời gian dữ liệu truyền về
mặc định như hình click next để tiếp tục.
Nhấn next cho đến khi gặp cửa sổ New Device – Summary click Finish để
hoàn tất quá trình thiết lập cho thiết bị( New Device). Ta có cửa sổ sau:

Để tạo biến kết nối với PLC và Wonderware ta nhấp phải chuột trong cửa sổ
Tagname chọn New ta có cửa sổ sau:
Đây là cửa sổ thiết lập biến gián tiếp kết nối giữa PLC với phần mềm
Wonderware.
Name: tên biến
Address: Địa chỉ biến trên PLC là địa chỉ vùng nhớ của PLC tùy từng loại PLC
mà có cách định địa chỉ khác nhau. Khi ta định địa chỉ sai thì phần mềm sẽ
hiển thị File help để ta tìm hiểu.
Data properties: vùng thiết lập kiểu dữ liệu, cách thức kết nối, tốc độ quét.
Sau khi tạo xong nhấp ok để hoàn tất.
Ta tạo 1 biến với tên là Tag1 vì lúc nảy ta thiết lập là dùng PLC họ Q của
Mitsubishi nên địa chỉ biến phải theo loại PLC đó để biết ta vào Start/
programs/wonderware/Kepserver for Wonderware/ Help Documentation
sau đó chọn PLC mà mình sử dụng thì File Help hiện ra ta vào Address
Description để xem.
Sau đó tạo và gan biến như file hướng dẫn.
Để vào mục Option trong OPC Kepserver: Ta vào Tools/option như hình:
Ta có cửa sổ sau ta cần lưu ý mục FastDDE/SuiteLink Ta cần điền mục
Application name trong Intouch giống như mục Application name như trong
hình:

fastDDE/suitelink có chứa Application Name :”servermain”


Tab DDE dùng để chỉ nối trực tiếp có chứa Service name :”kepdde”
Note: đề cập đến 2 vấn đề trên bởi vì khi kết nối Intouch với thiết bị bên ngoài
sẽ yêu cầu tên của OPC hoặc I/Oserver
Khi chúng ta tạo một thiết bị để nối với Intouch phải chú ý đến tên miền địa
chỉ chính “topic name”
Chọn device -> edit->Alias map->đặt tên miền
Khởi tạo trong cửa Windowmaker của Intouch
Access > add

Note:
Với Topic name là tên của thiết bị được khai báo trong Alias name
Còn Application Name là được chọn như sau:
+Với nối mạng thì chúng ta chọn suitelink và servermain.
+nối trực tiếp thì chúng ta chọn DDE và keepdde
….vv

Khi khởi tạo tag name trong Intouch để kết nối chúng ta chọn tên trong item
trùng tên với tên của tag name trong kepserver
Lưu ý: Mục Item trong Tagname Dictionary Intouch phải có tên trùng với
mục Name trong Tag properties của phần mềm OPC thì mới liên kết được.
Như thế là chúng ta đã kết nối được Intouch với các thiết bị của hãng
khác qua phần mềm trung gian Kepserver ( một OPC server trung gian)
Trường hợp một số giao thức kết nối trong Kepserver không hổ trợ ta
phải dùng phần mềm OPC khác. Như phần mềm Kepserver khi kết nối với
PLC không hổ trợ kết nối qua cổng USB để kết nối được ta dùng phần mềm
OPC khác tên là DeviceXPlorer OPC Server

4. Phần mềm DeviceXPlorer OPC Server:


Phần mềm OPC này hổ trợ 1 số hãng như:
Với phần mềm này ta có thể mô phỏng PLC Mitsubishi kết nối Intouch mà
không cần PLC bên ngoài.
4. 1 Cách cài đặt phần mềm DeviceXPlorer OPC Server:
Để cài đặt phần mềm ta nhấp đúp chuột vào biểu tượng bên dưới:

Cửa sổ lựa chọn ngôn ngữ cài đặt xuất hiện

Ta chọn như hình sau đó click OK để thực hiện quá trình cài đặt
Click Intall để thực hiện cài đặt OPC ta có cửa sổ sau:

Click Next để tiếp tục


Click Yes nếu bạn đồng ý cài ta có cửa sổ sau:

Sau khi điền thông tin vào click next


Vì không có bản quyền ta nền ta có cửa sổ sau

Ta chọn Yes để cài bản demo chỉ dùng được 1 khoảng thời gian phải khởi
động lại
Ta có cửa sổ sau:
Đây là cửa sổ chọn những dòng PLC mà phần mềm hổ trợ ta chọn tất cả sau
đó click next và chờ quá trình cài đặt hoàn tất.
4.2 Kết nối với I/O qua phần mềm DeviceXPlorer OPC Server
Sau khi cài đặt xong để khởi động phần mềm ta thao tác:
Vào Start/Programs/DeviceXPlorer OPC Server/ DeviceXPlorer OPC
Server

Đây là cửa sổ thao tác chính của phần mềm OPC

Để kết nối với PLC ta phải tạo một File ứng dụng để quản lý tất cả các biến
cần kết nối, thiết lập cấu hình PLC cho File OPC.
Để tạo file mới ta chọn biểu tượng:
Hoặc click phải chuột vào cửa sổ Project Explorer/chọn Insert/ Project
Wizard…

Ta có cửa sổ thiết lập sau:

Ta chọn loại PLC mà mình sử dụng đây ta chọn loại PLC của Mitsubishi sau
đó click next ta có cửa sổ sau:
Ở cửa sổ này ta chọn giao thức kết nối của loại PLC đó ở đây ta chọn
MELSEC EZSocket kết nối truyền thông qua cáp nạp sau đó click next

Ta dùng phần mềm Gx developer để lập trình và chạy mô phỏng nên ta chọn
như trên.
Sau đó click Finish ta được cửa sổ sau:
Để tạo biến liên kết với PLC chọn mục Tag trên cửa sổ sau đó chọn biểu

tượng ta có cửa sổ sau:

Vì lúc đầu ta chọn loại PLC là của Mitsu nên ngõ vào ra cũng giống PLC
mitsu:
Tag name: là tên biến cần kết nối với PLC ta tùy đặt.
Description: ta viết ghi chú vào để hiểu rõ thêm về biến đó, không viết cũng
được.
Device Type: Tên biến mà ta muốn giám sát ở PLC( X ,Y, D, M)
Device NO. : giá trị của biến đó (0,1,2…)
Data Type: loại dữ liệu của biến mà ta cần liên kết( Bool, Byte, Ubyte, Short,
Ushort…)
Attribute: cách thức ta cập nhật dữ liệu
+ Read/Write: đọc và ghi dữ liệu đến PLC
+ Read Only: chỉ đọc dữ liệu từ PLC về
+ Write Only: chỉ ghi dữ liệu xuống PLC
Caculation: cách tính toán dữ liệu ( Hex, Dec, Binary…)
Sau khi điền đầy đủ thông tin ta click finish để hoàn tất
Để tạo thêm biến ta làm tương tự
Tab Device: kiểm tra kết nối PLC với OPC ta click vào Connection Test

Tab Port: ở tab này ta có thể thay đổi loại PLC trong mục PLC Type theo đúng
phần cứng thực tế

Tab Device Option:


Ở mục này ta cần lưu ý 2 mục Application Name và Topic Name vì khi kết
nối với Intouch ở phần Add Acccess Name ta cần điền 2 mục này phải giống
nhau như ở phần mềm OPC mới kết nối được.

Sau khi thiết lập xong để mô phỏng ta chọn biểu tượng để tắt mô phỏng
ta làm tương tự.
PHẦN II: MỘT SỐ BÀI TẬP THỰC HÀNH
Trong các chương trước chúng ta đã tìm hiểu phần lý thuyết Intouch. Phần
sau, hướng dẫn thực hành với phiên bản Intouch 10.1. Về mặt kỹ thuật nếu
máy bạn dùng phiên bản Intouch 10.1, hay Intouch 9.5 không có sự khác biệt
nhiều về giao diện.Phần này sẽ giúp các bạn làm quen với các thao tác cơ bản
như: khởi động chương trình, tạo 1 ứng dụng mới, thao tác trên các thanh công
cụ của chương trình, cách thiết lập biến, tạo liên kết các đối tượng, chạy mô
phỏng, kết nối biến I/O qua các phần mềm OPC .
BÀI 1: THIẾT KẾ GIAO DIỆN ĐIỀU KHIỂN ĐỘNG CƠ VÀ BỒN
NƯỚC
Yêu cầu: Thiết lập giao diện điều khiển động cơ và bồn nước như sau:
Khi nhấn Start thì động cơ hoạt động, đèn star sáng. Hiển thị giá trị mực nước
hiện tại trong bồn.
Khi nhấn Stop thì động cơ ngưng hoạt động. Và không cho phép nhập giá trị
mực nước trong bồn.
Các bước thực hiện như sau:
Trước tiên ta thiết kế giao diện động cơ và bồn nước:
Khởi động chương trình bằng cách: nhấp chuột vào
Start/Program/Wonderware/Intouch

Biểu tượng Intouch xuất hiện và cho biết chương trình đang khởi động.
Sau đó cửa sổ Intouch application manager hiện lên, đây là nơi chứa các ứng
dụng đã tạo lúc trước của Intouch:
Để tạo 1 ứng dụng mới ta Click phải chuột chọn New:

Hộp thoại Creat New Application xuất hiện ta chọn Browse để chọn nơi lưu
file ứng dụng được tạo ta có cửa sổ Browse For Folder

Ta chọn nơi chứa file ứng dụng sau đó click Ok , Click Next
Giao diện Create New Application thứ 2 hiện ra ta đặt tên thư mục chứa ứng
dụng với tên BaiTap1 sau đó click Next ta có giao diện Create New
Application thứ 3:
Ta đặt tên ứng dụng trong mục Name với tên là
DIEUKHIENDONGCOBONNUOC sau đó click Finish để hoàn thành việc
tạo ứng dụng sau khi tạo xong ta có cửa sổ Intouch Application Manager
như hình:

Để vào cửa sổ thiết kế giao diện Window Maker ta Click chuột phải vào tên
ứng dụng vừa tạo ra, chọn WindowMaker hoặc double click chuột trái vào
ứng dụng vừa tạo ra, để vào môi trường thiết kế WindowMaker:
Thiết kế giao diện đồ họa:
Để thiết kế giao diện ta cần phải tạo 1 Form ứng dụng ta Click phải chuột
trong cửa sổ Windows chọn New hộp thoại Window Properties hiện ra:

Trọng mục Name ta đặt tên cửa sổ ứng dụng là THIETKEGIAODIEN, mục
Comment ta đặt là MO HINH DIEU KHIEN DONG CO VA BON NUOC
sau đó click Ok
Giao diện thiết kế đồ họa như hình :
Trên thanh công cụ ta chọn biểu tượng Winzards… để mở hộp thoại
WizardSelection đây là nơi chứa thư viện hỗ trợ của Intouch :

Để lấy các biểu tượng động cơ và bồn nước trong hộp thoại thư viện đưa ra
màn hình thiết kế, ta chọn mục Symbol Factory sau đó nhấp đúp vào biểu
tượng Symbol Factory sau đó chọn vị trí đặt trên giao diên rồi nhấp trái chuột,
xuất hiện cửa sổ Symbol Factory by Reichard Software:
Thiết lập ảnh động cơ
Trong mục categories ta chọn Motors thì ở mục Symbol xuất hiện hình ảnh
một số động cơ( ngoài ra ta cũng có thể vào Pumps để xem các động cơ) để
lấy động cơ ra màn hình ta nhấp chọn động cơ rồi click ok, hay nhấp đúp vào
động cơ cần chọn. Để lấy tiếp hình ảnh khác ta làm tương tự các bước trên:
Trên giao diện thiết kế hình ảnh động cơ hiển thị như hình dưới. Để phóng lớn
hoặc thu nhỏ hình ảnh động cơ ta chọn động cơ nhấp phải chuột chọn
cell/symbol – Break cell như hình, sau đó nhấp phải vào các nút vuông ở các
góc rồi kéo rê chuột lớn hoặc thu nhỏ tùy ý.

Thiết lập ảnh bồn nước


Ta làm tương tự như khi lấy động cơ nhưng trong mục categories ta chọn
Tanks thì cửa sổ Symbol sẽ xuất hiện các hình bồn nước:

Để đưa bồn nước ra giao diện ta làm như đưa động cơ ra giao diện.
Trên giao diện sẽ xuất hiện động cơ và bồn nước như hình để di chuyển ta
chọn đối tượng rồi rê chuột đến vị trí thích hợp trên màn hình.
Thiết lấp các ống dẫn
Trên cửa sổ Symbol Factory by Reichard Software trong mục categories ta
chọn Pipes thì ở mục Symbol xuất hiện hình ảnh một số ống dẫn có hình dáng
khác nhau. Để lấy ống dẫn ra màn hình ta nhấp chọn động cơ rồi click ok, hay
nhấp đúp vào ống dẫn cần chọn.
Lúc này ống dẫn xuất hiện như hình ta phóng ta hay thu nhỏ tương tự như
trình bày ở trên:

Sau khi lấy đầy đủ các ống dẫn ra màn hình nếu thiếu ống dẫn nào thì nhấp
phải vào ống dẫn đó chọn Duplicate như hình:
Thiết lập Van
Trên cửa sổ Symbol Factory by Reichard Software trong mục categories ta
chọn Valves thì ở mục Symbol xuất hiện hình ảnh một số van có hình dáng
khác nhau. Để lấy van ra màn hình ta nhấp chọn động cơ rồi click ok, hay
nhấp đúp vào van cần chọn.

Bạn có thể phóng lớn, thu nhỏ, sao chép, di chuyển và xóa các ảnh trên giao
diện thiết kế sao cho phù hợp với mô hình.
Trên màn hình làm việc lắp đặt các hình ảnh như hình dưới:
Thiết lập tên sơ đồ, tên thiết bị, giá trị
Trên thanh Drawing ta chọn Text sau đó chọn vị trí đặt tên trên giao diện:

Sau đó đánh chữ cần đặt tên. Để thay đổi Font chữ ta nhấp chọn text trên giao
diện sau đó click phải chọn font sổ sau:

Ta chọn font và cở chữ thích hợp, muốn thay đổi màu cho chữ ta nhấp vào
color rồi chọn màu thích hợp sau đó chọn Ok để Save.
Để chỉnh sửa chữ trong text ta nhấp chuột phải vào text chọn Substitute/
Substitute String

Ta có cửa sổ sau:
Sau khi chỉnh sửa xong nhấp OK
Nếu ta muốn định dạng text nhập vào là chuỗi số thì ta đánh là ####.## trước
dấu chấm là phần nguyên sau dấu chấm là phần thập phân.
Thiết lập thanh biểu diễn giá trị mực nước bồn
Ta chọn Rounded Rectangle sau kéo kéo vẽ khung trên giao diện thành hình
thích hợp.

Để đổi màu cho thanh ta chọn đối tượng sau đó chọn biểu tượng Fillcolor sau
đó chọn màu thích hợp.

Như hình sau:


Thiết lập các nút nhấn
Trên giao diện trên thanh Drawing ta chọn button sau đó rê chuột vẽ kích
thước nút nhấn tùy ý

.
Để chỉnh sửa tên nút nhấn ta nhấp phải vào đối tượng chọn Substitute/
Substitute String sau khi chỉnh sửa xong nhấp OK.

Nếu muốn thay đổi font chữ, màu sắc,cở chữ ta click phải vào đối tượng chọn
font, cở chữ, và màu thích hợp.
Ngoài ra ta cũng có thể lấy nút nhấn trong Wizards…sau đó chọn buttons tùy
ý sau đó click OK trên giao diện hiển thị nút nhấn vừa lấy.
Ta có giao diện sau:

Sau khi thiết kế giao diện đúng yêu cầu tiếp theo ta tạo các biến cần sử dụng
trên giao diện:
Theo yêu cầu ta tạo 3 biến I/O Discrete để liên kết với PLC: NutStar, NutStop,
Dongco
Và một biến I/O Interger: Mucnuoc để thể hiện giá trị mực nước trong bồn.
Tạo biến I/O Discrete: NutStar, NutStop, Dongco
ta di chuyển chuột đến cửa sổ Tools sau đó double click vào Tagname
Distionary hoặc vào menu Special / Tagname Dictionary ta có cửa sổ sau:

Click vào New để tạo tag mới:

Ta đặt tên biến NutStar ở mục Tagname sau đó chọn Type để chọn loại
biến:

Biến này ta dùng để kết nối với PLC nên ta chọn loại biến là I/O Discrete sau
đó chọn OK
Vì đây là biến kết nối với PLC nên có mục Access Name còn biến chỉ dùng
trong Intouch thì không cần. Ta chọn vào mục Access Name để tạo nhóm liên
kết với PLC

Sau đó chọn Add để tạo Access Name mới

Bên phải là thiết lập ở OPC còn bên trái là bên Intouch. Ở phần lý thuyết có
hướng dẫn tạo liên kết giữa OPC với Intouch ta cần lưu ý 2 mục là Application
Name và Topic Name ta cần điền 2 mục này giống nhau để tạo liên kết. Còn
mục Access trong Intouch ta đặt tên nhóm biến là KetnoiPLC như hình. Sau
đó nhấp OK/click Close

Item ta nhập tên biến mà ta tạo ở phần mềm OPC để kết nối với PLC sau đó
click Save để lưu.Ta làm tương tự để tạo biến I/O discrete NutStop, Dongco
Tạo biến I/O Interger: ta làm tương tự các bước trên nhưng loại biến ta chọn là
I/O Interger

Lưu ý ta cần nhập mục Min Raw và Max Raw là giá trị lớn nhất và nhỏ nhất
mà ta lấy từ PLC về sau đó click save để lưu. Click close để thoát tạo biến.
Tiếp theo ta tạo liên kết giữa các biến với các đối tượng trên giao diện.
Để tạo liên kết cho đối tượng nào ta nhấp đúp chuột vào đối tượng đó.
Tạo liên kết nút nhấn Start:
Ta double click vào nút nhấn Start ta có cửa sổ sau:
Khi nhấn nút thì động cơ hoạt động nên ta thiết lập khi nhấn thì biến NutStart
lên 1 và PLC nhận được và thực hiện chương trình nên ta thiết lập như sau:
Vì là nút nhấn discrete nên ta chọn mục là Touch Pushbuttons/Discrete
Value

Để nhập biến ta double click vào ô tagname sau đó nhấn select và chọn biến
NutStart tiếp theo click ok/close/ok. Ở mục Action tùy vào điều kiện mà ta
chọn từng việc khi nút được nhấn. Vì đây là nút nhấn nên ta chọn là Direct.
Tương tư ta thiết lập cho nút Stop
Tạo liên kết cho đèn Star và đèn Stop trên giao diện. Đèn Star và đèn Stop sẽ
được điều khiển theo biến Dongco. Vì đèn để thấy được thì phải đổi màu nên
khi nhấp đúp chuột vào đèn ta có cửa sổ sau ta chọn Fillcolor/chọn Disrecte

Sau đó chọn Next Link

Ta nhập điều kiện vào mục Expression: động cơ hoạt động thì đèn star đổi
màu nên ta điền vào là Dongco==1
Tương tự ta tạo liên kết cho đèn Stop
Tạo liên kết cho biến Mucnuoc:
Để tạo liên kết ta nhấp đúp chuột vào Text cần đặt thuộc tính.Đối với biến
analog thì ta chọn những thuộc tính có analog:

Nếu nhập analog thì ta chọn là touch links/analog sau đó chọn tag analog

Sau đó click ok. Với Min value: là giá trị thấp nhất
Max value: là giá trị cao nhất
Còn nếu để hiển thị analog ta chọn value display/analog sau đó chọn tag
analog click OK
Thiết lập mực nước tăng biến Mucnuoc và dừng khi ta nhấp Stop bơm.
Ta nhấp đúp chuột vào cột nước vào Percent Fill/ Vertical hoặc
Horizontal là làm đầy theo chiều ngang và chiều dọc.
Ở bài này ta chọn làm đầy theo chiều dọc thì ta vào Vertical ta có cửa sổ sau:
Ta nhấp đúp vào Expression sau đó chọn biến cần thiết lập là Mucnuoc.
Background Color là thiết lập màu nền của cột nước.
Sau khi tạo liên kết các biến xong ta mở phần mềm OPC lên để tạo liên kết
OPC với Intouch và tạo các biến liên kết với PLC ở đây ta dùng phần mềm
DeviceXPlorer OPC Server
Vào Start/Programs/DeviceXPlorer OPC Server/ DeviceXPlorer OPC
Server để khởi động chương trình OPC
Sau khi khởi động chương trình ta có cửa sổ sau

Để kết nối với PLC ta phải tạo một File ứng dụng để quản lý tất cả các biến
cần kết nối, thiết lập cấu hình PLC cho File OPC.

Để tạo file mới ta chọn biểu tượng:


Hoặc click phải chuột vào cửa sổ Project Explorer/chọn Insert/ Project
Wizard…

Ta có cửa sổ thiết lập sau:


Ta chọn loại PLC mà mình sử dụng đây ta chọn loại PLC của Mitsubishi sau
đó click next ta có cửa sổ sau:

Ở cửa sổ này ta chọn giao thức kết nối của loại PLC đó ở đây ta chọn
MELSEC EZSocket kết nối truyền thông qua cáp nạp sau đó click next
Sau đó click Finish ta được cửa sổ sau:

Ta dùng PLC Fx để lập trình nên ta vào Port để thiết lập lại PLC
Ta thiết lập lại CPU Type là: FXCPU
Sau đó vào File/Save để lưu.

Để tạo biến liên kết với PLC ta chọn mục Tags và click vào biểu tượng
để tạo biến:
Tương tự ta tạo biến NutStop là X1, và Dongco là Y1

Lưu ý những biến trọng mục Name của OPC cần liên kết với những biến trong
mục Item của OPC cần liên kết với nhau phải giống nhau.
Sau khi tạo biến xong ta chọn Tab Device OPC và kiểm tra mục Application
Name và mục Topic Name có giống trong Access Name của Intouch không.

Sau đó ta viết chương trình trong PLC tác động vào X0 thì bật Y0, tác động
vào X1 thì tắt Y0 như hình sau đó chạy mô phông để kết nối với Intouch.
Chạy mô chương trình PLC và mở OPC và giao diện lên để kiểm tra.
Ta mới chỉ lập trình trên PLC là ON/OFF Y0 tương ứng với ON/OFF động cơ,
đèn Start/ Stop trên giao diện bây giờ ta dùng ngôn ngữ Scripts để lập trình tạo
thêm hiệu ứng cho giao diện: Khi động cơ hoạt động thì mực nước trong bồn
dâng lên và khi động cơ dừng thì mực nước không dâng nữa và giá trị mực
nước hiển thị trong ô TEXT
Để viết chương trình tạo hiệu ứng ta nhấp phải chuột ở cửa sổ giao diện chọn
WindownScript.
Ta chọn mục Condition Type: While Showing chương trình sẽ được thực thi
khi ta chạy Runtime lưu ý chu kỳ quét Every phải khác 0.
Sau đó ta viết chương trình vào và nhấn Convert để kiểm tra: Dựa vào yêu
cầu đề bài ta có chương trình sau:
IF dongco= =1 THEN
Mucnuoc=Mucnuoc+50;
ENDIF;
Khi động cơ hoạt động thì mực nước trong bồn dâng lên.
Bài Tập ứng dụng:
1.Tương tự ta viết thêm đoạn chương trình nếu mực nước dâng lên đến
giá trị mà ta đặt thì không tăng nữa và dừng động cơ.
2. Thiết kế giao diện như hình sau và lập trình theo yêu cầu:
Yêu cầu: 1.Thiết kết giao diện tạo liên kết và lập trình mô phỏng trên giao
diện:
Khi nhấn START thì đèn START sáng, đèn STOP tắt, động cơ hoạt động và
mực nước trong bồn dâng lên.
Khi nhấn STOP thì đèn STOP sáng, đèn START tắt, động cơ ngưng hoạt
động, mực nước không dâng nửa.
Khi mực nước dâng đến 9000 thì không dâng nửa, sau đó dừng động cơ.
Khi nhấn VAN XA thì mực nước giảm và giảm đến 0 thì không giảm nửa.
BÀI 2: THIẾT KẾ GIAO DIỆN ĐIỀU KHIỂN BĂNG TẢI

Bài này chúng ta luyện tập viết chương trình Scripts để tạo hiệu ứng chuyển
động cho đối tượng.
Yêu cầu:
Khi nhấn nút Start của nút 1 thì đèn Start nút 1 sáng, băng tải dọc 1 hoạt động
cửa bên cấp sản phẩm mở ra, sản phẩm chạy từ trong ra ngoài.
Khi sản phẩm tới vị trí băng tải ngang thì băng tải dọc 1 ngưng hoạt động đèn
Stop nút 1 sáng, đèn Start nút 1 tắt.
Khi nhấn nút Start của nút 2 thì đèn Start nút 2 sáng, băng tải ngang hoạt động
sản phẩm di chuyển sang phải.
Khi sản phẩm di chuyển tới cuối vị trí băng tải ngang thì dừng hoạt động sản
phẩm nằm ngay tay gạt. Băng tải dọc 2 hoạt động, đèn start nút 2 tắt và đèn
Stop nút 1 sáng.
Khi nhấn tay gạt thì tay gạt đưa ra, sản phẩm di chuyển vào trong, khi sản
phẩm di chuyển gần tới cửa thì cửa mở ra sau khi sản phẩm qua thì đóng lại.
Khi thả tay gạt ra thì tay gạt rút về.
Thiết kế giao diện:
Khởi động chương trình bằng cách: nhấp chuột vào
Start/Program/Wonderware/Intouch

Biểu tượng Intouch xuất hiện và cho biết chương trình đang khởi động.
Sau đó cửa sổ Intouch application manager hiện lên, đây là nơi chứa các ứng
dụng đã tạo lúc trước của Intouch:

Để tạo 1 ứng dụng mới ta Click phải chuột chọn New:


Hộp thoại Creat New Application xuất hiện ta chọn Browse để chọn nơi lưu
file ứng dụng được tạo ta có cửa sổ Browse For Folder

Ta chọn nơi chứa file ứng dụng sau đó click Ok , Click Next
Giao diện Create New Application thứ 2 hiện ra ta đặt tên thư mục chứa ứng
dụng với tên BaiTap1 sau đó click Next ta có giao diện Create New
Application thứ 3:

Ta đặt tên ứng dụng trong mục Name với tên là GIAO DIEN ĐIEU KHIEN
BANG TAI
Sau đó click Finish để hoàn thành.
Ta có cửa sổ sau ta thấy thêm một ứng dụng mới vừa tạo ra:
Sau khi tạo xong mở cửa sổ Window Marker để thiết kế giao diện: tạo cửa sổ
window mới với tên là Giao dien bang tai
Để thay đổi màu nền cửa sổ Window ta nhấp phải chuột trên giao diện chọn

Window Properties hay nhấp chọn biểu tượng trên thanh công cụ sau đó
chọn màu thích hợp.
Sau đó ta dùng các công cụ vẽ để các theo giao diện:

You might also like