92
Đồ án 2D GVHD: Lê Long HPage 1 MC LC Li mđầu Li cảm ơn Nhn xét Phn I: Hthng Scada Chương I: Giới thiu. I.1 khái nim I.2 Phân loi I.3 Cu trúc mt hthng Scada. Chương II: Phần mm Scada (Intouch Wonderware v10.1) II.1 Gii thiu II.2 Gii thiu vtp lnh II.3 To và chnh sa các Script II.4 Script Triggers. II.5 Ngôn nglp trình. Chương III: Tổng quan vPLC và Module mrng. III.1 Gii thiu. III.2 Ưu – Nhược điểm. III.3 Cu trúc ca PLC III.4 PLC Mishubishi Phn II: Hthng tnhit và bn trn. Phn III: Tng kết

án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Embed Size (px)

Citation preview

Page 1: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 2: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 3: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI 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ô.

Page 4: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 5: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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

Page 6: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 7: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 8: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 9: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 10: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 11: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢ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.

Page 12: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 13: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 14: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 15: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 16: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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ở.

Page 17: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 18: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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 :

Page 19: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 20: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 21: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 22: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 23: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 24: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 25: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 26: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 27: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 28: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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ữ :

Page 29: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 30: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 31: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 32: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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;

Page 33: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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ố.

Page 34: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 35: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 36: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 37: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 38: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 39: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 40: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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ộ.

Page 41: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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 đó.

Page 42: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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ố.

Page 43: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 44: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 45: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 46: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 47: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 48: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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…

Page 49: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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)

Page 50: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 51: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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)

Page 52: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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".

Page 53: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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)

Page 54: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 55: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 56: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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".

Page 57: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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ố:

Page 58: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 59: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 60: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 61: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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)

Page 62: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 63: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 64: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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;

Page 65: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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)

Page 66: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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ở

Page 67: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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;

Page 68: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 69: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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ố.

Page 70: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 71: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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).

Page 72: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 73: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 74: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 75: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 76: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 77: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 78: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 79: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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.

Page 80: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 81: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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

Page 82: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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)

Page 83: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ án 2D GVHD: Lê Long Hồ

Page 83

Sơ đồ chân:

Page 84: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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:

Page 85: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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

Page 86: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 87: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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:

Page 88: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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

Page 89: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM Ơ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:

Page 90: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ án 2D GVHD: Lê Long Hồ

Page 90

CHƯƠNG II: HỆ THỐNG BỒN PHA CHẾ HỖN HỢP

Page 91: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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.

Page 92: án 2D GVHD: Lê Long H - sinhvienit.netsinhvienit.net/forum/attachment/33876/1400176499/SinhVienIT.Net... · 1/1/1970 · Đồ án 2D GVHD: Lê Long Hồ Page 3 LỜI CẢM ƠN

Đồ á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