Upload
hoangthien
View
216
Download
1
Embed Size (px)
Citation preview
Đồ án 2D GVHD: Lê Long Hồ
Page 1
MỤC LỤC
Lời mở đầu
Lời cảm ơn
Nhận xét
Phần I: Hệ thống Scada
Chương I: Giới thiệu.
I.1 khái niệm
I.2 Phân loại
I.3 Cấu trúc một hệ thống Scada.
Chương II: Phần mềm Scada (Intouch Wonderware v10.1)
II.1 Giới thiệu
II.2 Giới thiệu về tập lệnh
II.3 Tạo và chỉnh sửa các Script
II.4 Script Triggers.
II.5 Ngôn ngữ lập trình.
Chương III: Tổng quan về PLC và Module mở rộng.
III.1 Giới thiệu.
III.2 Ưu – Nhược điểm.
III.3 Cấu trúc của PLC
III.4 PLC Mishubishi
Phần II: Hệ thống tủ nhiệt và bồn trộn.
Phần III: Tổng kết
Đồ án 2D GVHD: Lê Long Hồ
Page 2
LỜI MỞ ĐẦU
Đã từ lâu con người đã đưa máy móc vào trong lao động sản xuất, cũng từ đó mà chúng ta
ngày càng đưa máy móc vào làm thế cho con người ở những công việc nặng nhọc, nguy hiểm, hay
đơn giản là những công việc mang tính chất lặp đi lặp lại nhiều lần như công việc phun nước tưới
cây ở công viên, vườn hoa hay như việc báo chuông ở công sở, trường học….
Ngày nay chúng ta sử dụng tự động hóa ngày càng cao vào trong đời sống sinh hoặt, sản
xuất và với yêu cầu điều khiển tự động, linh hoạt, tiện lợi, gọn nhẹ. Mặt khác nhờ vào công nghệ
thông tin, công nghệ điện tử phát triển mạnh mẽ đã giúp cho việc ra đời một thiết bị điều khiển khả
trình PLC như một điều tất yếu.
Để thực hiện công việc một cách khoa học nhằm đạt được số lượng sản phẩm lớn, nhanh,
đạt được yêu cầu kĩ thuật đặt ra mà lại hiệu quả về mặt kinh tế. Từ đó, khái niệm về hệ thống
Scada( hệ thống giám sát và thu thập dữ liệu) ra đời. Nó giúp con người có thể quản lý, giám sát và
thu thập dữ liệu tốt hơn nhờ vào các các cảm biến và các cơ cấu chấp hành. Một hệ thống Scada cơ
bản gồm có các thành phần như: trạm điều khiển giám sát trung tâm, trạm thu thập dữ liệu trung
gian, hệ thống truyền thông, giao diện người – máy HMI. Hiện nay, trên thế giới có nhiều các phần
mềm Scada như Intouch Wonderware, Win CC,…Sau đây chúng em tìm hiểu về một hệ thống
Scada nhỏ sử dụng phần mềm Intouch Wonderware, PLC Mitshubishi…cho hệ thống lò nung nhiệt
và bồn pha chế các hỗn hợp theo tỉ lệ.
Do hoàn thành trong thời gian ngắn và những giới hạn về mặt kiến thức nên chúng em
không chánh khỏi những thiếu sót. Rất mong các thầy cô đóng góp ý kiến để chúng em có thể hoàn
thiện hơn ở đồ án chuyên ngành. Chúng em xin ghi nhận và chân thành cảm ơn.
Đồ án 2D GVHD: Lê Long Hồ
Page 3
LỜI CẢM ƠN
Để hoàn thành đồ án môn học này một cách nhanh nhất và đạt kết quả cao nhất, chúng em được
sự giúp đỡ của thầy cô trong khoa cùng các thầy cô giáo trong trường. Chúng em xin gửi lời cám
ơn đến :
- Giảng viên Lê Long Hồ, người đã tận tình giúp đỡ chúng em trong quá trình hoàn thiện đồ
án.
- Các thầy cô trong thư viện, người đã hướng dẫn chúng em trong cách tìm tài liệu liên quan
đến đề tài đồ án.
- Các thầy cô trong khoa đã tạo điều kiện cho chúng em tổng hợp lại những gì đã học một
cách khoa học nhất.
Cuối cùng chúng em xin chúc sức khỏe đến các thầy cô.
Đồ án 2D GVHD: Lê Long Hồ
Page 4
NHẬN XÉT
(Giáo viên hướng dẫn)
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
TP.HCM, ngày… tháng… năm 2013
Giáo viên hướng dẫn
Đồ án 2D GVHD: Lê Long Hồ
Page 5
NHẬN XÉT
(Giáo viên phản biện)
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
TP.HCM, ngày … , tháng …, năm 2013
Giáo viên phản biện
Đồ án 2D GVHD: Lê Long Hồ
Page 6
PHẦN I: HỆ THỐNG SCADA.
CHƯƠNG I: GIỚI THIỆU
I.1 KHÁI NIỆM:
SCADA viết tắt của Supervisory Control And Data Acquisition là một hệ thống điều khiển
giám sát và thu thập dữ liệu, nói một cách khác là một hệ thống hỗ trợ con người trong việc giám
sát và điều khiển từ xa, ở cấp cao hơn hệ điều khiển tự động thông thường. Để có thể điều khiển và
giám sát từ xa thì hệ SCADA phải có hệ thống truy cập, truyền tải dữ liệu cũng như hệ dao diện
người- máy (HMI- Human Machine Interface).
Trong hệ thống điều khiển giám sát thì HMI là một phần quan trọng không chỉ ở cấp điều
khiển giám sát mà ở các cấp thấp hơn người ta cũng cần HMI để phục vụ cho việc quan sát thao tác
vận hành ở cấp điều khiển cục bộ. Vì lí do giá thành, đặc điểm kỹ thuật nên các màn hình vận hành
(OP- Operation Panel), màn hình chạm (TP-Touch Panel), multi panel chuyên dụng được sử dụng
nhiều và chiếm vai trò quan trọng hơn.
Nếu nhìn nhận SCADA theo quan điểm truyền thống thì nó là một hệ thống mạng và thiết bị
có nhiệm vụ thuần túy là thu thập dữ liệu từ các trạm ở xa và truyền tải về khu trung tâm để xử lý.
Trong các hệ thống như vậy thì hệ truyền thông và phần cứng được đặt lên hàng đầu và cần sự
quan tâm nhiều hơn. Trong những năm gần đây sự tiến bộ vượt bậc của công nghệ truyền thông
công nghiệp và công nghệ phần mềm trong công nghiệp đã đem lại nhiều khả năng và giải pháp
mới nên trọng tâm của công việc thiết kế xây dựng hệ thống SCADA là lựa chọn công cụ phần
mềm thiết kế giao diện và giải pháp tích hợp hệ thống.
I.2 PHÂN LOẠI:
Các hệ thống SCADA được phân làm 4 nhóm chính với các chức năng :
Hệ thống SCADA mờ (Blind): Đây là hệ thống đơn giản, nó không có bộ phận giám sát.
Nhiệm vụ chủ yếu của hệ thống này là thu thập và xử lý dử liệu bằng đồ thị. Do tính đơn giản nên
giá thành thấp.
Hệ thống SCADA xử lý đồ họa thông tin thời gian thực: Đây là hệ thống SCADA có khả
năng giám sát và thu thập dữ liệu. Nhờ tập tin cấu hình của máy khia báo trước đó mà hệ thống có
khả năng mô phỏng tiến trình hoạt động của hệ thống sản xuất. Tập tin cấu hình ghi lại trạng thái
hoạt động của hệ thống. Khi xảy ra sự cố thì hệ thống có thể báo cho người vận hành để xử lý kịp
thời. Cũng có thể hệ sẽ phát ra tín hiệu dừng tất cả hoạt động của máy móc.
Đồ án 2D GVHD: Lê Long Hồ
Page 7
Hệ thống SCADA độc lập: Đây là hệ thống SCADA có khả năng giám sát và thu thập dữ
liệu với một bộ xử lý. Hệ này chỉ có thể điều khiển được một hoặc hai máy móc. Vì vậy hệ này chỉ
phù hợp với những mô hình sản xuất nhò, sàn xuất chi tiết.
Hệ thống SCADA mạng: Đây là hệ có khả năng giám sát và thu thập dữ liệu với nhiều bộ xử
lý. Các máy tính giám sát được nối mạng với nhau. Hệ này có khả năng điều khiền được nhiều
nhóm máy móc tạo nên dây chuyền sàn xuất. Qua mạng truyền thông hệ thống được kết nối với
phòng quản lý , phòng điều khiển, có thể nhận quyết định điều khiển trực tiếp từ phòng quản lý
hoặc từ phòng thiết kế. Từ phòng điều khiển có thể điều khiển hoạt động của các thiết bị ở xa.
I.3 CẤU TRÚC MỘT HỆ THỐNG SCADA:
Trong hệ thống điều khiển giám sát, các cảm biến và cơ cấu chấp hành đóng vai trò là giao
diện giữa thiết bị điều khiển với quá trình kỹ thuật. Còn hệ thống điều khiển giám sát đóng vai trò
là giao diện người-máy. Các thiết bị và bộ phận của hệ thống được ghép nối với nhau theo kiểu
điểm-điểm hoặc qua mạng truyền thông. Tín hiệu thu được từ cảm biến có thề là tín hiệu nhị phân,
tín hiệu số hoặc tương tự. Khi xử lý trong máy tính, chúng phải được chuyển đổi cho phù hợp với
các chuẩn giao diện vào/ra của máy tính.
Các thành phần cơ bản trong hệ thống:
Trạm điều khiển giám sát trung tâm: là một hay nhiều máy chủ trung tâm (central host
computer server).
Trạm thu thập dữ liệu trung gian: Là các khối thiết bị vào ra đầu cuối từ xa RTU (Remote
Terminal Units) hoặc là các khối điều khiển logic khả trình PLC (Programmale Logic Controllers)
có chức năng giao tiếp với các thiết bị chấp hành (cảm biến cấp trường, các hộp điều khiển đóng
cắt và các van chấp hành…).
Hệ thống truyền thông: bao gồm các mạng truyền thông công nghiệp, các thiết bị viễn thông
và các thiết bị chuyển đổi dồn kênh có chức năng truyền dữ liệu cấp trường đến các khối điều khiển
và máy chủ
Giao diện người - máy HMI (Human - Machine Interface): Là các thiết bị hiển thị quá trình
xử lí dữ liệu để người vận hành điều khiển các quá trình hoạt động của hệ thống.
Đồ án 2D GVHD: Lê Long Hồ
Page 8
CHƯƠNG II: PHẦN MỀM SCADA
INTOUCH WONDERWARE
(Version 10.1)
II.1 GIỚI THIỆU:
Trong 25 năm qua, InTouch Wonderware luôn là một phần mềm giao tiếp người - máy
(HMI) đứng đầu thế giới, với khả năng sử dụng dễ dàng, luôn đổi mới dẫn đầu thị trường, bảo vệ
tuyệt đối các giá trị đầu tư, đồ họa tươi sáng, kết nối vượt trội, hỗ trợ tốt nhất cho các ngành công
nghiệp với một hệ sinh thái rộng mở.
Nó tạo ra các giao diện người và máy (HMI) trong môi trường WINDOWS một cách dễ
dàng và nhanh chóng. InTouch có 3 thành phần chính InTouch Application Manager,
WindowMaker và WindowViewer
- InTouch Application Manager: sắp xếp các ứng dụng mà chúng ta đã tạo ra. InTouch
Application Manager cũng được dùng để đặt cấu hình cho WindowViewer như một NT Service.
Mở các tiện ích DBDUMP databases và DBLoad databases.
Đồ án 2D GVHD: Lê Long Hồ
Page 9
- WindowMaker: là môi trường tạo và phát triển các ứng dụng. Các đối tượng đồ họa được
tạo ra rất linh hoạt, các cửa sổ hiển thị có thể kết nối với các hệ thống I/O công nghiệp và các ứng
dụng khác của Windows.
- WindowViewer: là môi trường thời gian thực dùng để hiển thị các cửa sổ đồ họa đã được
tạo ra trong WindowMaker và WindowViewer sẽ thực hiện hiệu ứng InTouch QuickScript hoàn
tất quá trình ghi nhận và báo cáo dữ liệu trong quá khứ, xử lý quá trình ghi nhận và báo cáo các báo
động.
Đồ án 2D GVHD: Lê Long Hồ
Page 10
II.2 GIỚI THIỆU VỀ TẬP LỆNH:
Bạn có thể sử dụng các câu lệnh trong Intouch, QuickScript, để xây dựng nhiều những ứng
dụng. Có bảy loại ngôn ngữ và nhiều chức năng được xây dựng sẵn.
Bảy loại loại script được xác định bởi những gì mà chúng có thể thực hiện. Ví dụ, các script
sẽ thực thi khi một ứng dụng chạy, dừng lại hoặc tiếp tục chạy. Dữ liệu các script thực hiện thay
đổi khi một item đã biết hoặc dữ liệu thay đổi. Cửa sổ script thực thi khi một cửa sổ mở ra hoặc,
đóng lại hoặc vẫn đang mở.
Các chức năng được xây dựng trong script bao gồm chức năng toán học, hàm lượng giác,
chức năng chuỗi và các chức năng khác. Sử dụng những chức năng này giúp bạn tiết kiệm thời gian
trong việc viết ứng dụng.
Intouch script có thể bao gồm: gắn và liên kết các đối tượng (OLE) và điều khiển hoạt động
X. Bạn có thể sử dụng câu điều kiện, vòng lặp, và các biến địa phương trong ngôn ngữ script để tạo
các hiệu ứng phức tạp trong ứng dụng của bạn.
II.2.1 Giới thiệu ngôn ngữ basic:
Trước khi bạn bắt đầu với script, bạn nên biết:
- Một script là một quy trình vận hành một ứng dụng làm việc gì đó.
- QuickScript là ngôn ngữ lập trình cho giao Intouch HMI.
- Một function là một script có thể được gọi bởi một script khác. Intouch HMI đi kèm với một
số chưc năng xác định trước để bạn sử dụng.
- QuickFunction là một chức năng khả dụng được viết trong QuickScript và được lưu trong
thư viện QuickFunction. Để tạo một QuickFunction, bạn chỉ cần tạo một QuickScript và đặt tên
cho nó. Một QuickFunction có thể được gọi bởi một script khác hoặc một biểu thức có liên kết hình
ảnh động.
II.2.2 Các loại Scripts:
- Application script tiếp tục chạy trong khi WindowViewer đang chạy hoặc một khoảng thời
gian khi WindowViewer được bắt đầu hoặc đóng lại.
- Window script sẽ quét tuần hoàn khi cửa sổ Intouch mở hoặc một lần khi cửa sổ Intouch
đóng hoặc mở.
- Key script chạy một lần hoặc theo chu kì khi một số phím hoặc một tổ hợp phím đươch nhấn
hoặc nhả.
- Condition script thực thi một lần hoặc theo chu kì khi một điều kiện biết trước thỏa mãn
hoặc không thỏa mãn.
Đồ án 2D GVHD: Lê Long Hồ
Page 11
- Data change script thực hiện một lần khi giá trị của một tag biết trươc hoặc biểu thức thay
đổi.
- Action script thực hiện một lần hoặc theo chu kì khi người vận hành nhấp chuột lên đối
tượng đồ họa trên giao diện Intouch.
- ActiveX event scripts thực hiện một lần một sự kiện ActiveX xảy ra, như cách nhấp chuột
điều khiển ActiveX.
II.2.3 Tạo và soạn thảo Scripts:
Sử dụng Intouch HMI Script Editor để tạo và chỉnh sửa script trong Intouch WindowMaker:
Đây là ví dụ cho một application script. Mỗi loại script có một giao diện hộp thoại soạn thảo
riêng, với tùy chọn và sự lựa chọn là duy nhất với từng loại script.
Thanh tiêu đề của trình soạn thảo cho biết loại script mà bạn đang làm việc.
Có những lệnh tương đương và các phép toán nằm ở dưới cùng của trình soạn thảo
QuickScript mà bạn có thể nhấp chuột để chèn từ khóa, chức năng hoặc biểu tượng vào script tại vị
trí con trỏ.
Mục điều kiện bao gồm điều kiện thực thi có sẵn cho loại script đang viết.
Nút MEM OLE ở dưới cùng bên phải chỉ hiện ra nếu Manufacturing Engineering Module
(MEM) được cài đặt cùng với Intouch HMI. Click vào nút này cho phép bạn soạn thảo với MEM.
Đồ án 2D GVHD: Lê Long Hồ
Page 12
II.3 TẠO VÀ CHỈNH SỬA CÁC SCRIPT:
Các bước để tạo một script mới khác nhau tùy theo từng loại script. Nói chung, bạn có thể
mở trình soạn thảo script, chọn một loại điều kiện, nhập các câu lệnh và sau đó lưu script.
II.3.1 Mở một script để soạn thảo:
Để mở một application script :
Thực hiện một trong hai cách sau:
- Sử dụng Classic View, trong hộp thoại Script, nhấp đúp vào Application.
- Trên menu Special, tại Script và nhấp chuột vào Application Script.
Trong mục Condition Type, nhấp vào loại script muốn chỉnh sửa
Để mở một window script:
Thực hiện theo những cách sau:
- Sử dụng Classic View, trong hộp thoại Script, nhấp chuột phải lên tên window và sau đó
nhấp chuột vào Window Script.
- Sử dụng Project View, mở rộng Script và sau đó kích đúp vào script.
- Mở cửa sổ script được liên kết. Trên menu Special, tại script và sau đó kích vào Window
Script.
- Mở cửa sổ script được liên kết. Kích chuột phải lên vùng trống trong cửa sổ và sau đó kích
vào Window Script.
Trong mục Condition, nhấp vào các điều kiện để cho script chạy.
Để mở một script sự kiện ActiveX:
Thực hiện theo cách sau:
- Sử dụng Classic View, trong hộp thoại Script, mở rộng ActiveX Event và sau đó kích đúp
vào tên script.
- Sử dụng Project View, mở rộng Script và sau đó kích đúp vào script.
- Kích đúp vào đối tượng điều khiển ActiveX được liên kết. Kích vào tab sự kiện sau đó kích
đúp phần có trong tên script.
Để mở một Action script:
Mở cửa sổ chứa thành phần đồ họa action script được liên kết.
Nhấp đúp vào thành phần đồ họa cho action script được liên kết.
Trong vùng Touch Pushbutton, kích chọn Action. Trình soạn thảo script hiện lên.
Trong mục Condition Type, kích chọn hoạt động để script chạy.
Đồ án 2D GVHD: Lê Long Hồ
Page 13
Để mở Key, Condition hoặc Data change script
Thực hiện cách sau:
- Sử dụng ClassicView, trong hộp thoại Script, mở rộng mục script và sau đó kích đúp vào tên
script.
- Sử dụng Project View, mở rộng script và sau đó kích đúp vào script.
- Trên menu Special, trỏ đến Script và sau đó kích vào loại script thích hợp. Script Editor hiện
ra. Kích vào nút Browse và sau đó chon tên script.
Nếu có thể, trong danh sách Condition Type kích vào điều kiện để script chạy.
II.3.2 Kiểm tra Script cho đúng cú pháp:
Khi bạn lưu một script, Script Editor tự động kiểm tra nó cho đúng cú pháp. Nếu lỗi xuất
hiện, một tin nhắn với nhiều thông tin hiện ra. Bạn phải kiểm tra tất cả cú pháp lỗi trước khi bạn có
thể lưu script. Bạn cũng có thể tự kiểm tra trong khi bạn đang soạn thảo script.
Để tự kiểm duyệt cú pháp script: kích vào Validate.
II.3.3 In ấn các Script:
Bạn có thể in các script riêng lẻ từ Script Editor hoặc bạn có thể in tất cả các script của một
loại cụ thể bằng cách sử dụng các tính năng in ấn trong Windowmaker.
Để in một script riêng lẻ:
Mở script trong Script Editor, mở một script để chỉnh sửa.
Kích vào nút Print trong thanh công cụ. Script được in với máy in mặc định của Window.
Để in tất cả các script của một loại đặc trưng.
Trên menu File trong WindowMaker, kích Print. Hộp thoại WindowMaker Printout xuất
hiện.
Chọn hộp kiểm tra cho các loại script để in. In tất cả các script kích chọn All Scripts.
Kích Next. Hộp thoại Select Output Destination xuất hiện.
Thực hiện một trong các điều sau:
- Kích Send output to Printer.
- Kích Send output to Text File.
Kích vào nút Browse để chọn máy in hoặc tìm một tập tin.
Kích Print.
Đồ án 2D GVHD: Lê Long Hồ
Page 14
II.4 SCRIPT TRIGGERS:
Tất cả các script Intouch HMI được thực hiện bởi script khởi động. Mỗi loại script có một
hoặc nhiều cách để khởi chạy nó.
Trong Script Editor, bạn có thể chọn bất kì cái script khởi động nào bạn muốn để sử dụng để
chạy script của bạn. Bạn chọn một script khởi động dựa trên một script được thực hiện khi nào và
chạy như thế nào.
Có nhiều cách kích hoạt khác nhau dựa trên ý muốn người sử dụng, các trạng thái bên trong
và sự thay đổi của các giá trị tagname. Người dùng nhấn phím và nhấp lên đồ họa. Cách khởi động
bên trong có thể bao gồm cả WindowViewer khởi động.
II.4.1 Phân loại:
Trong InTouch HMI, script được chia thành bảy loại. Mỗi loại script có một hoặc nhiều cách
khởi động, bạn có thể lựa chọn để khởi động script.
- Một Application script có ba trạng thái: khi khởi động, khi tắt và trong khi chạy. Mỗi lần
khởi động có thể thực hiện một script khác nhau.
- Một window script có ba trạng thái: lúc hiện, lúc ẩn và trong khi hiển thị. Mỗi lần khởi động
có thể thực hiện một script khác nhau.
- Một key script có ba trạng thái: phím lên, phím xuống hoặc trong khi xuống. Mỗi lần khởi
động có thể thực hiện một script khác nhau.
- Một condition script có bốn trạng thái: đúng, trong lúc đúng, sai, trong khi sai. Mỗi lần khởi
động có thể thực hiện một script khác nhau.
- Một Data change script thực hiện khi giá trị của một tag đã biết hoặc biểu thức thay đổi.
- Một Action script thực hiện một lần hoặc có chu kì khi người điều khiển kích chuột lên biểu
tượng đồ họa của InTouch HMI.
- Một ActiveX event script thực hiện một lần khi một sự kiện Active đã biết xảy ra, chẳng hạn
như kích chuột lên điều khiển đối tượng X.
II.4.2 Chạy các script:
Đối với nhiều loại script bạn có thể sử dụng nhiều cách khởi động và kết hợp với nhiều loại
script khác nhau với mỗi cách khởi động.
Ví dụ, bạn có thể thiết lập cấu hình một application script để thực hiện một script khi
WindowViewer khởi động và script khác tuần hoàn trong khi WidowViewer đang chạy.
Đồ án 2D GVHD: Lê Long Hồ
Page 15
Chọn cách khởi động trong danh sách Condition Type để xem hiện có script có sẵn cho bộ
khởi động.
II.4.3 Chu kì thực hiện Script:
Các script thực hiện theo chu kì không thực hiện ngay sau khi kích hoạt, nhưng sau thời gian
định trước cho lần đầu.
Ví dụ, nếu bạn thiết lập cấu hình cho một key script để thực hiện mỗi 5000 ms trong khi
nhấn phím đã xác định, nó được thực hiện 5 giây sau khi nhấn và giữ phím xuống và cứ mỗi 5 giây
sau đó.
II.4.4 Thiết đặt cấu hình các Application script.
Application script có kết nối tới toàn bộ ứng dụng của InTouch HMI. Bạn có thể sử dụng
ứng dụng script để:
- Thực hiện script một lần khi WindowViewer khởi động.
- Thực hiện script theo chu kì khi WindowViewer chạy.
- Thực hiện script một lần khi WindowViewer tắt.
Thiết đặt cấu hình cho application script:
Sử dụng Classic View, trong cửa sổ Script, kích chuột phải lên Application sau đó kích
open. Hộp thoại Application hiện ra.
Đồ án 2D GVHD: Lê Long Hồ
Page 16
Trong danh sách Condition Type, kích chuột vào điều kiện cho script thực hiện.
- Kích chuột On Startup để cấu hình script thực hiện một lần khi WindowViewer khởi động.
- Kích chuột While Running để cấu hình script thực hiện theo chu kì trong khi
WindowViewer đang chạy.
- Kích chuột On Shutdown để cấu hình script thực hiện một lần khi WindowViewer tắt.
Nếu bạn chọn While Running trong bước trước, nhập một khoảng thời gian giữa 1 và
360000 ms trong hộp thoại Every. Khoảng thời gian xác định thường xuyên như thế nào để script
thực hiện.
Nhập script của bạn trong cửa sổ.
Kích OK
Để xóa một application script:
Sử dụng Classic View, trong cửa sổ Script, kích chuột phải lên Application sau đó kích
open. Hộp thoại Application hiện ra.
Trong danh sách Condition Type, kích vào điều kiện để xóa script. Script xuất hiện trong
phần chính của hộp thoại Application Script.
Trên menu Edit, kích chọn Clear. Các script chính và các thành phần liên quan sẽ bị xóa.
Giới hạn của Application Script:
Application script được thực hiện khi WindowViewer bắt đầu hoặc tắt có giới hạn về sự tác
động đến các đối tượng khác.
Bạn không thể sử dụng On Startup application script để:
- Tham khảo các phương pháp ActiveX, đặc tính hoặc sự kiện.
- Đọc từ hoặc viết để điều khiển và tagname I/O hoặc xem từ xa.
- Chạy script để thay đổi dữ liệu và script điều kiện.
Bạn không thể sử dụng On Shutdown application script để:
- Đọc từ hoặc viết để điều khiển và các tagname điều khiển hoặc xem từ xa.
- Bắt đầu các ứng dụng khác.
II.4.4 Thiết đặt cấu hình các Window Script:
Window script là những script được liên kết tới những cửa sổ cụ thể. Bạn có thể sử dụng
window script để:
- Thực hiện một script một lần khi cửa sổ InTouch đã mở.
Đồ án 2D GVHD: Lê Long Hồ
Page 17
- Thực hiện một script theo chu kì trong khi cửa sổ InTouch đang mở.
- Thực hiện script một lần khi cửa sổ InTouch đã đóng.
Chú ý:mở một cửa sổ InTouch cũng được coi là “ hiển thị cửa sổ InTouch”. Đóng cửa sổ
InTouch cũng được gọi là “ ẩn cửa sổ InTouch”.
Để thiết đặt cấu hình cho một script:
Sử dụng Classic View, trong hộp Window, kích chuột phải lên cửa sổ và sau đó kích chuột
vào Window Script. Hộp thoại Window Script for Window Name hiện ra.
Trong danh sách Condition Type, thực hiện một trong những cách sau:
- Kích chọn On Show để cấu hình một script để thực hiện một lần khi cửa sổ liên kết bắt đầu.
- Kích chọn While Showing, thiết đặt script để thực hiện theo chu kì trong khi cửa sổ liên kết
tới được mở.
- Kích chọn On Hide, thiết đặt một script để thực hiện một lần khi cửa sổ được liên kết tới
đóng.
Nếu bạn chọn While Showing trong bước trước, đánh một khoảng thời gian giữa 1 và
360000 ms trong hộp Every.
Nhập script của bạn trong cửa sổ.
Kích chọn OK.
Đồ án 2D GVHD: Lê Long Hồ
Page 18
Để xóa một window script:
Sử dụng Classic View, trong hộp Window, kích chuột phải lên cửa sổ và kích chọn Window
Script. Hộp thoại Window Script for Window Name xuất hiện.
Trong danh sách Condition Type, kích chọn script khởi động cho script để xóa. Script hiện
ra trong phần chính của hộp thoại Window Script for Window Name.
Trong menu Edit chọn Clear.
II.4.5 Thiết đặt cấu hình cho Key script:
Key script là những script được liên kết với nút nhấn của phím riêng hoặc một tổ hợp phím.
Bạn có thể sử dụng key script để:
- Thực hiện script một lần khi nhấn phím hoặc tổ hợp phím.
- Thực hiện script theo chu kì trong khi một phím hoặc tổ hợp phím được nhấn và không
nhả ra.
- Thực hiện script một lần khi một phím hoặc tổ hợp phím được nhả.
Một key script được xác định bằng tên của phím bắt đầu script.
Chú ý: nếu bạn đã thiết đặt một script hoạt động sử dụng cùng một phím hoặc một tổ hợp
phím để kích hoạt nó, key script bị bỏ qua thay vì nó được thực hiện.
Để thiết đặt một Key Script:
Sử dụng Classic View, trong hộp Script, thực hiện theo những cách sau:
- Để cấu hình một ket script mới, kích chuột phải Key sau đó chọn New. Hộp thoại Key Script
xuất hiện :
Đồ án 2D GVHD: Lê Long Hồ
Page 19
- Để thiết đặt một ket script đã có, kéo rộng Key, kích chuột phải lên tên script sau đó chọn
Edit. Hộp thoại Edir Key Script xuất hiện.
Kích chọn Key và chọn một phím từ hộp thoại Choose Key:
Ctrl và/ hoặc Shift kiểm tra hộp để gán phím điều khiển và/hoặc tổ hợp phím Shift với phím
bạn đã chọn.
Trong danh sách Condition Type, thực hiện một trong các cách sau:
- Nhấp On Key Down để thiết đặt script để thực hiện một lần khi nhấn phím hoặc tổ hợp phím
được liên kết.
- Nhấp While Down để thiếp lập script thực hiện theo chu kì trong khi phím hoặc tổ hợp phím
liên kết được nhấn.
- Nhấp On Key Up để thiếp lập script thực hiện một lần khi phím hoặc tổ hợp phím liên kết
được nhấn.
Nếu bạn chọn While Down ở bước trước, nhập khoảng thời gian giữa 1 và 360000 ms vào
trong hộp Every
Nhập script của bạn vào trong cửa sổ.
Nhấp OK.
Để xóa tất cả key script được liên kết với phím:
Sử dụng Classic View, trong hộp Script, mở rộng Key, nhấp chuột phải lên tên phím script
sau đó chọn Edit. Hộp thoại Wdit Key Script xuất hiện.
Trong danh sách Condition Type, nhấp script khởi động cho script để xóa. Script xuất hiện
trong phần chính của hộp thoại Edit Key Script.
Trên menu Edit, nhấp Clear. Script chính và các phần liện quan bị xóa.
Đồ án 2D GVHD: Lê Long Hồ
Page 20
II.4.6 Thiết đặt cấu hình cho Condition Script.
Condition Script được kích hoạt phụ thuộc khi một số điều kiện logic thỏa mãn. Sử dụng
Condition script để thực hiện một script:
- Một lần khi điều kiện thỏa mãn.
- Một lần khi điều kiện không thỏa mãn.
- Theo chu kì trong khi điều kiện biết trước thỏa mãn.
- Theo chu kì trong khi điều kiện biết trướ không thỏa mãn.
Một condition script được xác định bởi cú pháp điều kiện khởi tạo script. Cho ví dụ:
tag1>=13.
Chú ý: một script được gán điều kiện On True, chỉ thực hiện nếu điều kiện chuyển từ False
thành True. Một điều kiện được gán On False chỉ thực hiện nếu điều kiện chuyển từ True thành
False
Để cấu hình cho một condition scrip:
Sử dụng Classic View, một trong các hộp Script:
- Kích chuột phải Condition và nhấp New. Hộp thoại Condition Script xuất hiện.
- Để chỉnh sửa một condition script có sẵn, nhấp chọn biểu tượng dấu cộng tiếp đến điều kiện
và nhấp chọn Edit. Hộp thoại Edit Condition Script xuất hiện.
Trong hộp Condition, nhập biểu thức mà bạn muốn sử dụng như điều kiện.
Đồ án 2D GVHD: Lê Long Hồ
Page 21
Bạn có thể nhập một chú thích vào trong hộp Comment.
Trong danh sách Condition Type, thực hiện một trong các cách sau:
- Kích chọn On False để thiết đặt một script để thực hiện một lần khi điều kiện trở nên sai.
- Kích chọn While False, thiết lập script thực hiện theo chu kì trong khi điều kiện là sai.
- Kích chọn On True, thiết đặt script để thực hiện một lần khi điều kiện trở nên đúng.
- Kích chọn While True, thiết lập script để thực hiện theo chu kì trong khi điều kiện là đúng.
Nếu bước trước bạn chọn While false hoặc While True, nhập một khoảng thời gian giữa 1
và 360000 ms vào hộp Every.
Nhập script của bạn hoặc điều chỉnh script có sẵn trong cửa sổ.
Để xóa tất cả condition script được liên kết với các điều kiện:
- Sử dụng Classic View, trong hộp Script, mở rộng Condition, nhấp chuột phải vào tên
condition script và nhấp Delete. Khi một tin nhắn xuât hiện, nhấp chọn Yes.
Để xóa từng condition script được liên kết với một điều kiện:
- Sử dụng Classic View, trong hộp Script, mở rộng Condition, kích chuột phải lên tên key
script và nhấp Edit. Hộp thoại Edit Condition Script xuất hiện.
- Trong danh sách Condition, kích chọn script khởi động cho script để xóa. Script xuất hiện
trong phần chính của hộp thoại Edit Condition Script.
- Trên menu Edit, nhấp Clear. Script từ phần chính và các phần liên quan bị xóa.
II.4.7 Thiết đặt cấu hình cho Data Change Script
Bạn có thể sử dụng data change script để thực hiện script một lần khi một tagname đã biết
hoặc điểm trường thay đổi bởi nhiều hơn dải cố định của nó.
Một data change script được xác định bởi tagname hoặc trường tagname script khởi đầu. ví
dụ: tag1 hoặc tag2.HiHiLimit
Để thiết đặt một data change script:
Sử dụng Classic View, trong hộp Script, kích chuột phải Data change và nhấp New. Hộp
thoại Data Change Script xuất hiện:
- Trong hộp tagname[.filed], nhập một tagname hoặc trường tagname.
- Nhập script của bạn vào trong cửa sổ.
- Nhấp OK.
Đồ án 2D GVHD: Lê Long Hồ
Page 22
Để xóa một Data change script:
- Sử dụng Classic View, trong hộp Script, kéo rộng Data change. Khi một tin nhắn xuất hiện,
nhấp chọn Yes.
II.4.8 Thiết đặt Action Script.
Sử dụng action script để liên kết các người vận hành với các biểu tượng đồ họa. Bạn có thể
thiết lập một hoặc nhiều các sự kiện với một đối tượng đồ họa theo cách sau:
- Kích vào bên trái, trung tâm hoặc nút chuột phải.
- Nhấp và giữ chuột trái, giữa hoặc bên phải.
- Nhả chuột trái, giữa hoặc bên phải.
- Nhấp đúp lên chuột trái, giữa hoặc bên phải.
- Nhấn một phím hoặc một tổ hợp phím.
- Nhấn và giữ một hoặc tổ hợp phím.
- Nhả một phím hoặc một tổ hợp phím.
- Di chuyển chuột vượt quá một đối tượng,
Một Action script có thể chỉ được thiết lập trong hộp Animation Link Selection của đối tượng
đó.
Quan trọng: nếu một phím script hiện có được kích hoạt bởi một phím giống nhau hoặc một tổ
hợp phím như action script, action script được thực hiện và phím script được bỏ qua.
Đồ án 2D GVHD: Lê Long Hồ
Page 23
Để thiết lập cho một action script:
Nhấp đúp lên đối tượng đồ họa. Hộp Animation Links Selection xuất hiện:
Nhấp chọn Action, hộp thoại Touch -> Action script xuất hiện:
Đồ án 2D GVHD: Lê Long Hồ
Page 24
Trong danh sách Condition, nhấp một trong những cách sau:
Để thiết lập một script mà thực hiện với điều kiện này:
- Một lần khi nút chuột trái hoặc phím đã biết hoặc một tổ hợp phím được nhấn – nhấp chọn
On Left Click/Key Down
- Theo chu kì trong khi nút chuột trái hoặc phím đã biết hoặc một tổ hợp phím được nhấn –
nhấp While Left/Key Down.
- Một lần khi nút chuột trái hoặc phím đã biết hoặc một tổ hợp phím được nhả - nhấp chọn On
Left/Key Up/
- Một lần khi chuột trái được nhấp đúp – nhấp On Left Double Click
- Một lần khi chuột phải được nhấn – nhấp On Right Click.
- Theo chu kì trong khi chuột phải được nhấn – nhấn While Right Down.
- Một lần khi chuột phải được nhả - nhấp On Right Up.
- Một lần khi chuột phải được nhấp đúp – On Right Double Click.
- Một lần khi chuột giữa được nhấn – On Center Click.
- Theo chu kì trong khi chuột giữa được nhấn – While Center Click.
- Một lần khi chuột giữa được nhả - On Center Up.
- Một lần khi chuột giữa được nhấp đúp – On Center Double Click.
- Một lần khi di chuyển chuột qua đối tượng - On Mouse Over.
Nếu bạn chọn On Left/key Down, While Left/Key Down hoặc On Left/Key Up:
- Kích chọn Key. Hộp thoại Chooes Key hiện ra.
- Nhấp một phím.
- Chọn hộp kiểm tra Ctrl và/hoặc Shift để gán một phím điều khiển và/ hoặc thay đổi một tổ
hợp phím của bạn đã chọn.
Nếu bạn chọn While Left/Key Down hoặc While Right Down, nhập một khoảng thời gian
giữa 1 và 360000 ms trong hộp Every.
Nếu bạn chon On Mouse Over, trong hộp After, nhập số ms giữa 1 và 360000 để chạy sau
khi chuột di chuyển qua đối tượng trước khi script thực hiện.
Nhập script của bạn vào trong cửa sổ.
Nhấp OK,.
Để xóa tất cả action script có liên quan tới đối tượng đồ họa:
Nhấp đúp vào đối tượng. Hộp đặc tính của đối tượng hiện ra.
Nhấp bỏ hộp Action. Action script sẽ không thực hiện khi thời gian đang chạy. Nếu bạn
nhấp núp Action, trình soạn thảo sẽ mở ra với action script cuối cùng mà bạn đã lưa cho bất kì đối
tượng nào.
Đồ án 2D GVHD: Lê Long Hồ
Page 25
Để xóa từng cái action script:
Nhấp đúp vào đối tượng đồ họa mà có action script để xóa. Hộp đặc tính đối tượng hiện ra.
Nhấp vào nút Action. Hộp thoại Touch->Action Script hiện ra.
Trong danh sách Condition Type, nhấp vào script khởi động.
Trên menu Edit, nhấp Clear. Script từ phần chính được bỏ và các phần liên kết với nó bị
xóa.
II.4.9 Thiết lập cấu hình Active Event Script
Sử dụng ActiveX event script để chạy một script khi một sự kiện ActiveX xảy ra, các sự
kiện có thể gồm:
- ActiveX điều khiển được bắt đầu : Startup
- ActiveX điều khiển được đóng : Shutdown
- Người dùng nhấp lên ActiveX điều khiển : Click
- Người dùng nhấp đúp lên ActiveX điều khiển :Doubleclick
Một ActiveX event script được xác định bởi một tên. Theo mặc định, InTouch HMI tự động
thêm tên điều khiển và sự kiện mà script được gán với.
Ví dụ: MyActiveXScript (AlarmViewCtrl::Click).
Để thiếp lập một ActiveX event script mới.
Nhấp đúp lên ActiveX điều khiển để thiết lập.Hộp thoại đặc tính điều khiển ActiveX xuất
hiện:
Đồ án 2D GVHD: Lê Long Hồ
Page 26
Nhấp vào tab Events.
Chọn một sự kiện như click, nhấp đúp, tắt xuống hoặc khởi động lên.
Nhấp vào ô Script cho sự kiện. Dấu ngoặc vuông xuất hiện.
Nhập tên mới cho một event script và nhấp OK. Khi một tin nhắn xuất hiện, nhấp OK để tạo
một script mới. Hộp thoại Active Event Script xuất hiện.
Đồ án 2D GVHD: Lê Long Hồ
Page 27
Trong hộp Name, bạn có thể thay đổi tên các ActiveX event script.
Nhập script của bạn trong cửa sổ.
Nhấp OK.
Để chỉnh sửa các ActiveX event Script có sẵn
Sử dụng Classic View, trong hộp Script, kéo rộng ActiveX Event, nhấp chuột phải vào tên
ActiveX script và nhấp Edit.
Thay đổi những cái cần thiết cho script và nhấp OK.
Để xóa một ActiveX Event Script có sẵn.
Chắc chắn rằng không có ActiveX điều khiển đang sử dụng ActiveX event script để xóa.
Nếu có ActiveX điều khiển đang sử dụng script, lần đầu làm theo cách sau:
- Bỏ cái ActiveX evenr script có liên quan trong hộp Events của mỗi ActiveX điều khiển mà
có thể sử dụng nó.
- Chọn tất cả cửa sổ và cập nhật số lần sử dụng.
Sử dụng Classic View, trong hộp Script, kéo rộng ActiveX Event, nhấp chuột phải lên tên
của ActiveX script và nhấp Delete. Khi một tin nhắn xuất hiện, nhấp Yes. ActiveX event script bị
xóa.
II.4.10 Tạm ngưng Script khi đang Run Time:
Theo Mặc định, khi WindowView đang chạy, logic đang chạy và script đồng bộ thực hiện.
Bạn có thể tạm dừng hoạt động script tại thời gian chạy bởi logic đang dừng. Sau khi tạm dừng bạn
có thể tiếp tục cho script chạy.
Để tmaj dừng hoạt động script tại thời gian chạy từ menu.
- Trên menu Logic, nhấp Halt Logic. Các sctipt đồng bộ dừng. Các script không đồng bộ tiếp
tục chạy nhưng script không đồng bộ mới không được bắt đầu.
Để tạm dừng hoạt động script tại thời gian chạy với script:
- Ghi giá trị 0 vào tag $LogicRunning để hệ thống tạm dừng. Các Script đồng bộ ngưng chạy.
Các script không đồng bộ tiếp tục chạy nhưng các script không đồng bộ mới không bắt đầu được.
Để hoạt động script chạy trở lại tại thời gian chạy:
- Trên menu Logic, nhấp Start Logic. Hoạt động Script chạy trở lại.
Đồ án 2D GVHD: Lê Long Hồ
Page 28
Để hoạt động script chạy trở lại tại thời gian chạy với script:
- Ghi giá trị 1 vào tag $LogicRunning để tạm ngưng hệ thống. Tag hệ thống $LogicRunning
phải chứa trong script không đồng bộ đang hoạt động tại thời gian logic tạm ngưng.
II.4.11 $LogicRunning System tag
Hệ thống theo dõi và/hoặc điều khiển script đang chạy.
Sử dụng : $LogicRunning
Chú ý:
- Cài đặt giá trị 1 bắt đầu cho script chạy. Cài đặt giá trị 0 để script dừng khi đang chạy.
- Tag hệ thống này tương đương để lựa chọn Start Logic hoặc Halt Logic trên menu Logic
trong WindowView
- Bạn không thể dừng script không đồng bộ mà hiện nó đang chạy. Tuy nhiên, bạn có thể
chặn script mới chạy.
Data Type: riêng biệt ( đọc/ghi)
II.5 NGÔN NGỮ LẬP TRÌNH:
Các quy tắc, cú pháp cơ bản:
Chương trình con: Không có khái niệm riêng về trương trình con trong cùng một tập lệnh, ví
dụ thủ tục “Sub” trong Visual Basic. Cấu trúc một tập lệnh trong nhiều chương trình con, bạn phải
tạo một tùy chỉnh QuickFunction cho mỗi chương trình con.
Câu lệnh :
- Một câu lệnh có thể là một giá trị gán, một hàm gọi hoặc là một cấu trúc điều khiển.
- Mỗi câu lệnh trong một tập lệnh phải kết thúc với một dấu chấm phẩy (;).
- Bạn có thể có nhiều câu lệnh trong cùng một dòng, miễn mỗi lệnh kết thúc bằng dấu chấm
phẩy.
- Bạn có thể tản ra một lệnh qua nhiều dòng bằng các sử dụng ngắt dòng (nhấn Enter).
Thụt đầu dòng : Bạn có thể thụt mã tập lệnh của bạn vào trong bằng bất cứ cách nào. Thụt
đầu dòng không ảnh hưởng đến chức năng.
Chú thích: các chú thích được viết trong dấu ngoặc . Chú thích có thể kéo dài qua nhiều
dòng.
Các dữ liệu bằng chữ :
Đồ án 2D GVHD: Lê Long Hồ
Page 29
- Bạn có thể xác định các giá trị số nguyên trong ký hiệu thập phân và thập lục phân. Ví dụ,
0.001 hoặc 1E-3.
- Để xác định giá trị Boolean, sử dụng giá trị số không cho FALSE và 1 cho TRUE.
- Để xác định một giá trị chuỗi, kết thúc nó trong dấu ngoặc kép. Ví dụ, “this is a string”.
Giá trị biểu thức: Giá trị biểu thức có thể bao gồm các giá trị chữ, tag tham khảo và hàm gọi,
tất cả liên kết với nhau bẳng các toán tử phù hợp.
Kiểm tra tính hợp lệ của cú pháp: Khi bạn lưu một tập lệnh, Script Editor sẽ tự động kiểm
tra nó cho đúng cú pháp. Bạn cũng có thể bắt đầu xác nhận thủ công bằng cách click nút nhấn
Validate.
II.5.1 Các phép toán cơ bản:
Danh sách tất cả dưới đây các toán tử hỗ trợ. Để biết thêm thông tin cách sử dụng của một toán
tử cụ thể, xem phần có liên quan.
Toán tử Thêm thông tin
+ Phép cộng hoặc ghép nối
- Phép trừ hoặc phủ định
* Phép nhân
/ Phép chia
** Lũy thưa
MOD Modulo
~ Lấy bù
SHL Dịch trái
SHR Dịch phải
& Phép toán AND
| Phép toán OR
^ Phép toán XOR
AND Logical kết hợp
OR Logical phân ly
NOT Logical phủ định
< So sánh nhỏ hơn
> So sánh lớn hơn
<= So sánh nhỏ hơn hoặc bằng
>= So sánh lớn hơn hoặc bằng
== So sánh bằng
<> So sánh không bằng
Đồ án 2D GVHD: Lê Long Hồ
Page 30
Chú ý: để tính toán số, luôn luôn lựa chọn toán hạng sao cho kết quả phép tính nó vẫn nằm
trong phạm vi giá trị của số thực. Mặt khác, kết quả sẽ không chính xác.
II.5.2 Xắp xếp thứ tự đánh giá của các toán tử:
Trong bất cứ biểu thức nào, bạn có thể sử dụng dấu ngoặc đơn để buộc các toán tử đánh giá
theo một thứ tự nhất định. Công việc này cũng giống như trong bất kỳ biểu thức toán học nào. Nếu
bạn không sử dụng dấu ngoặc đơn, biểu thức của bạn đánh giá dựa trên quy mặc định các quy tắc
thứ tự của các toán tử. Hoạt động với cấp độ thứ tự cao nhất nó thực hiện đầu tiên, dưới đây hoạt
động với cấp độ thứ tự cao thứ hai và v.v.v
Bảng dưới đây cho thấy cấp độ thứ tự của mỗi toán tử. các toán tử trên cùng một hàng có cùng
một cấp độ thứ tự.
-,NOT,~ Thứ tự cao nhất
**
*,/,MOD
+,-
SHL,SHR
<,>,<=,>=,
==,<>
&
^
|
AND
OR
= Thứ tự thấp nhất
II.5.3 Chuyển đổi dữ liệu ngầm định:
InTouch HMI ngôn ngữ tập lệnh cung cấp chuyển đổi giá trị ngầm định trong gán giữa loại
dữ liệu nào đó. Tuy nhiên, nó có thể tiến đến kết quả bất ngờ, vỉ vậy bạn chỉ nên sử dụng tính năng
này với sự thận trọng.
Bảng dưới đây cho thấy chuyện gì sẽ xảy ra khi gán một giá trị của một loại nào đó đến một
tag của loại khác.
Dự kiến loại dữ
liệu
Sử dụng loại dữ
liệu
Nhận xét
Rời rạc Số nguyên Một giá trị của 0 nó hiểu như FALSE. Bất cứ
giá trị khác nó hiểu như TRUE
Đồ án 2D GVHD: Lê Long Hồ
Page 31
Rời rạc Số thực Một giá trị của 0 nó hiểu như FALSE. Bất kỳ
giá trị khác nó hiểu như TRUE
Số nguyên Rời rạc Một giá trị của FALSE nó chuyển thành 0.
Một giá trị của TRUE nó chuyển thành 1.
Số nguyên Số thực Chỉ giá trị trước dấu phân cách thập phân
được sử dụng. Tất cả các chữ số thập phân
được loại bỏ
Số thực Rời rạc Một giá trị của FALSE nó chuyển thành 0.
Mộ giá trị của TRUE nó chuyển thành 1.
Số thực Số nguyên Giá trị lưu giữ không cần thay đổi
Ví dụ:
Biểu thức Loại dữ liệu của
kết quả
Kết quả
37 MOD 4 Số nguyên 1
37 MOD 4 == 1 Rới rạc TRUE
NOT (37 MOD 4 == 1) Rời rạc FALSE
InfoAppActive
(InfoAppTile(“xyz”)) ==1
Rời rạc TRUE nếu một quá trình
gọi “xyz” nó hoạt động
“Batch” + Text (IntTag, “000”) Tin nhắn “Batch 010” nếu IntTag có
một giá trị của 10
Bảng dưới đây cho thấy một vài biểu thức hợp lệ, cùng với lý do tại sao chúng hợp lệ.
Biểu thức Vấn đề
NOT (37 MOD 4) NOT yêu cầu một toán hạng rời rạc
NOT 37 MOD 4 == 1 NOT có một thứ tự cao hơn các toán tử
khác, vì thế InTouch HMI thử ứng dụng
NOT đến giá trị số nguyên của 37 thay kết
quả rời rạc của so sánh
“Batch” + IntTag Khi sử dụng toán tử + để nối các chuỗi thì
cả hai toán tử phải là chuỗi
II.5.4 Sử dụng chương trình có điều kiện cấu trúc phân nhánh:
Bạn có thể tự động điều khiển thực hiện phần của tập lệnh dựa trên điều kiện nào đó được
đáp ứng. InTouch HMI hỗ trợ IF-THEN-ELSE điều khiển cấu trúc của mục đích này.
Cú pháp cơ bản của một IF-THEN-ELSE điều khiển cấu trúc như dưới đây:
Đồ án 2D GVHD: Lê Long Hồ
Page 32
Cú pháp:
IF Condition THEN
… statement and/or aother IF-THEN-ELSE structure
[ELSE
… statement and/or another IF-THEN-ELSE
Structure]
ENDIF;
Nên nhớ những quy tắc dưới đây khi làm việc với cấu trúc IF-THEN-ELSE:
- IF-THEN-ELSE cấu trúc có thể lồng nhau, cả hai phần trong THEN và trong ELSE.
- Mỗi lệnh IF, phải có một lệnh kết thúc ENDIF. Một lệnh ENDIF luôn luôn áp dụng cho lệnh
IF đứng trước gần nhất trên cùng một cấp độ lồng.
- Condition phải là một biểu thức giá trị rời rạc. Phần THEN được thực thi nếu Condition nó
TRUE. Phần ELSE được thực hiện nếu Condition nó FALSE.
- Phần ELSE không bắt buộc.
- Một vài ngôn ngữ chương trình khác cho phép bạn kiểm tra nhiều điều kiện trên
cùng cấp độ phân cấp của một cấu trúc IF-THEN-ELSE và có một phần ELSE chung đó là thực thi
nếu tất cả điều kiện đánh giá FALSE. (cấu trúc IF-ELSEIF-ELSE trong Visual Basic là một ví dụ
của điều này). Nó không thể trong InTouch HMI. 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ì thế, để có một phần đơn của mã để hoạt động như mã ELSE cho tất cả
điều kiện, bạn phải đặt nó trong phần ELSE của cấu trúc IF-THEN-ELSE tại cấp độ lồng nhau
trước đó.
Cấu trúc điều kiện đơn:
Tập lệnh dưới đây cho thấy một cấu trúc điều kiện đơn, nếu SuccessTag là TRUE, the
“Success” của sổ mở, mặt khác “Failure” cửa sổ mở.
IF SuccessTag == 1 THEN
Show “success”;
ELSE
Show “Failure”;
ENDIF;
Đồ án 2D GVHD: Lê Long Hồ
Page 33
II.5.5 Sử dụng chương trình vòng lặp:
Lặp cho phép bạn thực hiện một phần mã lặp lại. InTouch HMI chỉ hỗ trợ lặp FOR. Một lặp
FOR làm việc bằng sự kiểm tra giá trị của một biến vòng lặp số đó nó tăng hoặc giảm với mỗi vòng
lặp đi lặp lại. Vòng lặp thực thi đến khi giá trị của biến vòng lặp đạt đến một giới hạn cố định.
Cú pháp:
FOR LoopTag = StarExpression TO End Expression [STEP
ChangeExpression]
… statements or another FOR loop…
NEXT;
- StarExpression, EndExpression and ChangeExpression định nghĩa với nhau số lần lặp đi lặp
lại.
- StarExpression cài đặt giá trị bắt đầu của phạm vi vòng lặp. EndExpression cài đặt giá trị kết
thúc của phạm vi vòng lặp.
- STEP Change Expression lựa chọn cài đặt giá trị mà theo tag vòng lặp nó tăng hoặc giảm
trong mỗi vòng lặp; nếu bạn không chỉ rõ nó , một mặc định của 1 nó sử dụng.
Khi bạn thực thi một vòng lặp FOR, InTouch HMI:
- Cài đặt LoopTag giá trị của StartExpression.
- Kiểm tra xem LoopTag nếu lớn hơn EndExpression. Nếu như vậy, InTouch HMI thoát khỏi
vòng lặp. (Nếu ChangeExpression nó phủ định, InTouch HMI kiểm tra xem LoopTag nó nhỏ hơn
EndExpression).
- Thực thi các câu lệnh trong vòng lặp .
- Tăng LoopTag bằng giá trị của ChangeExpression (1 trừ khi có quy định khác).
- Lặp lại các bước 2 đến 4.
Nên nhớ các quy tắc dưới đây khi làm việc với vòng lặp FOR:
- Vòng lặp FOR có thể lồng nhau. Số tối đa của các cấp độ lồng phụ thuộc trên bộ nhớ có sẵ
và tải nguyên hệ thống.
- Mội câu lệnh FOR, phải có một câu lệnh kết thúc NEXT.một câu lệnh NEXT luôn luôn ứng
dụng đến câu lệnh FOR gần nhất trước đó trên cùng một cấp độ lồng.
- LoopTag phải là một tag số (hoặc biến địa phương).
- StartExpression phải là hàm hợp lệ mà đánh giá đến một kết quả số.
Đồ án 2D GVHD: Lê Long Hồ
Page 34
- Nếu ChangeExpression nó xác thực, EndExpression phải lớn hơn StartExpression; nếu
ChangeExpression nó phủ định, StartExpression phải lớn hơn EndExpression. Mặt khác, vòng lặp
không bặt đầu.
- Thoát một vòng lặp, sử dụng câu lệnh EXIT LOOP. Để biết thêm thông tin.
- Có một thời gian giới hạn của các vòng lặp.
Kết thúc vòng lặp:
Bạn có thể kết thúc một vòng lặp bất cứ lúc nào bằn việc gọi câu lệnh dưới đây:
EXIT LOOP;
Câu lệnh này là nguyên nhân tập lệnh thực thi để tiệp tục tại câu lệnh ngay sau câu lệnh
vòng lặp NEXT.
Ví dụ:
Đoạn mã dưới đây sử dụng một vòng lặp để chèn một số lượng lớn hồ sơ giả vào trong một
bảng cơ sở dữ liệu. nếu có một lỗi trong quá trình chèn một hồ sơ, vòng lặp sẽ hủy bỏ để ngăn chặn
tạo nhiều lỗi.
FOR Counter = 1 to 1000
ResultCode = SQLInsert (ConnectionID, “BatchDetails”, “BindList”);
IF ResultCode <> 0 THEN
LogMessage (“Error creating records!
Aborting …”);
EXIT FOR;
ENDIF;
NEXT;
Ảnh hưởng của vòng lặp đến các quá trình chạy khác:
Trong một vòng lặp FOR đang thực thi, tất cả các quá trình chạy khác trong WindowView
đều tạm dừng. Điều này bao gồm các khu vực dưới đây:
Đồ án 2D GVHD: Lê Long Hồ
Page 35
- Cập nhật màn hình ( hình ảnh động liên kết, giá trị các màn hình, các xu hướng , các dự án
hình ảnh động, bởi vì nó không di chuyển sẽ xuất hiện cho đến khi sau khi hoàn thành vòng lặp.
- Các truyền thông I/O. Ví dụ, nếu bạn thay đổi giá trị của một tag I/O trong một vòng lặp
FOR, chỉ có giá trị sau lặp đi lặp lại cuối cùng nó ghi đến thiết vị I/O.
- Các tập lệnh khác, bao gồm không đồng bộ QuickFunctions.
Bạn có thể gọi tạm dừng các quá trình chạy khác bằng đặt vòng lặp LOOP trong một không
đồng bộ QuickFunction.
Thời gian giới hạn thực thi vòng lặp:
Để tránh các vòng lặp vô hạn, có thời gian giới hạn trong các vòng lặp FOR phải hoàn thành
thực thi. Nếu một vòng lặp không hoàn thành thực thi sau khoảng thời gian này. WindowViewier
tự động kết thúc nó và viết một tin nhắn về việc kết thúc đến Log Viewer.
Thời gian giới hạn mặc định là 5 giây. Bạn có thể tùy chỉnh nó bằng việc thêm dòng dười
đây đến file Intouch.ini vào trong thư mục cài đặt.
LoopTimeout = x
Thay thế x với thời gian giới hạn trong vài giây.
Chú ý: thới gian giới hạn nó được kiểm tra chi tại lệnh NEXT của vòng lặp. Về việc đó, phiên đầu
tiên của vòng lặp luôn luôn được thực thi, ngay cả khi nó thực thi dài hơn thời gian giới hạn.
Ví dụ về các vòng lặp:
Tập lệnh dưới đây sử dụng một vòng lặp đơn và một tag gián tiếp đến khởi chạy 100 tags
(Tag001 đến Tag100) với một giá trị của 0.
DIM Counter AS INTEGER;
FOR Couter = 1 đến 100
IndirectInteger.Name = “Tag” + Text(Counter, “000”);
IndirectInteger.Value = 0;
NEXT;
Tập lệnh dưới đây sử dụng các vòng lặp lồng nhau và một tag gián tiếp đến khởi chạy 1000
tags (Line01_Tag001 đến Line10_Tag100) với một gián trị của 0.
Đồ án 2D GVHD: Lê Long Hồ
Page 36
DIM LineCounter AS INTEGER;
DIM TagCounter AS INTEGER;
FOR LineCounter = 1 TO 10
FOR TagCounter = 1 TO 100
IndirectInteger.Name = “Line” +
Text(LineCounter, “00”) + “_Tag” +
Text(TagCounter, “000”);
IndirectInteger.Value = 0;
NEXT;
NEXT;
II.5.6 Sử dụng các biến đặc trưng:
Bạn có thể khai báo các biến đặc trưng trong một tập lệnh đến lưu trữ tạm thời hoặc các kết quả
trung gian. Điều này tăng hiệu suất và giúp giữ tag của bạn đếm chậm lại. Bạn có thể sử dụng các
biến địa phương giống như tagnames trong tập lệnh của bạn. Tuy nhiên, có các sự khác nhau đôi
chút.
- Các biến địa phương chỉ tồn tại trong phạm vi của tập lệnh trong đó họ khai báo. Họ bỏ giá
trị của họ khi tập lệnh thực thi hoàn thành. Chúng không thể tham chiếu bằng bất cứ tập lệnh khác
trong ứng dụng của bạn.
- Các giá trị địa phương không có dotfields.
- Các biến địa phương không đếm tới tag đếm.
Trước khi bạn có thể sử dụng một biến địa phương trong một tập lệnh, bạn phải khai báo nó,
mặt khác, xem xét nó tham chiếu môt tagname. Bạn có thể khai báo các biến địa phương đó có
cùng tên như các tag.
Khai báo cho biến đặc trưng:
Đồ án 2D GVHD: Lê Long Hồ
Page 37
Có thể khai báo các biến đặc trưng ở bất cứ đâu trong tập lệnh, nhưng cần khai báo chúng
trước sử dụng đầu tiên của chúng. Để khai báo một biến địa phương, sử dụng lệnh dưới đây:
DIM LocVarName [As DataType];
LocVarName nó là tên của biến đia phương. Tên phải theo quy ước của tagnames.
DataType nó là loại dữ liệu của biến địa phương. Các giá trị hợp lệ là Discrete, Integer, Real
và Message. Nếu bạn không chỉ rõ tùy chọn, Integer nó sử dụng như mặc định.
Bạn có thể sử dụng lệnh DIM riêng biệt của mỗi biến địa phương để khai báo.
Bạn có thể khai báo bất cứ số của các biến địa phương, giới hạn bởi bộ nhớ sẵn có.
Ví dụ:
Để khai báo một giá trị số nguyên:
DIM MyLocalIntVar As Integer;
Để khai báo nhiều các giá trị số thực:
DIM MylocalRealVar1 As Real;
DIM MylocalRealVar2 As Real;
Lệnh dưới đây không hợp lệ:
DIM MylocalRealVar1, MyLocalRealVar2 As Real;
Các xung đột tên giữa giá trị địa phương và các tag:
Bạn có thể khai báo một biến đia phương với cùng tên như một tag đang tổn tại. Tuy nhiên,
khi bạn tham chiếu đến tên đó trong một tập lệnh, biến địa phương luôn luôn được ưu tiên hơn tag.
Ví dụ, cho rằng bạn có một tag số nguyên đang tồn tại gọi “iTag” và bạn chạy tập lệnh dưới đây:
DIM iTag as Integer;
iTag = 20;
Trong tình huống này, giá trị gán ghi một giá trị chỉ đến biến địa phương. Giá trị của tag có
cùng tên vẫn không thay đổi.
II.5.7 Các hàm tập lệnh tuy chỉnh:
Đồ án 2D GVHD: Lê Long Hồ
Page 38
InTouch HMI QuickFunction các tập lệnh đó trong mội trường khác có thể được biết như
macros, subroutines hoặc procedures.
Quickfunctions:
QuickFunctions là các tập lệnh có thể gọi tất cả tử các tập lệnh khác và liên kết hình ảnh động.
lợi thế chính của QuickFunctions là một sự giảm mã trùng lặp. Có thể bỏ qua giá trị đến
QuickFunctions, mà có thể sử dụng các giá trị và trả lại các kết quả.
QuickFunctions có thể chạy không đổng bộ. Không giống các tập lệnh khác, nó có thể chạy
trong nền tảng không gây trở ngại dòng chương trình chính. Một QuickFunction chạy không đồng
bộ có thể sử dụng các hoạt động tốn nhiều thời gian, như gọi cơ sở dữ liệu SQL.
Chú ý: bản đồ QuickFunctions và các đối số của chúng một các cẩn thận, bởi vì nếu bạn muốn
giảm bớt các đối số trong mộ QuickFunction, đầu tiên bạn phải xóa tất cả các gọi đó đến
QuickFunction từ mỗi tập lệnh đó sử dụng QuickFunction. Sau thay đổi thực hiện, tiếp đó bạn phải
gọi QuickFunction vào sau các tập lệnh.
Có 3 phần cơ bản của QuickFunction:
- Tên
- Đối số( optional).
- Khối tập lệnh với tùy biến các giá trị trả lại
QuickFunction thực thi bằng việc sử dụng hàm CALL trong một trong hài một liên kết hình ảnh
động hoặc tập lệnh khác.
Cấu hình Quickfunction:
Bạn có thể tạo, thay đổi hoặc xóa QuickFunctions.
Để tạo một QuickFunction:
- Trong của sổ Scripts, click phải vào QuickFunctions và tiếp đó click New. Hộp thoại
QuickFunction xuất hiện.
Đồ án 2D GVHD: Lê Long Hồ
Page 39
- Trong hộ Function, nhập một tên của QuickFunction.
Trong khu vực Arguments, cho mỗi đối số, nhập một tên phía bên trái và một loại dữ liệu phía
bên phải.
- Các đối số là các biến địa phương chỉ tồn tại trong QuickFunction trong đó họ định nghĩa.
Bạn có thể có lên tới 16 đối số trên một QuickFunction. Tên đối số có thể có 31 ký tự nhưng không
phải khoảng trống. tên đối số phải bắt đầu với một ký tự alpha. Tên đối số phải duy nhất.
- Đánh tập lệnh của bạn trong cửa sổ.
- Để gây ra QuickFunction trả lại môt kết quả, thêm vào tập lệnh của bản :RETURN value
Value có thê là một giá trị bằng chữ, một biến địa phương hoặc tagname chung hoặc biểu thức
có tính toán. Tập lệnh kết thúc tại lệnh RETURN và tiếp tục tại hàm gọi.
- Nhấn OK
Để thay đổi một QuickFunction:
- Trong cửa sổ Scripts, mở rộng QuickFunctions, click phải QuickFunction để thay đổi và
click Edit. Hộp thoại QuickFunctions xuất hiện.
- Làm sự thay đổi đến khối tập lệnh và click Ok.
Đồ án 2D GVHD: Lê Long Hồ
Page 40
Chú ý: bạn không thể làm sự thay đổi đến danh sách đối số nếu có gọi đến QuickFunction trong
ứng dụng InTuoch. Bạn phải xóa các gọi đó trước, đóng tất cả các cửa sổ InTouch và cập nhật số
lần sử dụng.
Để xóa một QuickFunction:
- Xóa tất cả các gọi đến QuickFunction, đóng tất cả các cửa sổ InTouch và cập nhật số lần sử
dụng.
- Trong của sổ Scripts, mở rộng QuickFunctions, click phải QuickFunction để xóa và click
Delete. Khi một tin nhắn xuất hiện click Yes.
Gọi quickfunctions:
Bạn có thể cấu hình các tập lệnh và liên kết các hình ảnh động để gọi QuickFunction và để
xử lý hoặc cho thấy một giá trị trả về có thể.
Một QuicFuntion nó không gọi nếu các giá trị tham số không thay đổi. Bạn có thể sử dụng
$second như một tham số để đảm bảo rằng một QuickFunction nó thực thi tại ít hơn mỗi giây.
Tạo các quickfunction không đồng bộ:
Bạn có thể định nghĩa QuickFunction để chạy không đồng bộ ( đó là , song song) đến dòng
chương trình chính.
Để tạo một QuickFunction không đồng bộ:
- Trong Script Editor, tọa một QuickFunction.
- Trên menu Options, click Asynchronous.
Sự giới hạn của QuickFunctions không đồng bộ:
Bạn không thể:
- Trả lại môt giá trị từ một QuickFunction không đồng bộ.
Đồ án 2D GVHD: Lê Long Hồ
Page 41
- Chạy nhiều hơn một trường hợp của cùng QuickFunction tại cùng tên.
- Dừng QuickFunctions không đồng bộ sau chúng bắt đầu thực thi.
Bạn không nên:
- Chạy nhiều hơn ba QuickFunction không đồng bộ khác nhau tại cùng thời gian. Chạy nhiều
hơn ba QuickFunctions tại cùng thời gian yêu cầu hệ thống hiệu suất đáng kể.
- Sử dụng các hàm không đồng bộ như phần của các hàm cho liên kết hình ảnh động, e.g Các
Mẹo Công Cụ.
Kiểm tra nếu bất cứ QuickFunctions không đồng bột đang chạy:
Bạn có thể kiểm tra nếu bất cứ QuickFunctions không đồng bộ đang chạy với hàm
IsAnyAsyncFunctionBusy(). Bạn có thể sử dụng hàm này để làm QuickFunction đó gọi một
QuickFunction không đồng bộ chờ QuickFunctions không đồng bộ khác hoàn thành xử lý.
Hàm isanyasyncfunctinbusy():
Trả lại một giá trị riêng biết cho biết nếu bất cứ QuickFunctions không đồng bộ nó đang chạy.
Cú pháp:
Result = IsAnyAsyncFunctionBusy (timeout)
Các tham số:
result
giá trị riêng biệt đó cho biết nếu QuickFunctions không đồng bộ chúng đang chạy với ý nghĩa
sau đây:
0 = QuickFunction không đồng bộ chúng đang chạy.
1 = QuickFunction không đồng bộ chúng đang chạy.
Timeout: số giây để chờ trước kiểm tra nếu bất cứ QuickFunction không đồng bộ chúng
đang chạy. một giá trị số nguyên số, tagname số nguyên hoặc hàm số nguyên.
Ví dụ:
Cho rằng bạn muốn kết nối đến cơ sở dữ liệu cá nhân SQL sừ dụng QuickFunction không
đồng bộ và bạn biết nó mất 2 phút để kết nối điều đó.
Đồ án 2D GVHD: Lê Long Hồ
Page 42
Đầu tiên, thực thi hàm IsAnyAsyncFunctionBusy(120) trong một QuickScript để cho phép
đủ thời gian cho SQL để kết nối trước khi hoàn thành QuickFunction.
Nếu sau 2 phút kết nối không thực hiện được và QuickFunction không đồng bộ chúng vẫn
bận thử để thực hiện kết nối, một giá trị của 1 (true) nó trả lại bằng hàm
IsAnyAsyncFunctionBusy().
Bây giờ bạn có thể cho thấy một tin nhắn error nói rằng SQL kết nối thất bại.
Tập lệnh dưới đây thi hành:
IF IsAsyncFunctionBusy(120) == 1 THEN
SHOW “SQL Connection Error Dialog”;
ENDFI;
Dừng QuickFunctions đang chạy:
Bạn không thể dừng QuickFunctions không đồng bộ sau khi chúng bắt đầu, nhưng ban có
thể dừng thêm QuickFunctions từ lúc được bắt đầu bằng việc dừng tập lệnh logic. Sự ảnh hưởng
này đến tất cả QuickScripts trong ứng dụng InTouch của bạn.
II.5.8 Xây dựng các hàm:
Các hàm InTouch QuickScript cho phép bạn thực thi các lệnh và các hoạt động logic dựa
trên quy định tiêu chuẩn được đáp ứng. Bạn có thể sử dụng các hàm QuickScript tự mình và cho
chúng thực thi bất cứ khi nào một điều kiện nào đó được đáp ứng hoặc sử dụng chúng trong liên
kết màn hình các hình ảnh động.
Sử dụng các hàm làm tròn, rút gọn và xác định kí hiệu:
Trong một tập lệnh, bạn có thể sử dụng các hàm sau đây để làm tròn số, rút gọn các số và
xác định ký hiệu của các số:
- Hàm Abs(): ttả lại giá trị bắt đầu của một số chỉ định. Bạn có thể sử dụng nó để chuyển đổi
môt số âm thành số dương.
Cú pháp:
Result = Abs(number)
Các tham số:
Number: môt chữ số, analog tagname hoặc biểu thức dạng số.
Đồ án 2D GVHD: Lê Long Hồ
Page 43
Ví dụ:
Abs (14) returns 14
Abs (-7,5) returns 7.5.
- Hàm Int(): trả lại số nguyên nhỏ hơn (hoặc bằng) một số xác định.
Cú pháp:
Result = Int (number)
Các tham số:
Number: một chữ số, analog tagname hoặc biểu thức dạng số.
Ví dụ:
Int (4.7) returns 4.
Int (-4.7) returns -5.
Chú ý: các số thực âm, hàm này trả về một số nguyên nó nhỏ hơn số xác định. Ví dụ, Int(-4.7) nó
không phải -4, nhưng là -5. Để có phần số nguyên trả về, sử dụng hàm Trunc().
- Hàm Round(): làm tròn một số để một sử chính xác quy định. Kết quả nó là một số thực.
Cú pháp:
Result = roud (number, precision)
Các tham số:
Number : một chữ số, analog tagname hoặc biểu thực dạng số.
Precision: độ chính xác mà một số được làm tròn. Có thể là một chữ số, analog tagname
hoặc biểu thức dạng số.
Ví dụ:
Round (4.3, 1) returns 4.
Round (4.3, 0.01) returns 4.30.
Đồ án 2D GVHD: Lê Long Hồ
Page 44
Round (4.5, 1) returns 5.
Round (-4.5, 1) returns -4.
Round (106, 5) returns 105.
Round (43.7, 0.5) returns 43.5.
- Hàm Sgn(): trả về ký hiệu của một số. Sử dụng nó để xác định nếu một số, tagname hoặc
biểu thức nó âm, dương hoặc bằng 0.
Cú pháp:
Result = Sgn (number)
Các tham số:
Number: một chữ số, analog tagname hoặc biểu thức dạng số.
Ví dụ:
Sgn (425) returns 1.
Sgn (0) returns 0.
Sgn (-37.3) returns -1.
- Hàm Trunc(): trả về giá trị rút gọn của một số. giá trị rút gọn nó phần trước của một điểm
thập phân. Sử dụng nó để làm việc với phần số nguyên của một số thực.
Cú pháp:
Result = Trunc (number)
Các tham số:
Number: một chữ số, analog tagname hoặc biểu thức dạng số.
Ví dụ:
Trunc (4.3) returns 4.
Trunc (-4.3) returns -4.
Đồ án 2D GVHD: Lê Long Hồ
Page 45
Chú ý: bạn cũng có thể sử dụng hàm này để làm việc với phần phân số của một số. Để trả về phẩn
phân số của một phân số sử dụng hàm Trunc() như dưới đây:
Result = number – trunc(number);
Sử dụng các hàm lượng giác: trong một tập lệnh, bạn có thể sử dụng các hàm dưới đây để
làm các tinh toán lượng giác.
Chú ý: Các hàm Trigonometric QuickScript trong InTouch HMI sử dụng góc này ở độ (0-360). Để
làm việc với radians thay thế bạn phải thực hiện tính toán tương ứng trước khi qua tham số đến
hàm hoặc sau khi truy xuất kết quả từ hàm.
- Hàm Sin(): trả về sine của một số. Cho các hàm lượng giác tham số là góc này ở độ.
Cú pháp:
Result = Sin (number)
Các tham số:
Number: một chữ số, analog tag name hoặc biểu thức dạng số.
Ví dụ:
Sin (90) returns 1.
Sin (0) returns 0.
Sin (30) returns 0.5
100*Sin (6*$second) trả về một sóng sine với một độ lớn của 100 và một chu kỳ một phút.
- Hàm ArcSin(): trả về arcsine của một số. Nó là hàm tương hỗ với hàm Sin(). Sử dụng hàm
ArcSin() để tính toán góc từ -90 đến 90 độ với sine nó bằng số đó.
Cú pháp:
Result = Arcsin (number)
Các tham số:
Number: một chữ số, analog tagname hoặc biểu thức dạng só trong phạm vi -1 đến 1.
Ví dụ:
ArcSin(1) returns 90.
ArcSin(0) returns 0.
Đồ án 2D GVHD: Lê Long Hồ
Page 46
ArcSin(0.5) returns 30.
- Hàm Cos(): trả về cosine của một số. Cho các hàm lượng giác số nó góc này ở độ.
Cú pháp:
Result = Cos (number)
Các tham số:
Number: một chữ số, analog tagname hoặc biểu thức dạng số.
Ví dụ:
Cos (90) returns 0.
Cos (0) returns 1.
Cos (60) returns 0.5.
20 + 50*Cos(6*$second) produces a sine wave oscillating around 20 with an amplitude of
50 and a period of one minute
- Hàm Arccos(): làm một kết quả của hàm cos quay về giá trị được thực hiện hàm, nó là một
hàm ngược với hàm cos(). Ta sử dụng hàm Arccos() để tính góc từ 0 đến 180 độ khi ta có giá trị
cosin của góc đó.
Cú pháp:
Result = Arccos(number)
Tham số:
Number: là các số có giá trị từ -1 đến 1.
Ví dụ:
Arccos(1) return 0
Arccos(-0.5) return -120
Đồ án 2D GVHD: Lê Long Hồ
Page 47
- Hàm Tan(): đưa về giá trị tan của một số. Đây là hàm lượng giác của giá trị độ của một góc.
Cú pháp:
Result= tan(number)
Tham số:
Number: các số thập phân .
Ví dụ:
Tan(45) return 1
Tan (0) return 0
- Hàm Arctan(): quy đổi kết quả của hàm tan thành số được thực hiện hàm. Đó là hàm ngược
với hàm Tan(). Sử dụng hàm Arctan để tính góc khi ta có giá trị Tan của nó.
Cú pháp:
Result= Arctan(number)
Tham số:
Number: số thập phân.
Ví dụ:
Arctan(1) return 45
Arctan(0) return 0
Sử dụng hàm điều chỉnh giá trị Pi():
Cú pháp:
Result= Pi( )
Ví dụ:
Pi() trở thành 3.1415927
Đồ án 2D GVHD: Lê Long Hồ
Page 48
Sử dụng các hàm logarit:
- Hàm Log(): trở về logarit của một số đạt điều kiện.
Đó là hàm ngịch với hàm Exp().
Cú pháp:
Result= log(number)
Tham số:
Number: số thập phân hoặc hàm đạt điều kiện.
Ví dụ:
Log(100) trở thành 4.6051702
Log(1) trở thành 0
- Hàm Exp(): trở về số mũ của một số. Đây là hàm nghịch với hàm Log().
Cú pháp:
Result = Exp(number)
Tham số:
Number: các số có giá trị từ -88.72 đến 88.72.
Ví dụ:
Exp(1) trở thành 2.7182818
Exp(0) trở thành 1
- Hàm LogN(): trở về logarit của một số đạt điều kiện. Đó là hàm nghịch của hàm tìm cơ số.
Cú pháp:
Result = logN(number, base)
Tham số:
Number: số thập phân…
Đồ án 2D GVHD: Lê Long Hồ
Page 49
Base: số khác 1
Ví dụ:
LogN(8) trở thành 3
Sử dụng hàm Sqrt() để tính căn bậc hai:
Cú pháp:
Result = sqrt(number)
Tham số:
Number: Số không âm.
Ví dụ:
Sqrt(36) = 6
Sử dụng các hàm về chuỗi:
Bạn có thể sử dụng một số chuỗi cơ bản để ra lệnh và mô tả những liên kết. Bạn có thể sử
dụng những hàm đó để:
- Quay về một phần của chuỗi.
- Thay đổi khung của chuỗi.
- Xóa hoặc thêm khoảng cách vào 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.
- Quay trở lại các thông tin khác về chuỗi, chẳng hạn như của chiều dài của chúng.
Trong một lệnh, có thể sử dụng lệnh StringLeft (), StringMid () và StringRight () chức năng để trở
lại một phần của chuỗi.
- Hàm StringLeft(): trả về một số xác định của các biến từ đầu của một chuỗi.
Cú pháp:
Result = StringLeft (string, length)
Đồ án 2D GVHD: Lê Long Hồ
Page 50
Tham số:
String: một văn bản chữ, tin nhắn, hoặc biểu thức chuỗi.
Length: các số của biến cần trở về. Một số chữ, tên thẻ tương tự, hoặc biểu thức số.
Ví dụ:
StringLeft ("Hello World", 5) trả về "Hello".
StringLeft ("Hello World", 20) trả về "Hello World".
StringLeft ("Hello World", 0) trả về "Hello World".
- Hàm StringMid (): trả về một phần của một chuỗi. Bạn có thể xác định điểm khởi đầu và
bao nhiêu ký tự trở lại.
Cú pháp:
Result = StringMid (string, startpos, length)
Tham số:
String: một văn bản chữ, tên thẻ tin nhắn, hoặc biểu thức chuỗi.
Startpos: vị trí bắt đầu trong chuỗi. Một số chữ, analog, tên thẻ , hoặc biểu thức số.
Length: số lượng ký tự trở lại. Một số chữ,
Tên thẻ tương tự, hoặc biểu thức số.
Ví dụ :
StringMid ("Hello World", 5,4) trả về "o Wo".
StringMid ("Hello World", 7,50) trả về "World".
StringMid ("Hello World", 4,0) trả về " lo World"
Trong một lệnh , có thể sử dụng hàm StringLower () và StringUpper () trả về một chuỗi quy
định ở dạng chữ thường và chữ hoa. Bạn có thể gán kết quả cho chuỗi quy định thực hiện một
chuyển đổi từ trên thành chữ thường hoặc ngược lại.
- Hàm StringLower (): trả về tương đương với chữ thường của một chuỗi.
Đồ án 2D GVHD: Lê Long Hồ
Page 51
Cú pháp:
Result = StringLower (string)
Tham số:
String: một văn bản chữ, tên thẻ tin nhắn , hoặc biểu thức chuỗi.
Ví dụ :
StringLower ("TURBINE") trả về "TURBINE".
StringLower ("THE VALUE IS 22,2") trả về “the value is 22,2 ".
mtag = StringLower (mtag) chuyển đổi các giá trị thông điệp mtag thành chữ thường.
- Hàm StringUpper (): trả về tương đương với chữ hoa của một chuỗi.
Cú pháp:
Result = StringUpper (string)
Tham số:
String: một văn bản chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Ví dụ :
StringUpper ("abcd") trả về "ABCD".
StringUpper ("the value is 22,2") trả về "THE VALUE IS 22,2 ".
mtag = StringUpper (mtag) chuyển đổi các giá trị thông điệp mtag thành chữ hoa.
Trong một tập lệnh ,có thể cắt hàng đầu và dấu khoảng cách (khoảng trống) từ các chuỗi
bằng cách sử dụng hàm StringTrim ().
- Hàm StringTrim (): Rrim ở đầu và đuôi khoảng cách (khoảng trống) từ các chuỗi. Có thể
sử dụng hàm để loại bỏ các khoảng trống từ một chuỗi.
Cú pháp:
Result = StringTrim (string, trimtype)
Đồ án 2D GVHD: Lê Long Hồ
Page 52
Tham số:
String: một văn bản chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Trimtype: một giá trị văn bản , tagname tương tự, hoặc biểu thức số xác định không
gian để loại bỏ:
1 = không gian đầu.
2 = không gian sau
3 = không gian đầu và sau
Chú thích: chức năng này loại bỏ tất cả đầu và đuôi khoảng trắng từ một chuỗi. Không gian màu
trắng là những không gian (ASCII 0x20) và điều khiển kí tự trong khoảng từ ASCII 0x09 0x0D.
Ví dụ:
Để loại bỏ tất cả các không gian trong một thẻ tin nhắn, mtag, với một lệnh hành động, sử
dụng lệnh sau đây:
DIM i AS INTEGER;
DIM tmp AS MESSAGE;
mtag = StringTrim(mtag,3); mtag is trimmed
FOR i = 1 TO StringLen(mtag) run variable i over the characters of mtag
IF StringMid(mtag, i, 1)<>" " THEN i-th character is not space tmp = tmp +
StringMid(mtag, i, 1);
add that character to tmp
ENDIF;
NEXT;
mtag = tmp; pass tmp back to mtag.
Các ví dụ khác:
StringTrim (" Joe ", 1) trả về "Joe ".
StringTrim (" Joe ", 2) trả về " Joe".
Đồ án 2D GVHD: Lê Long Hồ
Page 53
Lệnh này loại bỏ tất cả các không gian từ bên trái và bên phải của giá trị mtag:
mtag = StringTrim (mtag, 3)
- Hàm StringSpace (): để thêm không gian ( khoảng trống) cho chuỗi.
Cú pháp:
Result = StringSpace (number)
Tham số:
Number: một số chữ, số tagname, hoặc biểu thức số.
Ví dụ:
StringSpace (4) trả về một chuỗi gồm của 4 khoảng trống.
"Pump" + StringSpace (1) + "Station" trả về "Pump Station ".
Sử dụng các hàm StringChar() và StringASCII để chuyển đổi các kí tự thành chuỗi mã ASCII và
ngược lại.
- Hàm StringChar (): trả về một kí tự duy nhất tương ứng với quy định Mã ASCII.
Cú pháp:
Result = StringChar (ASCII code)
Tham số:
ASCIIcode: một số chữ, tagname số hoặc biểu thức số trong phạm vi của 0 đến 255.
Chú thích: chức năng này rất hữu ích để thông qua các ký tự điều khiển thiết bị bên ngoài (chẳng
hạn như máy in hoặc modem) hoặc tăng gấp đôi dấu ngoặc kép để truy vấn SQL.
Ví dụ:
StringChar (65) trả về "A".
Lệnh này trả về "Hello World" được bao bọc bởi dấu ngoặc kép:
StringChar (34) + "Hello World" + StringChar (34)
Đồ án 2D GVHD: Lê Long Hồ
Page 54
Lệnh này trả về "Hello World", nơi cả hai từ bị ngăn cách:
"Hello" + StringChar (13) + StringChar (10) + "Thế giới"
- Hàm StringASCII (): trả về mã ASCII của ký tự đầu tiên của một chuỗi.
Cú pháp:
Result = StringASCII (string)
Tham số:
String: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Ví dụ:
StringASCII ("A") trả về 65.
StringASCII ("hello world") trả về 104.
Tìm kiếm và thay thế văn bản trong chuỗi:
Đối với các ngôn ngữ sử dụng bộ ký tự single-byte (như Tiếng Anh), bạn có thể sử dụng
hàm StringInString () và StringReplace () trong một tập lệnh để thực hiện hạn chế tìm kiếm và thay
thế chức năng tin nhắn trên thẻ.
- Hàm StringInString (): để tìm kiếm một chuỗi nhất định trong một chuỗi khác và trả về
kết quả như là một vị trí.
Cú pháp:
Result = 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, hoặc biểu thức
chuỗi.
searchfor: điều muốn tìm kiếm từ các chuỗi. Một chuỗi chữ, tagname tin nhắn, hoặc
biểu thức chuỗi.
Đồ án 2D GVHD: Lê Long Hồ
Page 55
startpos: đây là vị trí bắt đầu trong chuỗi tìm kiếm. một chữ giá trị, số tagname, hoặc
biểu thức số.
casesens: xác định xem có phải đang tìm kiếm trong trường hợp nhạy cảm. Có thể là
0 hoặc 1, tagname rời rạc, 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
coi là như nhau).
1 - tìm kiếm là trường hợp nhạy cảm (chữ hoa và chữ thường là được coi là
khác nhau).
Chú thí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 thẻ
thông báo. Bạn có thể xác định vị trí bắt đầu cho việc tìm kiếm và lưu ý việc đó.
Ví dụ:
Lệnh này trả về 5 bởi vì chữ "M" đầu tiên trong "MTX" là vị trí thứ năm của chuỗi:
StringInString ("DBO MTX-010", "MTX", 1,0)
Lệnh này trả về 3-vì là chữ "M" đầu tiên trong "MTX" là vị trí thứ ba trong chuỗi:
StringInString ("T-MTX 010 MTX," MTX ", 1,0)
Lệnh này trả về 11-vì chữ "M" đầu tiên trong "MTX" sau khi ở vị trí thứ 8 là ở vị trí thứ 11
trong chuỗi:
StringInString ("T-MTX 010 MTX," MTX ", 8,0)
Lệnh này trả về 11 bởi vì các chuỗi đầu tiên phù hợp với MTX trong trường hợp chính xác ở vị
trí thứ 11:
StringInString (t-MTX 030 MTX "," MTX ", 1,1)
Tập lệnh này trả về 0-vì không có "Mty" trong chuỗi:
StringInString ("t-MTX 030 MTY-MTX", "Mty", 1,1)
- Hàm StringReplace (): để thay thế một số ký tự hoặc từ với các kí tự khác hoặc các từ trong
một quy định chuỗi và trả về kết quả như là một chuỗi mới. Có thể chỉ định:
Trường hợp-nhạy cảm: xác định chữ hoa và chữ thường là chữ giống hệt nhau hay không.
Đồ án 2D GVHD: Lê Long Hồ
Page 56
Số lần xuất hiện để thay thế này rất hữu ích nếu có nhiều hơn một lần xuất hiện của các
chuỗi tìm kiếm được tìm thấy.
Kết hợp toàn bộ - Sử dụng nếu chuỗi tìm kiếm toàn bộ từ.
Cú pháp:
Result = StringReplace (string, searchfor, replacewith,casesens, numtoreplace,
matchwholewords)
Tham số:
String: chuỗi ký tự để tìm kiếm bên trong. Một chuỗi chữ, tin nhắn tagname, hoặc
biểu thức chuỗi.
Searchfor: chuỗi cần tìm kiếm. Một chuỗi chữ,tagname tin nhắn, hoặc biểu thức
chuỗi.
Replacewith: chuỗi được sử dụng để thay thế. Một chuỗi chữ,tagname tin nhắn, hoặc
biểu thức chuỗi.
Casesens: xác định xem liệu tìm kiếm là trường hợp nhạy cảm. Có thể là 0 hoặc 1, rời
rạc tagname 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
coi là giống nhau)
1 - tìm kiếm là trường hợp nhạy cảm (chữ hoa và chữ thường là được coi là
khác nhau)
numtoreplace: số lượng thay thế để làm. Đặt nó đến -1 để thay thế tất cả các lần xuất
hiện của chuỗi tìm kiếm tìm thấy. Một số nguyên chữ giá trị, số nguyên tagname, hoặc biểu thức số
nguyên.
Matchwholewords: xác định liệu từ toàn bộ chỉ được xuất hiện. có thể 0 hoặc 1,
tagname rời rạc, hoặc biểu thức Boolean.
0 chức năng tìm kiếm các chuỗi ký tự tìm kiếm bất cứ nơi nào trong chuỗi.
1 - toàn bộ chữ được kết hợp
Ví dụ:
Lệnh này thay thế chỉ xuất hiện đầu tiên và trả về "MTY 030 MTX".
Đồ án 2D GVHD: Lê Long Hồ
Page 57
StringReplace ("MTX 030 MTX", "MTX", "MTY", 0,1,0)
Lệnh này thay thế tất cả các lần xuất hiện và trả về MTY "030 MTY ".
StringReplace ("MTX 030 MTX", "MTX", "MTY", 0, -1,0)
Lệnh này thay thế tất cả các lần xuất hiện phù hợp với trường hợp và trả về "MTY030
MTX".
StringReplace ("MTX 030 MTX", "MTX", "MTY", 1, -1,0)
Lệnh này thay thế tất cả các lần xuất hiện toàn bộ từ và trả về "MTY 030 QMTX".
StringReplace ("MTX 030 QMTX", "MTX", "MTY", 0, -1,1).
Trong một lệnh, sử dụng các hàm StringLen() và StringTest() để trả lại chuỗi dài OFA quy
định và kiểm tra cho dù một kí tự trong một nhóm ký tự.
- Hàm StringLen(): trả về độ dài của một chuỗi quy định, bao gồm kí tự không nhìn thấy
được.
Cú pháp:
Result = StringLen (string)
Tham số:
String: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Ví dụ:
StringLen (“twelve percent") trả về 14.
StringLen ("12%") trả về 3.
StringLen ("the end." + StringChar (13)) trả về 9.
- Hàm StringTest (): kiểm tra xem một ký tự đầu tiên của một chuỗi trong một số nhóm các
kí tự.
Cú pháp:
Result = StringTest (string, group)
Tham số:
Đồ án 2D GVHD: Lê Long Hồ
Page 58
String: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Group: số lượng các nhóm để kiểm tra các kí tự chống lại. Một giá trị theo nghĩa đen,
tagname số nguyên hoặc biểu thức số nguyên trong phạm vi của 1 đến 11.
1 ký tự chữ số (A-Z, a-z, 0-9)
2 - các ký tự số (0-9)
3 ký tự chữ cái (A-Z, a-z)
4 - chữ viết hoa (A-Z)
5 ký tự chữ thường (a-z)
6 ký tự chấm câu (ASCII 0x21 - 0x2F)
ví dụ!, @, #, $,%, ^, &, * và vv
7 - ký tự ASCII (ASCII 0x00 - 0x7F)
Từ 8 ký tự thập lục phân (0-9, A-F, a-f)
9 ký tự có thể in (ASCII 0x20 - 0x7E)
10 ký tự điều khiển (ASCII 0x00 - 0x1F và 0x7F)
11 - ký tự không gian trắng (ASCII 0x09 - 0x0D và 0x20)
Ví dụ:
Chuỗi này trả về một 1-bởi vì "A" là một chữ:
StringTest ("ACB123", 1)
Chuỗi này trả về một 0-bởi vì "A" không phải là chữ thường:
StringTest ("ABC123", 5)
Trong một lệnh , sử dụng hàm StringCompar(),StringCompareNoCase() và
StringCompareEncrypted () để so sánh hai chuỗi.
Dùng hàm StringCompare() để so sánh nhạy cảm.
Dùng hàm StringCompareNoCase() để so sánh không nhạy cảm
Đồ án 2D GVHD: Lê Long Hồ
Page 59
Dùng hàm StringCompareEncrypted() để so sánh một chuỗi không được mã hóa với một
chuỗi mã hóa.
- Hàm StringCompare (): so sánh hai chuỗi với nhau và trả về một Boolean kết quả (0 =
chuỗi bằng nhau). Trường hợp của mỗi chữ cái là nhấn mạnh như vậy, ví dụ, 'A' được coi là không
bằng 'a'.
Cú pháp:
kết quả = StringCompare (string1, string2)
Tham số:
String1: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
String2: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Ví dụ:
StringCompare ("Apple", "Apple") trả về 0.
StringCompare ("Apple", "quả táo") trả về 1.
Chuỗi này so sánh hai thẻ tin nhắn và trả về một kết quả rời rạc (0 hoặc 1):
StringCompare (mtag1, mtag2)
- Hàm StringCompareNoCase(): so sánh hai chuỗi với nhau và trả về một số nguyên kết
quả. Trường hợp của mỗi chữ cái không được nhấn mạnh như vậy.
Ví dụ: 'A' được coi là bằng 'a'.
Kết quả trả về số nguyên:
• 0 nếu hai chuỗi là giống hệt nhau (bỏ qua trường hợp).
• Không không khác. Kết quả là sự khác biệt của ASCII giá trị giữa các chữ cái khác
biệt.
Cú pháp:
Result = StringCompareNoCase (string1, string2)
Tham số:
String1: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Đồ án 2D GVHD: Lê Long Hồ
Page 60
String2: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Ví dụ:
Chuỗi này trả về 0-bởi vì các chuỗi được coi là giống hệt nhau:
StringCompareNoCase ("Apple", "apple")
Chuỗi này trở lại-6- vì chuỗi được coi là không giống hệt nhau vì giá trị ASCII đầu tiên
khác biệt ký tự "p" trừ đi giá trị ASCII tương ứng chữ "v" bằng -6:
StringCompareNoCase ("Apple", "Avocado")
- Hàm StringCompareEncrypted (): so sánh một chuỗi mã hóa với một chuỗi không được
mã hóa và trả về một kết quả Boolean. Bạn có thể sử dụng chức năng này cho mật khẩu xác minh.
Cú pháp:
Result = StringCompareEncrypted(plain, encrypted)
Tham số:
Plain: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi. mã hóa.
Encrypted: một thông báo tagname được mã hóa.
Ví dụ: lệnh này trả về 1 khi chuỗi văn bản không mã hóa và mã hóa là giống hệt nhau, nếu không
nó trả về 0. Passwd là một tin nhắn thẻ có chứa một giá trị từ một đầu vào người sử dụng mã hóa.
PlainTxt là một thẻ thông điệp dựa vào đó người sử dụng đầu vào được so sánh:
StringCompareEncrypted (PlainTxt, Passwd)
Trong một tập lệnh , có thể chuyển đổi các giá trị trong các tagname để loại dữ liệu khác nhau bằng
cách sử dụng QuickScripts để chuyển đổi. Điều này cho phép thao tác dữ liệu chuỗi với chức năng
toán học hoặc để đăng nhập giá trị Viewer ® Đăng nhập ArchestrA với mục đích gỡ lỗi.
- Hàm Text (): hàm Text() trả về giá trị của một số như là một chuỗi theo một định dạng được
chỉ định. Bạn có thể muốn làm điều này để định dạng một giá trị theo một cách nào đó hoặc để kết
hợp các kết quả với các chuỗi giá trị khác để sử dụng tiếp.
Cú pháp:
Đồ án 2D GVHD: Lê Long Hồ
Page 61
Result = Text (number, format)
Tham số:
Number: một số giá trị văn bản, tagname tương tự, hay chữ số biểu thức.
Format: sử dụng "#"; "0"; ","; ".".
Sử dụng "#" để đại diện cho một chữ số, đại diện cho các số thập phân "." phân cách, "0" để
buộc một số không hàng đầu, và "," để chèn một dấu phẩy.
Nếu bạn sử dụng một số không trong định dạng, nó phải được theo sau bởi số không. Tất cả
các nơi ở phía bên phải của điểm thập phân phải luôn luôn là số không. Ví dụ, 000,00 thì chính xác,
trong khi # 0 # 0,0 # không chính xác.
Các vòng chức năng giá trị, nếu cần thiết. Một chuỗi chữ, tagname tin nhắn, hoặc biểu thức
chuỗi.
Ví dụ:
Text (66, "0,00") trả về "66,00".
Text (1234, "#") trả về "1234".
Text (123,4, "#, # # 0,0") trả về "123,4".
Text (12,3, "0,000.0") trả về "0,012.3".
Text (3.57, "# #") trả về "3,6".
Lệnh này trả về chuỗi " Reactor Pressure is 1690.3 mbar " pressure "chứa giá trị 1690,2743.
"Reactor Pressure is "+Text(pressure,"#.#")+"mbar"
- Hàm StringFromIntg(): trong một tập lệnh, có thể chuyển đổi một giá trị số nguyên cho
một giá trị chuỗi bằng cách sử dụng hàm StringFromIntg ().
Hàm này trả về chuỗi giá trị của một giá trị số nguyên và thực hiện chuyển đổi cơ sở đồng
thời. Điều này có thể được sử dụng, ví dụ, để hiển thị văn bản với các giá trị số nguyên hoặc để
chuyển đổi các giá trị số nguyên số thập lục phân.
Cú pháp:
Result = StringFromIntg (number, base)
Đồ án 2D GVHD: Lê Long Hồ
Page 62
Tham số:
Number: một chữ số nguyên giá trị, số nguyên tagname, hoặc số nguyên biểu thức.
Base: các cơ sở của chuyển đổi. Này được sử dụng để chuyển đổi các giá trị đến một
cơ sở khác nhau, chẳng hạn như nhị phân (2), số thập phân (10) hệ thập lục phân (16). Một chữ số
nguyên giá trị, số nguyên tagname, hoặc biểu thức số nguyên.
Ví dụ :
StringFromIntg (26,2) trả về "11.010" (binary).
StringFromIntg (26,8) trả về "32" bởi vì (8: 26 = 3 * 8 + 2)
StringFromIntg (26,10) trả về "26" (thập phân).
StringFromIntg (26,16) trả về "1A" (thập lục phân).
- Hàm StringFromReal(): trong một tập lệnh , bạn có thể chuyển đổi một giá trị thực sự cho
một chuỗi giá trị bằng cách sử dụng hàm StringFromReal (). Có thể chỉ định:
Vòng giá trị cho một độ chính xác quy định.
Vượt qua giá trị trong ký hiệu theo cấp số nhân.
Điều này có thể được sử dụng, ví dụ, xuất văn bản cùng với thực tế giá trị hoặc để hiển thị các số
thực với hàm mũ ký hiệu.
Cú pháp:
Result = StringFromReal (number, precision, type)
Tham số:
Number: một giá trị văn bản, tương tự tagname, hoặc biểu thức số.
Precision: quy định cụ thể có bao nhiêu chữ số thập phân sẽ được sử dụng. một chữ
giá trị số nguyên, số nguyên tagname, hoặc biểu thức số nguyên.
Type: chỉ định nếu được sử dụng các ký hiệu theo cấp số nhân. một chữ chuỗi,
tagname tin nhắn, hoặc biểu thức chuỗi.
"F" - Sử dụng ký hiệu điểm nổi.
"E" - Sử dụng ký hiệu theo cấp số nhân với "e" chữ thường.
Đồ án 2D GVHD: Lê Long Hồ
Page 63
"E" - Sử dụng ký hiệu theo cấp số nhân với "E" viết hoa.
Ví dụ :
StringFromReal (263,355, 2, "f") trả về "263,36".
StringFromReal (263,355, 2, "e") trả về "2.63e2".
StringFromReal (263,55, 3, "E") trả về "2.636E2".
StringFromReal (0,5723, 2, "E") trả về "5.72E-1".
- Hàm StringTolntg(): trong một tập lệnh, bạn có thể chuyển đổi một giá trị chứa trong một
chuỗi đến một giá trị số nguyên bằng cách sử dụng hàm StringToIntg (). Có thể sử dụng để đọc một
giá trị chứa ở đầu một chuỗi thành một thẻ số nguyên .
Cú pháp:
Result = StringToIntg (string)
Tham số:
String: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Chú thích:chức năng kiểm tra ký tự đầu tiên của chuỗi. Nếu nó là một số, nó cố gắng để đọc kí tự
này và các ký tự sau là một số nguyên cho đến khi một kí tự không phải số được đáp ứng. Chức
năng bỏ qua không gian hàng đầu trong chuỗi.
Ví dụ:
StringToIntg ("ABCD") trả về 0.
StringToIntg (13,4 mbar ") trả về 13.
StringToIntg ("pressure is 13,4") trả về 0.
Để trích xuất các số nguyên đầu tiên từ một chuỗi (mtag) không phải là ở bắt đầu và để lưu
trữ nó trong itag tag số nguyên, sử dụng tập lệnh hành động sau đây:
DIM i AS INTEGER;
DIM tmp AS INTEGER;
FOR i = 1 TO StringLen(mtag) run variable i over the characters of mtag
tmp = StringASCII(StringMid(mtag, i, 1)) - 48; detect ASCII value
Đồ án 2D GVHD: Lê Long Hồ
Page 64
IF (tmp>=0 AND tmp<10) THEN if ASCII value represented "0" - "9"
itag = StringToIntg(StringMid(mtag, i, 0)); set itag to value from that position and exit
loop
EXIT FOR;
ENDIF;
NEXT;
- Hàm StringToReal(): trong một tập lệnh, có thể chuyển đổi một giá trị chứa trong một
chuỗi đến một giá trị thực tế bằng cách sử dụng hàm StringToReal (). Có thể sử dụng để đọc một
giá trị chứa ở đầu một chuỗi thành một thẻ thực sự cho các hoạt động .
Cú pháp:
Result = StringToReal (string)
Tham số:
String: một chuỗi chữ, tagname tin nhắn, hoặc biểu thức chuỗi.
Chú thích: chức năng kiểm tra ký tự đầu tiên của chuỗi. Nếu nó là một số, nó cố gắng để đọc số này
và các ký tự sau là một số thực cho đến khi một kí tự không phải số được đáp ứng. các chức năng
bỏ qua không gian hàng đầu trong chuỗi.
Để trích xuất số lượng thực sự đầu tiên từ một chuỗi (tin nhắn tag mtag) mà không phải
ngay từ đầu và lưu trữ nó trong thẻ thực rtag1, sử dụng tập lệnh sau đây:
DIM i AS INTEGER;
DIM tmp AS INTEGER;
FOR i = 1 TO StringLen(mtag) run variable i over the characters of mtag
tmp = StringASCII(StringMid(mtag, i, 1)) - 48; detect ASCII value
IF (tmp>=0 AND tmp<10) THEN if ASCII value represented "0" - "9"
rtag = StringToReal(StringMid(mtag, i, 0)); set rtag to value from that
position and exit loop
EXIT FOR;
Đồ án 2D GVHD: Lê Long Hồ
Page 65
ENDIF;
NEXT;
Ví dụ:
StringToReal ("ABCD") trả về 0.
StringToReal (13,4 mbar ") trả về 13,4.
StringToReal ("pressure is 13,4") trả về 0
- Hàm DText(): trong một tập lệnh, có thể chuyển đổi một giá trị Boolean thành một giá trị
chuỗi bằng cách sử dụng hàm DText (). Có thể sử dụng chức năng này để sử dụng tin nhắn tùy
chỉnh hiển thị liên kết. Hàm này trả về chuỗi giá trị khác nhau tùy thuộc vào giá trị của một giá trị
Boolean.
Cú pháp:
Result= Dtext (Boolean, stringtrue, stringfalse)
Tham số:
Boolean: một giá trị Boolean nghĩa đen, tagname rời rạc, hoặc Boolean biểu thức.
Stringtrue: chuỗi để được trả lại nếu Boolean là đúng sự thật. Một chuỗi chữ giá trị,
tagname tin nhắn, hoặc biểu thức chuỗi.
Stringfalse: chuỗi để được trả lại nếu Booleanis false. Một chuỗi chữ giá trị, tagname
tin nhắn, hoặc biểu thức chuỗi.
Ví dụ:
Tập lệnh này trả về "Running" nếu chuyển đổi tagname rời rạc là TRUE, nếu không nó trả
về "Stopped".
DText(switch,"Running","Stopped")
Tập lệnh này trả về điệp On và Off khác switch2 rời rạc tùy thuộc vào giá trị của rời rạc
switch1.
DText (switch1, switch2.OnMsg, switch2.OffMsg)
Đồ án 2D GVHD: Lê Long Hồ
Page 66
Làm việc với cửa sổ InTouch khi Runtime: trong một tập lệnh , có thể kiểm soát hoạt động
và sự xuất hiện của cửa sổ InTouch. Có thể viết một tập lệnh bằng cách sử dụng QuickScripts xem
riêng InTouch hoặc toàn bộ màn hình.
Hiển thị một danh sách của Open Windows : trong một tập lệnh, bạn có thể hiển thị một hộp
thoại chứa danh sách các cửa sổ InTouch đang mở bằng cách sử dụng:
Hàm OpenWindowsList ()
Hàm OpenWindowList ()
Hiển thị một hộp thoại có chứa danh sách các cửa sổ InTouch hiện đang mở.
Bạn không thể sử dụng chức năng này trong một liên kết hình ảnh động.
Cú pháp:
[Result =] OpenWindowsList ();
Ví dụ : tập lệnh này sẽ mở ra hộp thoại và hiển thị tất cả cửa sổ InTouch đang mở.
OpenWindowsList ()
Kiểm tra nếu 1 cửa sổ mở, đóng hoặc không tồn tại: trong một tập lệnh, kiểm tra nếu một
cửa sổ InTouch mở, đóng, hoặc không tồn tại bằng cách sử dụng hảm WINDOWSTATE ()
- Hàm windowstate(): kiểm tra nếu một cửa sổ InTouch là mở cửa, đóng cửa, hoặc không tồn
tại.
Cú pháp:
Result = WINDOWSTATE (windowname)
Tham số:
Windowname: tên của cửa sổ. Một giá trị chuỗi chữ, tin nhắn tagname, hoặc biểu
thức chuỗi.
Quay trở lại giá trị: một giá trị số nguyên với ý nghĩa sau đây:
0 – Cửa sổ InTouch tồn tại và hiện đang đóng cửa
1 – Cửa sổ InTouch tồn tại và hiện đang mở
Đồ án 2D GVHD: Lê Long Hồ
Page 67
2 – Cửa sổ InTouch không tồn tại
Ví dụ :
Tập lệnh này trả về 0, nếu cửa sổ InTouch chính tồn tại, nhưng không mở.
WINDOWSTATE ("Main")
Mở một cửa sổ Intouch: trong một tập lệnh, bạn có thể mở một cửa sổ InTouch bằng cách sử
dụng một trong những tập lệnh chức năng sau:
Dùng Show để Mở một cửa sổ InTouch tại các vị trí quy định của nó cài đặt.
Dùng ShowAt() để Mở một cửa sổ InTouch tại một vị trí xác định. mở ra cửa sổ tập trung
vào vị trí. Hàm này cũng có thể được sử dụng để di chuyển một cửa sổ đã mở ra.
Dùng ShowHome để Mở cửa sổ InTouch quy định trong Tab Windows Home Xem cửa sổ
Properties và đóng các cửa sổ khác.
Dùng ShowTopLeftAt() để mở một cửa sổ InTouch tại một vị trí xác định . mở cửa sổ sắp
xếp góc trên cùng bên trái của vị trí này. Chức năng này cũng có thể được sử dụng để di chuyển
một cửa sổ đã mở ra.
- Hàm Show(): mở ra một cửa sổ InTouch ở vị trí mặc định của nó.
Cú pháp:
Show windowname
Tham số:
Windowname: tên của cửa sổ được mở ra. Một chuỗi chữ giá trị, tagname tin nhắn,
hoặc biểu thức chuỗi.
Ví dụ:
Tập lệnh này sẽ mở ra cửa sổ chính.
Show "Main";
Tập lệnh này sẽ mở ra cửa sổ với tên được lưu trữ trong thẻ tin nhắn wname.
Show wname;
Đồ án 2D GVHD: Lê Long Hồ
Page 68
- Hàm ShowAt(): mở một cửa sổ InTouch tại một vị trí được chỉ định.Nó cũng có thể di
chuyển một cửa sổ InTouch đã mở theo một vị trí.
Vị trí này là điểm trung tâm của cửa sổ.
Cú pháp:
ShowAt (windowname, xPos, ypos)
Tham số:
Windowname: tên của cửa sổ sẽ được mở hoặc di chuyển.
xPos: vị trí ngang bằng điểm trung tâm nơi cửa sổ sẽ được chuyển đến. Một giá trị
văn bản , tagname tương tự hay chữ số biểu thức.
ypos: vị trí thẳng đứng trong điểm trung tâm cửa sổ được chuyển đến. Một giá trị văn
bản, tagname tương tự hay biểu thức số.
Ví dụ:
Tập lệnh này sẽ mở ra cửa sổ chính để nó nằm ở giửa vị trí x: 450, y: 130.
ShowAt ("Main", 450.130);
Tập lệnh này sẽ mở ra cửa sổ gọi là hộp thoại và vị trí của nó.
ShowAt ("UserDialog", $ ObjHor, $ ObjVer);
- Hàm ShowHome(): mở cửa sổ InTouch (s) mà bạn đã chỉ định trong Trang chủ
Windowstab trong hộp WindowViewerPropertiesdialog và đóng cửa các cửa sổ khác.
Cú pháp:
ShowHome;
- Hàm ShowTopLeftAt() : mở một cửa sổ InTouch tại một vị trí được chỉ định. Cũng có thể
là được sử dụng để di chuyển một cửa sổ đang mở.
Cú pháp:
ShowTopLeftAt (windowname, xPos, ypos)
Tham số:
Windowname: tên của cửa sổ sẽ được mở hoặc di chuyển.
Đồ án 2D GVHD: Lê Long Hồ
Page 69
xPos: vị trí ngang bằng điểm các cửa sổ còn lại sẽ được chuyển đến. Một giá trị văn
bản, tagname tương tự, hoặc số biểu hiện.
ypos: vị trí thẳng đứng của điểm cạnh trên cửa sổ sẽ được chuyển đến. Một giá trị văn
bản, tagname tương tự hay chữ số biểu thức.
Ví dụ:
Tập lệnh này sẽ mở ra cửa sổ chính góc trái hàng đầu của mình được đặt ở x: 450, y: 130.
ShowTopLeftAt ("Main", 450.130);
Di chuyển và thay đổi kích thước một cửa sổ: trong scripb, có thể di chuyển và chỉnh sửa
một cửa sổ InTouch đã mở với chức năng WWMoveWindow(). Một kích thước và một vị mới tạm
thời trong khi cửa sổ thiết lập đang được mở.
- Hàm WWMoveWindow() : di chuyển và chỉnh sửa kích thước một cửa sổ InTouch đang
mở tới một vị trí và một kích thước mới. Một kích thước và một vị mới tạm thời trong khi cửa sổ
thiết lập đang được mở.
Cú pháp:
WWMoveWindow ( windowname, xpos, ypos, ysize)
Thông số:
Windowname: tên cửa sổ sẽ được mở hoặc di chuyển.
Xpos: vị trí nằm ngang mà cạch trái của cửa sổ được di chuyển đến. Một chuỗi giá
trị, tagname tương tự hoặc một biểu thức số.
Ypos: vị trí cột dọc mà cạnh trái của cửa sổ được di chuyển đến. Một chuỗi giá trị,
tagname tương tự hoặc một biểu thức số.
Xsize: thiết lập kích thước đường nằm ngang của cửa sổ. Một giá trị hằng số, một
tagname tương tự hoặc một biểu thức số.
Ysize: thiết lập kích thước đường cột dọc của cửa sổ. Một giá trị hằng số, một
tagname tương tự hoặc một biểu thức số.
Đồ án 2D GVHD: Lê Long Hồ
Page 70
Ẩn các cửa sổ InTouch: trong script, có thể ẩn các cửa sổ Intouch bằng cách sử dụng một
trong hai chức năng sau:Sử dụng Hide để ẩn một cửa sổ xác định và sử dụng HideSefl để ẩn hoạt
động của cửa sổ hiện thời.
- Hàm Hide() :ẩn (giấu) một cửa sổ Intouch
Cú pháp :
Hide windowname;
Thông số:
Windowname: tên của cửa sổ sẽ được ẩn. Một giá trị chuỗi hằng số, thông tin
tagname hoặc một dãy biểu thức số.
Ví dụ:
Cửa sổ script được ẩn được gọi là userconfirmation.
Hide “userconfirmation”
- Hàm HideSeft( ): ẩn (giấu) hoạt động của cửa sổ hiện thời.
Chú ý: chức năng này có thể chỉ được sử dụng trong một hành động QuickScript.
Cú pháp:
HideSeft;
Ví dụ:
HideSift;
Thay đổi màu của cửa sổ: trong Script, có thể thay đổi màu của một cửa sổ Intouch đang mở
bằng cách sử dụng chức năng ChangeWindowColor( ). Chức năng ChangeWindowColor( ): thay
đổi màu của cửa sổ Intouch đang mở và khôi phục một mã trả về.
Cú pháp:
Result = ChangeWindowColor (windowname, rValue, gValue, bValue)
Thông số:
Windowname : tên của cửa sổ mà màu sắc được thay đổi. Một giá trị chuỗi hằng số,
thông tin tagname hoặc một dãy biểu thức số.
Rvalue: mật độ của màu đỏ. Một số nguyên, tagname nguyên hoặc biểu thức nguyên
trong khoảng từ 0 đến 255.
Đồ án 2D GVHD: Lê Long Hồ
Page 71
Gvalue: mật độ của màu xanh lá cây. Một số nguyên, tagname nguyên hoặc biểu thức
nguyên trong khoảng từ 0 đến 255.
Bvalue: mật độ của màu xanh da trời. Một số nguyên, tagname nguyên hoặc biểu
thức nguyên trong khoảng từ 0 đến 255.
Giá trị trả về:một giá trị như sau:
0: không thành công, cửa sổ không xác định hoặc giá trị ba màu cơ bản sai.
1: thành công
2: không thành công. Cửa sổ tồn tại nhưng nó không được mở.
Làm việc với thông tin ngày và thời gian: trong scripr bạn có thể sử dụng tag hệ thống và
chức năng QuickScript để sử dụng cài đặt thời gian và ngày của hệ thống trong phép tính. Tập lệnh
Intouch cũng hỗ trợ việc tính toán liên quan đến múi giờ khác nhau và Daylight Saving Time.
Truy suất thông tin về ngày và thời gian: trong một script có thể sử dụng các trạng thái của
các tag hệ thống số và một chức năng script để truy suất thông tin thời gian và ngày trên hệ thống.
Các tag này và chức năng script có thể được sử dụng trong các phép toán khác. Các tag hệ
thống sau và chức năng script có sẵn:
- Sử dụng $Year để trả về năm hiện hành.
- Sử dụng $Month để trả về tháng hiện hành của năm.
- Sử dụng $Day để trả về ngày hiện thời của tháng.
- Sử dụng $Hour để trả về giờ hiện thời của ngày.
- Sử dụng $Minute để trả về phút hiện thời của giờ.
- Sử dụng $Second để trả về giây hiện thời của phút.
- Sử dụng $Mses để trả về mili giây hiện thời.
- Sử dụng $Time để trả về thời gian trong mili giây đã qua kể từ nửa đêm theo múi giờ địa
phương.
- Sử dụng $Date để trả về toàn bộ số ngày đã qua kể từ 1-1-1970 theo múi giờ địa phương.
- Sử dụng DateTime để trả về số của ngày ( bao gồm một số phần của một ngày) đã trôi qua
kể từ ngày 1-1-1970 theo giờ địa phương.
- Sử dụng DateTimeGMT() để trả về số của ngày( bao gồm một số phần của ngày) đã trôi qua
kể từ 1-1-1970 trên Coordinated Universal Time (UTC).
Đồ án 2D GVHD: Lê Long Hồ
Page 72
Lấy ra thông tin chuỗi ngày và thời gian: trong một chương trình, bạn có thể lấy ra thông tin
ngày và thời gian dạng chuỗi. Điều này thường được sử dụng để hiển thị ngày hoặc thời gian trên
màn hình hoặc khi bạn tính toán mà kết quả là chuỗi ngày/giờ:
- $TimeString: để trả về giá trị thời gian hệ thống.
- $DateString: để trả về giá trị ngày hệ thống dạng ngắn.
- UTCDateTime: để trả về giá trị thời gian hoặc ngày UTC.
Chuyển thông tin ngày và thời gian sang dạng chuỗi: trong một chương trình, có thể chuyển
thông tin ngày và thời gian sang dạng chuỗi để dễ trình diễn và hiển thị theo nhu cầu. Bạn có thể sừ
dụng nhóm chức năng sau.
- StringFromTime(): để chuyển thời gian biểu UTC sang tời gian địa phương và trả về giá trị
thời gian dạng chuỗi.
- wwStringFromTime(): để chuyển thời gian địa phương sang thời gian UTC và trả về giá trị
thời gian dạng chuỗi.
- StringFromTimeLocal(): để chuyển một thời gian biểu sang thời gian dạng chuỗi.
Kiểm Tra Trạng Thái Daylight Saving Time: Trong một chương trình bạn có thể kiểm tra xem
Daylight Saving Time có tích cực hay không bằng cách sử dụng chức năng wwIsDaylightSaving().
- Hàm wwIsDaylightSaving(): trả về giá trị daylight savings time lúc này có tích cực hay
không
Cú Pháp:
Result = wwIsDaylightSaving()
Giá Trị Trả Về:
Trả về giá trị có nghĩa như sau:
0 - Daylight Savings Time không tích cực.
1 - Daylight Savings Time tích cực.
Lấy ra thông tin liên quan đến hệ thống: trong một chương trình bạn có thể lấy ra thông tin
liên quan đến hệ thống bằng cách sử dụng nhóm chức năng nhanh sau:
- GetNodeName(): lấy ra tên máy.
- InfoDisk(): lấy ra thông tin ổ đĩa.
Đồ án 2D GVHD: Lê Long Hồ
Page 73
- InfoFile(): lấy ra thông tin về một file.
- InfoFile(): lấy ra thông tin về một window environment.
Đồ án 2D GVHD: Lê Long Hồ
Page 74
CHƯƠNG III : TỔNG QUAN VỀ PLC VÀ MODULE MỞ RỘNG
III.1 GIỚI THIỆU:
PLC (Programmable Logic Control) là thiết bị có thể lập trình được thiết kế chuyên
dùng trong công nghiệp để điều khiển các tiến trình xử lí từ đơn giản đến phức tạp, tuỳ
thuộc vào người điều khiển mà có thể thực hiện một loạt các chương trình hoặc sự kiện này
được kích hoạt bởi các tác nhân kích thích (hay còn gọi là ngõ vào) tác động vào PLC hoặc
qua các bộ định thời (Timer) hay các sự kiện được đếm qua bộ đếm. Khi một sự kiện được
kích hoạt nó sẽ bật ON, OFF hoặc phát ra một chuỗi xung ra các thiết bị bên ngoài được gắn
vào ngõ ra của PLC. Như vậy nếu ta thay đổi các chương trình được cài đặt trong PLC là ta
có thể thực hiện các chức năng khác nhau trong các môi trường điều khiển khác nhau. Hiện
nay PLC đã được nhiều hãng khác nhan sản xuất như: Siemens, Omron, Mitsubishi, Pesto,
Alan Bradley, Shneider. Hitachi, …. Mặt khác ngoài PLC cũng đã bổ cung them các thiết bị
mở rộng khác như: các cổng mở rộng AI (Analog Input), DI(Digital Input), các thiết bị hiện
thị, các bộ vào.
PLC cho phép thực hiện linh họat các thuật toán điều khiển logic thông qua ngôn ngữ
lập trình. PLC được sử dụng trong nhiều lập trình ứng dụng khác nhau và có những lợi ích
như:
- PLC dễ dàng thay thay đổi chương trình điều khiển để thích ứng một yêu cầu mới mà
vẫn có thể giữ nguyên thiết kế phần cứng, đầu nối dây…
- PLC có thể điều khiển nhiều chức năng khác nhau từ những thao tác đơn giản, lặp lại,
liên tục đến những thao tác đòi hỏi chính xác, phức tạp.
- PLC dễ dàng hiệu chỉnh chính xác công việc điều khiển và xử lý nhanh chóng các
lệnh, từ lệnh logic đơn giản đến các lệnh đếm (Counter), định thời (time), chương trình con
(SBS) v.v…
- Giao tiếp dễ dàng với các thiết bị ngoại vi, các module và các thiết bị phụ trợ như
màn hình hiển thị.
- Có khả năng chống nhiễu trong công nghiệp.
III.2 ƯU – NHƯỢC ĐIỂM CỦA PLC
III.2.1 Ưu điểm
PLC dễ dàng tạo luồng ra và dễ dàng thay đổi chương trình.
Chương trình PLC dễ dàng thay đổi và sửa chữa: Chương trình tác động đến bên trong bộ
PLC có thể được người lập trình thay đổi dễ dàng bằng xem xét việc thực hiện và giải quyết tại chỗ
những vấn đề liên quan đến sản xuất, các trạng thái thực hiện có thể nhận biết dễ dàng bằng công
nghệ điều khiển chu trình trước đây. Như thế, người lập trình chương trình thực hiện việc nối
Đồ án 2D GVHD: Lê Long Hồ
Page 75
PLC với công nghệ điều khiển chu trình. Người lập chương trình được trang bị các công cụ phần
mềm để tìm ra lỗi cả phần cứng và phần mềm, từ đó sửa chữa thay thế hay theo dõi được cả phần
cứng và phần mềm dễ dàng hơn.
Các tín hiệu đưa ra từ bộ PLC có độ tin cậy cao hơn so với các tín hiệu được cấp từ bộ điều
khiển bằng rơle.
Phần mềm lập trình PLC dễ sử dụng: phần mềm được hiểu là không cần những người sử
dụng chuyên nghiệp sử dụng hệ thống rơle tiếp điểm và không tiếp điểm. Không như máy tính,
PLC có mục đích thực hiện nhanh các chức năng điều khiển, chứ không phải mang mục đích làm
dụng cụ để thực hiện chức năng đó. Ngôn ngữ dùng để lập trình PLC dễ hiểu mà không cần đến
khiến thức chuyên môn về PLC. Cả trong việc thực hiện sửa chữa cũng như việc duy trì hệ thống
PLC tại nơi làm việc. Việc tạo ra PLC không những dễ cho việc chuyển đổi các tác động bên ngoài
thành các tác động bên trong (tức chương trình), mà chương trình tác động nối tiếp bên trong còn
trở thành một phần mềm có dạng tương ứng song song với các tác động bên ngoài. Việc chuyển đổi
ngược lại này là sự khác biệt lớn so với máy tính.
Thực hiện nối trực tiếp : PLC thực hiện các điều khiển nối trực tiếp tới bộ xử lý (CPU) nhờ
có đầu nối trực tiếp với bộ xử lý. Đầu I/O này được đặt tại giữa các dụng cụ ngoài và CPU có chức
năng chuyển đổi tín hiệu từ các dụng cụ ngoài thành các mức logic và chuyển đổi các giá trị đầu ra
từ CPU ở mức logic thành các mức mà các dụng cụ ngoài có thể làm việc được.
Dễ dàng nối mạch và thiết lập hệ thống: trong khi phải chi phí rất nhiều cho việc hàn mạch
hay nối mạch trong cấp điều khiển rơle, thì ở PLC những công việc đó đơn giản được thực hiện bởi
chương trình và các chương trình đó được lưu giữ ở băng catssete hay đĩa CDROM, sau đó thì chỉ
việc sao trở lại.
Thiết lập hệ thống trong một vùng nhỏ: vì linh kiện bán dẫn được đem ra sử dụng rộng dãi
nên cấp điều kiện này sẽ nhỏ so với cấp điều khiển bằng rơle trước đây.
Tuổi thọ là bán- vĩnh cửu: vì đây là hệ chuyển mạch không tiếp điểm nên độ tin cậy cao, tuổi thọ
lâu hơn so với rơle có tiếp điểm.
III.2.2 Nhược điểm:
Do chưa tiêu chuẩn hoá nên mỗi công ty sản xuất ra PLC đều đưa ra các ngôn ngữ lập trình
Đồ án 2D GVHD: Lê Long Hồ
Page 76
khác nhau, dẫn đến thiếu tính thống nhất toàn cục về hợp thức hoá. Trong các mạch điều khiển với
quy mô nhỏ, giá của một bộ PLC đắt hơn khi sử dụng bằng phương pháp rơle.
III.3 CẤU TRÚC CỦA PLC.
Một hệ thống PLC thông dụng gồm có năm phần cơ bản: bộ xử lý, bộ nhớ, bộ nguồn, giao
diện xuất nhập và thiết bị lập trình.
III.3.1 Bộ xử lý của PLC :
Bộ xử lý còn gọi là bộ xử lý trung tâm (CPU), là linh kiện chứa bộ vi xử lý, biên dịch các tín
hiệu nhập và thực hiện các hoạt động điều khiển theo chương trình được lưu động trong bộ nhớ
của CPU, truyền các quyết định dưới dạng tín hiệu hoạt động đến các thiết bị xuất.
III.3.2 Bộ nguồn:
Bộ nguồn có nhiệm vụ chuyển đổi điện áp AC thành điện áp thấp DC (5V) cần thiết cho bộ
xử lý và các mạch điện có trong các module giao diện nhập và xuất.
III.3.3 Bộ nhớ:
Bộ nhớ là nơi lưu chương trình được sử dụng cho các hoạt động điều khiển, dưới sự kiểm tra
của bộ vi xử lý. Trong hệ thống PLC có nhiều loại bộ nhớ :
Bộ nhớ chỉ để đọc ROM (Read Only Memory) cung cấp dung lượng lưu trữ cho hệ điều
hành và dữ liệu cố định được CPU sử dụng. Tùy thuộc vào cách tạo nội dung, cách xóa nội dung,
cách lập nội dung mới vào nó mà ta có các loại bộ nhớ Rom khác nhau như: PROM, EPROM,
RPROM, EEPROM, EAROM. Ở đây ta tìm hiểu hai loại Rom mà được sử dụng rộng rãi trong các
PLC là EPROM và EEPROM.
- EPROM (Erasable Programmable Read – Only Memory): Bộ nhớ Rom có thể xóa nội dung
chương trình. Nó được xóa bằng tia cực tím, sau khi nội dung cũ đã xóa thì người ta dung một thiết
bị đặc biệt để ghi nội dung chương trình mới vào Rom.
- EEPROM (Elwctrically Erasable Programmable Read – Only Memory): Bộ nhớ loại này
Đồ án 2D GVHD: Lê Long Hồ
Page 77
cũng giống như bộ nhớ EPROM nhưng phương thức xóa nội dung chương trình đơn giản hơn. Tức
là nó được xóa bằng điện và việc nạp một chương trình mới cho nó cũng đơn giản hơn. Ngoài hai
loại trên người ta còn thường sử dụng FLASH EROM. Đối với những bộ điều khiển logic theo
chương trình thuộc loại lớn có thể có nhiều Module CPU nhằm tăng tốc độ xử lý.
Bộ nhớ truy cập ngẫu nhiên RAM ( Ramden Accept Memory): đây là nơi lưu trữ thông tin
theo trạng thái của các thiết bị nhập, xuất, các giá trị của đồng hồ thời chuẩn các bộ đếm và các
thiết bị nội vi khác. RAM dữ liệu đôi khi được xem là bảng dữ liệu hoặc bảng ghi. Một phần của bộ
nhớ này, khối địa chỉ, dành cho các địa chỉ ngõ vào, ngõ ra, cùng với trạng thái của ngõ vào và ngõ
ra đó. Một phần dành cho dữ liệu được cài đặt trước, và một phần khác dành để lưu trữ các giá trị
của bộ đếm, các giá trị của đồng hồ thời chuẩn, vv… Bộ nhớ chỉ đọc có thể xoá và lập trình được
( EPROM ). Là các ROM có thể được lập trình, sau đó các chương trình này được thường trú trong
ROM.
Người dùng có thể thay đổi chương trình và dữ liệu trong RAM. Tất cả các PLC đều có một
lượng RAM nhất định để lưu chương trình do người dùng cài đặt và dữ liệu chương trình. Tuy
nhiên để tránh mất mát chương trình khi mất nguồn, PLC sử dụng ắc quy để duy trì nội dung RAM
trong một thời gian. Sau khi được cài đặt vào RAM chương trình có thể được tải vào vi mạch của
bộ nhớ EPROM, thường là module có khoá nối với PLC, do đó chương trình trở thành vĩnh cửu.
Ngoài ra còn có các bộ đệm tạm thời lưu trữ các kênh nhập/xuất ( I/O). Dung lượng lưu trữ
của bộ nhớ được xác định bằng số lượng từ nhị phân có thể lưu trữ được. Như vậy nếu dung lượng
bộ nhớ là 256 từ, bộ nhớ có thể lưu trữ 256x8 = 2048 bit, nếu sử dụng các từ 8 bit và 256x16 =
4096 bit nếu sử dụng các từ 16 bit.
III.3.4 Thiếp bị lập trình.
Thiết bị lập trình được sử dụng để nhập chương trình vào bộ nhớ của bộ xử lý. Chương trình
được viết trên thiết bị này sau đó được chuyển đến bộ nhớ của PLC.
III.3.5 Các phần nhập và xuất.
Là nơi bộ xử lý nhận các thông tin từ các thiết bị ngoại vi và truyền thông tin đến các thiết bị
bên ngoài. Tín hiệu nhập có thể đến từ các công tắc hoặc từ các bộ cảm biến vv… Các thiết bị xuất
Đồ án 2D GVHD: Lê Long Hồ
Page 78
có thể đến các cuộn dây của bộ khởi động động cơ, các van solenoid vv…
III.4 PLC MITSHUBISHI.
III.4.1 Hệ thống Melsec họ Q.
Hệ thống MELSEC họ Q là một hệ thống PLC đa chức năng. Phần chính của PLC bao gồm
phần khung, module nguồn. CPU thực hiện các lệnh. Tùy thuộc vào các ứng dụng mà có nhiều
module được ghép nối - ví dụ như module input/output và một số module chức năng, có thể cài đặt
cho phần khung. Điện áp cài đặt được cấp bởi module nguồn.
Đồ án 2D GVHD: Lê Long Hồ
Page 79
III.4.2 Main base Q38B.
Phần khung cung cấp các lỗ cắm cho một module nguồn, có thể lên đến 4 module CPU, I/O
module và các module thông minh khác cũng có thể gắn lên thanh ray.
Số module nguồn có thể gắn lên: 1
Số module I/O và các module thông minh khác có thể gắn lên : 8
III.4.3 Module nguồn Q61P-A2.
Hệ thống MELSEC họ Q được cấp nguồn DC 5V, module nguồn với điện áp vào 24V DC
hoặc 240V DC đều có thể sử dụng được.
Điện áp ra của module nguồn được cấp trực tiếp vào phần khung.
Nguồn 5V DC Q62P cũng có thể xuất ra điện áp 24V DC để cung cấp cho các thiết bị khác
như cảm biến. Ngõ ra đó có thể truyền tải với dòng tối đa ở 0,6A.
Đồ án 2D GVHD: Lê Long Hồ
Page 80
Thông số:
Điện áp ngõ vào 200-220V AC
Mức tiêu thụ 105 VA
Điện áp ra 5V DC
Dòng 6A
III.4.4 PLC Q02HCPU.
CPU Q02H của Mitsubishi được xếp vào loại có tính thực thi cao của hãng.
Đồ án 2D GVHD: Lê Long Hồ
Page 81
Mỗi CPU được trang bị một USB giao diện để dễ dàng lập trình và hiển thị trên máy tính cá
nhân.
Kết nối ngõ vào và ngõ ra tốt.
Thay đổi điểm số học theo IEEE 754.
Báo cáo đặc biệt để xử lý pid điều khiển vòng lặp.
Chức năng toán học, chẳng hạn như chức năng góc / mũ và logarit.
Nhiều bộ xử lý có thể tích hợp lên đến 4 module CPU.
Thông số Q02H CPU
Kiểu Kết nối nhiều module
I/O 4096/8192
Tính năng CPU tự phát hiện Tìm lỗi CPU, Watch Dog, lỗi pin, lỗi bộ nhớ, kiểm tra
chương trình, lỗi nguồn, lổi cầu chì
Tích hợp nhiều bộ xử lí Hỗ trợ lên đến 4 module CPU có thể sử dụng kết hợp trên
một nền tảng
Pin đệm Mỗi CPU đều được lắp pin đệm với tuội thọ lên đến 5
năm
Kiểu bộ nhớ RAM, ROM, FLASH
Sức chứa bộ nhớ
Tất cả: dưới 32Mb
Chương trình: 28k steps (112 Kbyte)
Chu kì quét 34ns/log.instruction
Time(T) 2048
Counter(C) 1024
Relay (M) 8192
Ổ ghi/ thanh ghi (D) 12288
File (R) 65536/max.1042432
Interrupt pointer (R) 256
Pointer (I) 4096
Annunciator (F) 2048
Đồ án 2D GVHD: Lê Long Hồ
Page 82
Index register (Z) 16
Link Relay(B)/ link
register(W)
8192/8192
Number of connectable
extensions
7
Max. number of insertable
modules
64
Internalpower consumption
(5 v DC) mA
640
max. compensation time at
power failure ms
Varies arcording to the type of power unit
Trọng lượng 0,2 kg
Dimensions (WxHxD) mm 27.4x98x89.3
III.4.5 Module Input QX42.
Loại
Thuộc tính
Module DC input
Qx42
Số ngõ vào 64
Điện áp vào 24V DC
Dòng xấp xỉ 4mA
ON voltage/ ON current >=19V/>=3mA
Off voltage/ Off current <=11V/<=1.7mA
Trở kháng ng õ v ào Xấp x ỉ 5,6K Ω
Cách sắp xếp đầu nối 32 đ ầu ( c ác d ây chung
1B01, 1B02, 2B01, 2B02)
Đồ án 2D GVHD: Lê Long Hồ
Page 83
Sơ đồ chân:
Đồ án 2D GVHD: Lê Long Hồ
Page 84
III.4.6 Module Output QY42P.
Loại Thuộc tính
Module DC output Qy42p
Số ngõ vào 64
rate load voltage 12-24V DC
Dòng tải cực đai 0,1A/dây, dây chung 2A
Dòng kích cực đại 0,7A,trong 10ms hoặc ít hơn
Dòng rò trạng thái Off 0,1mA hoặc ít hơn
Cầu chì Không
nguồn ngoài Điện áp 12-24V DC (+20/-15%) Dòng 20mA (ở 24VDC)/ chung
Trở kháng 10M Ω hoặc hơn
Sắp xếp chân chung 32 chân/ chân chung 1A01,1A02, 2A01, 2A02
Sơ đồ chân:
Đồ án 2D GVHD: Lê Long Hồ
Page 85
III.4.7 Module Analog Q64AD.
Có 4 kênh tùy thuộc vào tín hiệu vào là điện áp hay dòng điện mà có thể chọn cho phù hợp.
Tín hiệu vào có hai dạng là điện áp và dòng điện:
Voltage: từ -10->10V DC
Current: từ 0-> 20mA DC
Tín hiệu số ngõ ra 16bit nhị phân:
Độ phân giải trung bình: -4096 đến 4095
Độ phân giải cao : -12288 đến 12287, -16384 đến 16383
Đặc tính I/O và độ phân giải tối đa:
Tốc độ chuyển đổi: 80µs/channel
Ngõ vào tuyệt đối:
Voltage ±15V
Current ±30mA
Đồ án 2D GVHD: Lê Long Hồ
Page 86
Sơ đồ chân:
Chú thích:
RUN LED: Hiển thị trạng thái hoạt động của module chuyển đổi A/D.
ON : Hoạt động bình thường.
FLASHING : Trong quá trình cài đặt offset/gain.
OFF : Nguồn 5V bị mất, watchdog timer bị lỗi, module online đổi trạng thái
hoạt động.
ERROR LED: Hiển thị lỗi của module chuyển đổi A/D.
Đồ án 2D GVHD: Lê Long Hồ
Page 87
ON : Lỗi ( kiểm tra mã lỗi để biết thông tin ).
OFF : Hoạt động bình thường.
FLASHING : Lỗi cài đặt bộ chuyển đổi.
Sơ đồ nối chân:
Đồ án 2D GVHD: Lê Long Hồ
Page 88
CHƯƠNG IV: CÁC THIẾT BỊ CHẤP HÀNH
IV.1 Cảm biến
Đồ án 2D GVHD: Lê Long Hồ
Page 89
PHẦN II: HỆ THỐNG TỦ NHIỆT VÀ BỒN TRỘN
CHƯƠNG I: HỆ THỐNG TỦ NHIỆT
I.1 Lưu đồ giải thuật:
I.2 Nguyên ly hoạt động:
Mô hình được cho hoạt động với hai chế độ Auto mà Manual.
Chế độ Auto:
Các MCCB và công tắc tơ được cài đặt thời gian để đốt nóng các điện trở. Ta cũng có thể
cài đặt thời gian để chu trình có thể lặp lại. Khi các giá trị thời gian được cài đặt, các điện trở sẽ
được đóng cắt theo trình tự từ điện trở thứ nhất đến điện trở thứ tư. Có các thời gian đốt nóng của
các điện trở sẽ hiển thị ra màn hình chính (Main).
Chế độ Manual:
Tùy theo người vận hành. Không giới hạn về thời gian đốt cho các điện trở.
I.3 Chương trình viết trong Intouch Wonderware:
Đồ án 2D GVHD: Lê Long Hồ
Page 90
CHƯƠNG II: HỆ THỐNG BỒN PHA CHẾ HỖN HỢP
Đồ án 2D GVHD: Lê Long Hồ
Page 91
PHẦN 3: TỔNG KẾT
Kết quả đạt được:
- Tìm hiểu được cấu trúc cơ bản của một hệ thống Scada.
- Kết nối PLC với Intouch thông qua phần mềm DeviceXplorer OPC.
- Có các kĩ năng cơ bản trong việc lập trình với các Script trong Intouch Wonderware.
- Bước đầu thực hiện được mô hình thực tế và hoạt động đúng với khi lập trình.
Hạn chế:
- Chưa tìm hiểu được hết các chức năng của phần mềm Intouch và DeviceXplorer OPC.
- Giao diện thiết kế chưa gọn, tính thẩm mĩ chưa cao đôi khi phần hiển thị tín hiệu Analog đọc
về tư cảm biến bị nhiễu.
- Ở mô hình mô phỏng lò nhiệt, chưa đưa được tín hiệu hồi tiếp từ các công tắc tơ về PLC.
Hướng phát triển đề tài:
- Tiếp tục nghiên cứu các chức năng của phần mềm, phát triển lên kết nối qua mạng giám sát
hai mô hình.
- Tăng tính thẩm mĩ cho giao diện phần mềm được đẹp hơn.
Kết Luận:
Qua đề tài tìm hiểu về để tài này nhóm chúng em đã học thêm được rất nhiều kiến thức. Quá
trình tìm hiểu, nhóm chúng em đã thực hiện mô hình thực tế và đạt được những kết quả nhất định.
Tuy nhiên vì kiến thức và thời gian còn nhiều hạn chế nên đề tài chưa được mở rộng và còn nhiều
thiếu sót. Trong thời gian tới nhóm sẽ cố gắng tìm hiểu nhiều ứng dụng cụ thể hơn nữa qua các đồ
án kế tiếp.
Cuối cùng chúng em xin chân thành cảm ơn tất cả các thầy cô cùng các bạn sinh viên, những
người đã đóng góp rất nhiều ý kiến, công sức rất quý báu để giúp nhóm hoàn thành tốt đồ án này.
Đặc biệt, nhóm chúng em rất biết ơn thầy Lê Long Hồ đã nhiệt tình hướng dẫn, chỉ bảo em những
kinh nghiệm cùng kiến thức thực tế để đề tài được hoàn thành một cách nhanh chóng.
Đồ án 2D GVHD: Lê Long Hồ
Page 92
TÀI LIỆU THAM KHẢO
Tài liệu:
http://en.wikipedia.org
http://www.999mitsubishi.com/
http://webdien.com/d/index.php
plcvietnam.com.vn