1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu ứng dụng phần mềm winlog lite giám sát các dòng PLC khác nhau

144 149 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 144
Dung lượng 2,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong một dây chuyền sản xuất nếu một khâu nào đó gặp vấn đề nếu không được phát hiện kịp thời sẽ ảnh hưởng đến các khâu khác và toàn bộ dây chuyền, không chỉ nói đến thiệt hại về kinh t

Trang 1

Chương 1: ĐẶT VẤN ĐỀ

1.1 Lý do chọn đề tài:

Đất nước ta đang trên đà phát triển, đời sống kinh tế của nhân dân đã từng buớc được cải thiện, bộ mặt đất nước cũng thay đổi hẳn ra, đường phố ngày một đẹp, xí nghiệp, nhà máy mọc lên ngày càng nhiều, xuất hiện nhiều khu công nghiệp Sự thay đổi lớn ấy chắc chắn có sự đóng góp không nhỏ của ngành công nghiệp

Trong công nghiệp vấn đề điều khiển, giám sát và thu thập dữ liệu (SCADA) là hết sức cần thiết và quan trọng Trong một dây chuyền sản xuất nếu một khâu nào đó gặp vấn đề nếu không được phát hiện kịp thời sẽ ảnh hưởng đến các khâu khác và toàn bộ dây chuyền, không chỉ nói đến thiệt hại về kinh tế mà còn nguy hiểm đến tính mạng người lao động

Công nghiệp nước ta tuy có phát triển nhưng các nhà máy xí nghiệp nước ta thường nhỏ và đã sữ dụng công nghệ cũ nên phần lớn trong dây chuyền sản xuất không có phần giám sát nếu có thì phần lớn là tự chế tạo nên không đồng bộ và không đảm bảo chất lượng Khi nuớc ta vào giai đoạn hội nhập quốc tế, các mặt hàng đều phải cạnh tranh cả về giá cả và chất lượng với những mặt hàng nhập từ nước ngoài Vì thế các công ty xí nghiệp thường đầu tư xây dựng lại hệ thống sản xuất mới Để đảm bảo chất lượng họ thường chọn những nhà cung cấp PLC đáng tin cậy để lắp đặp vào hệ thống của mình như Siemens, Omron, Mitsubishi Ngoài chọn PLC họ còn chọn các thiết bị khác để hình thành hệ thống sản xuất Đối với những công ty lớn họ sẽ thiết lập thành một mạng truyền thông công nghiệp Nhiệm vụ còn lại là giám sát hệ thống vừa lắp đặc

Có rất nhiều phần phần mền giám sát hệ thống nhưng Winlog Lite với khả năng có thể giám sát được các dòng PLC khác nhau, là một phần mền SCADA chưa được nghiên cứu kỹ cùng với sự định hướng của Thầy Đồng sĩ Linh, em quyết định chọn tên đề tài: TÌM HIỂU ỨNG DỤNG PHẦN MỀM WINLOG LITE GIÁM SÁT CÁC DÒNG PLC KHÁC NHAU

1.2.Mục tiêu_đối tượng nghiên cứu:

Nghiên cứu đề tài này người thực hiện đặt ra nhũng mục tiêu sau:

- Sử dụng thành thạo phần mềm này

- Thiết kế được giao diện giám sát

- Viết được chương trình của các dòng PLC

- Giám sát được các dòng PLC này

Đối tượng nghiên cứu: phần mềm Winlog Lite

1.3 Giới hạn đề tài:

Do thời gian và kiến thức có hạn nên người thực hiện đề tài này tập trung vào tìm hiểu cách sữ dụng phần mềm Winlog Lite, ứng dụng giám sát S7-200, S7-300

củaSiemens,CPM2AcủaOmron

Trang 2

Chương 2: GIỚI THIỆU

2.1.Giới thiệu:

Phần mền này được cung cấp bởi công ty Sielco Sistemi là một công ty của Italia, chuyên cung cấp phần mềm giám sát hệ thống và xây dựng hệ thống tự động Phần mềm winlog lite là một phần mềm giám sát hệ thống dùng trong công nghiệp, nó thường ứng dụng để giám sát những hệ thống SCADA nhỏ, cho các máy khách Để giám sát các hệ thống SCADA lớn thì có Winlog Pro, thường dùng cho các máy chủ

Chúng có khả năng điều khiển giám sát trong dây chuyền sản xuất trong các nhà máy xí nghiệp, lưu trữ và xữ lý dữ liệu, điều khiển từ xa các thiết bị ngoại vi, điều khiển giám sát qua hệ thống mạng internet

Nó được vận dụng để điều khiển giámsát trong rất nhiều lịnh vực: từ ngành dệt đến sản xuất nhựa( chất dẻo), từ sản xuất gỗ đến chế biến thực phẩm, từ sản xuất đồ gốm đến lĩnh vực viễn thông …

Phần mềm Winlog lite có thể sữ dụng tất cả các công cụ và các hàm được cung cấp ở phần mềm Winlog Pro Có thể tải trực tiếp phần mềm này từ trang web: http://www.sielcosistemi.com với phiên bản dùng thử cho phép giám sát hệ thống trong 15 phút Để sữ dụng phiên bản chính thức ta phải mua với giá 49 Euro

2.2 Một số ứng dụng:

Một số ứng dụng mà nhà cung cấp đã thiết kế:( từ trang web http://www.sielcosistemi.com)

Điều kiển giám sát nhiệt độ trong nhà máy luyện kim

Hình 2.1 Giao diện giám sát nhiệt độ trong nhà máy luyện kim

Trang 3

Trong nhà máy sản xuất kem:

Hình 2.2 Giao diện giám sát nhà máy sản xuất kem

Trong nhà máy sợi:

Hình 2.3 Giao diện giám sát nhà máy sản xuất sợi

Trang 4

Chương 3: TÌM HIỂU CÁCH SỬ DỤNG PHẦN MỀM

Hình 3.1 Quản lý dự án

Bên trái của màn hình là liệt kê những danh sách các dự án Bên phải giao diện là các công cụ trong dụ án màta chọn

Mách nước:

Execute + Shift : Chạy dự án mà không cần lấy lấy mẫu các cổng

Execute + Ctrl: Chạy dự án mà không cần ghi dữ liệu

Tạo dự án mới:

Trang 5

Tạo một dự án mới mà không cần định dạng các thiết bị, chọn mục project/ new Sau đó đánh tên vào nhưng không quá 255 ký tự

Sao chép dự án:

Để nhân đôi dự án bạn cần chọn nó và gọi lệnh copy từ project menu Ta đặt tên lại cho dự án

Xóa dự án:

Để xóa một dự án chọn nó và chọn lệnh delete từ project menu

Lưu ý: Khi xóa dự án rồi ta không thể phục hồi lại được!

Đổi tên dự án:

Chọn dự án và chọn rename từ project

Định dạng dự án:

Các mục mà ta cần hiệu chỉnh: Options, Channels, Devices, Access Groups

Để hiệu chỉnh ta double click lên mục mà ta cần hiệu chỉnh

Mục Options:

Thẻ General:

Caption: Tựa đề mà sẽ xuất hiện khi chạy thời gian thực

Description: Miêu tả đơn giản dự án

Default language: Ngôn ngữ mà sẽ được sữ dụng trong khi chạy Runtimes

Graphic update time (sec): Khoảng thời gian cách nhau giữa 2 lần làm tươi hình ảnh hiển thị

Trang 7

Hide main menu: Dấu menu chính trong khi chạy chương trình Runtime

Hide main button bar: Dấu nút thể hiện thanh chính trong khi chạy Runtime

Hide template object popup menu: Dấu menu thiết kế dự án trog khi chạy Runtime Writing buffer size: Dung lượng nhớ đệm, nơi mà dữ liệu xếp nối đui nhau trước khi gởi đến các thiết bị Mổi kênh đều có dung lượng nhớ đệm

High priority write: Nếu được chọn, các dữ liệu mà gởi đến thiết bị sẽ gởi với quyền được ưu tiên lớn nhất, nếu không thì nó sẽ được gởi sau một chu kỳ lấy mẫu

Automatic alarm print:

Nếu được chọn, khi có một sự cảnh báo nào nó sẽ tự động in cảnh báo đó

Hình 3.6 Thẻ System

Trang 8

Thẻ Client:

Utilize Client for Microsoft network: Chia sẽ thông tin mà ta thiết kế trên Template Builder cho các trạm khác nếu chúng được kết nối mạng với nhau qua giao thức TCP/IP Chúng ta cũng có thể đọc/viết trong thư mục DBTABLES trên tất cả các trạm

Timeout (s): Thời gian không tính của giao thức TCP/IP

Hình 3.7 Thẻ Client

Mục channels

Bạn phải nhớ rằng một kênh là một cổng truyền tin dùng để truyền tin với các thiết

bị mở rộng

Hình 3.8 Mẫu thiết lập kênh truyền

Trong ảnh trên bạn chọn kênh là 1, giao thức truyền tin là Simatic S5 Bạn có thể thiết lập các tham số của giao thức truyền tin bàng cách chọn vào nút Option

Mục devices

Phần mềm này cho phép giám sát sự truyền tin của tất cả các thiết bị đã kết nối Để làm được điều này các thiết bị phải nối vào một kênh nào đó và phải có địa chỉ riêng của nó Bạn cũng có thể miêu tả ngắn gọn về thiết bị, hiệu chỉnh lại, và cũng có thể bỏ các thiết hiện có

Trang 9

Hình 3.9 Mẫu thiết lập thiết bị

Mục access groups

Có 15 nhóm từ nhóm 1 đến nhóm 15 Ta có thể đặt tên của từng nhóm nhưng không quá 12 ký tự Việc đặt các nhóm để dễ quản lý và trực quan hơn( Ta sẽ tìm hiểu kỹ hơn ở user’s code)

Hình 3.10 Mẫu thiết lập nhóm truy xuất

Mục template Configuration

Sử dụng họp thoại như bên dưới để lựa chọn cột để hiển thị trong thiết kế mẫu, chúng ta có thể đổi tên các cột cần hiển thị để làm cho rõ ý nghĩa hơn hơn

Trang 10

Hình 3.11 Thiết lập sự kiện cảnh báo

Mục gates

Phần mềm quản lý được các cổng sau:

Kiểu số: số thực

Logic: giá trị 0 và 1

Kiểu chuổi: Các ký tự nối tiếp

Sự kiện và cảnh báo: hoạt động dựa vào giá trị các cổng

Để định dạng giá trị ta chỉ cần double click vào biểu tượng tương ứng

Nhấp double click vào tên ta sẽ mở giao diện Code Builder

Mách nước:

Double click + Shift là mở file với giao diện wordPad

Mục reports

Có 3 loại báo cáo: TXT, RTF, DAT

TXT: Là loại báo cáo chỉ chứa kiểu định dạng văn bản đơn giản

RTF: Là loại báo cáo chỉ chứa kiểu định dạng văn bản và đồ thị

DAT: Là loại báo cáo chứa đựng dữ liệu theo hàng định dạng kiểu văn bản

TXT Report (Standard Text Format) và RTF Report(Rich Text Format):

Hai loại Report này khi được tạo ra sẽ có hộp thoại như sau:

Trang 11

Hình 3.12 Tạo báo cáo (report)

File type: là loại file thực thi, TXT hoặc RTF

Historical files: Số file report sinh ra được được giữ trên đĩa

Output file: Nơi lưu trữ file report được sinh ra cuối cùng

Show on creation: Trình diện report khi nó được tạo ra

Print on creation: In report khi nó được tạo ra

Period type: Xác định tần xuất in report

Lưu ý: Report có thể được sinh ra bởi những hàm đặc biệt trong code Builder hoặc Run time Report_creat

Time: Report sẽ được tạo ra tại hh:mm:ss

DayOfWeek: Report sẽ tạo tại tại ngày x của tuần

DayOfMonth: Report sẽ tạo tại ngày x của mỗi tháng

DayAndMonth: report sẽ tạo tại ngày x của tháng y

Synchronism time: Xác định thời gian mà bắt đầu giai đoạn đếm để sinh ra Report Modify: Chỉnh lại file nguồn, nó có thể chứa file văn bản hoặc lệnh

Chúng phải đặt trong dấu ngoặc đơn và chứa một biểu thức

Ví dụ:

{Beep()}{// đây là ghi chú}

Tạo một Report tự động

Mã code xuất hiện họp thông báo: {InputDialog("Insert a comment ","Report creation","")}

Giá trị hiện tại của cổng: {GetNumGateValue("Tr",1)}

Giá trị hiện tại Delta: {GetNumGateValue("Ts",1)-GetNumGateValue("Tr",1)}

Trang 12

Report kiểu DAT

Dat report không giống như TXT hay RTF report được tạo ra trong một thời gian Những hàng của báo cáo được sinh ra phụ thuộc vào tần số lưu Khi một cổng thay đổi làm cho nó không thỏa điều kiện thì một hàng mới được sinh ra, sau đó nó được sinh ra nữa phụ thuộc vào tần số lưu mãi cho đến khi giá trị của cổng trở về trạng thái thỏa mãn điều kiện

Khi vượt quá điều kiện thì một bản Report mới lại được sinh ra Một bản Report chứa nhiều hàng, mổi hàng chứa nhiều cột; cột đầu tiên là ngày, tháng, năm, giờ, phút, giây sau đó là các biến được định nghĩa trong bảng table File columns

Nếu được xác định để thể hiện thì ta sẽ xuất hiện cửa sổ định dạng sau:

Hình 3.13 Báo cáo kiểu DAT

File type: Là loại file được ủng hộ (TXT HOẶC RTF)

Historical files: Số file được lưu trữ trên đĩa

Output file: Nơi lưu trữ tệp tin báo cáo

Trigger (cho phép ghi): Xác định cổng mà sẽ cho phép hoặc không cho phép lưu trữ vào bảng report

Condition: Định điều kiện của cổng làm “nút bấm”

Separator: Cho phép lựa chọn ký tự để ngăn cách giữa các cột trong một bản báo cáo

Save frequency: Định tần số lưu một hàng mới vào bảng Report

File columns: Định dữ liệu ghi vào một dòng đơn của tệp báo cáo Mổi dữ liệu là một đại diện của một trong các cổng: Số, Logic, Phức hợp, chuổi, sự kiện

Trang 13

Template:

Thư mục này chứa tất cả các trang giám sát, nhấn chuột phải vào màn hình trắng bên phải, nếu dấu nháy không chọn trúng bất kỳ biểu tượng nào thì ta tạo một mẫu mới Ngược lại bạn có thể thao tác như một tập tin bất kỳ( copy, cut, paste, rename) Mách nước:

Double click + Shirt mở file ở giao diện WordPad

Giám sát trực tiếp trạng thái các cổng

Để giám sát trạng thái các cổng trước hết ta ta phải khái báo chúng trong (mẫu giám sát)

Trong thư mục recipe models chứa tất cả các mẫu giám sát, bằng việc nhấn chuột phải vào màn hình bên phải, nếu con trỏ không chọn được bất kỳ biểu tượng nào thì

ta tạo được một mô hình mới, nếu chọn được một biểu tượng thì ta có thể truy xuất nó như một tập tin bất kỳ (copy, cut, paste, rename)

Hình 3.14 Mẫu giám sát trạng thái các cổng trực tiếp

Trong hộp thoại trên, ở nửa trên là các cổng đơn, nửa dưới là các cổng gộp của dự án Ta sử dụng các nút add gate, delete gate để thêm và bỏ cổng Nút comment để ghi ghi chú

Images

Trong thư mục này chứa tất cả các hình ảnh sử dụng trong dự án Bằng việc nhấn chuột phải vào màn hình bên phải, nếu con trỏ không chọn được bất kỳ biểu tượng

Trang 14

nào thì ta tạo được một mô hình mới, nếu chọn được một biểu tượngthì ta có thể truy xuất nó như một tập tin bất kỳ (copy, cut, paste, rename)

Double click vào ảnh ta sẽ mở hình ảnh đó ở một chương trình xem ảnh có khả năng mở được file ảnh đó

Keyboards

Khi một ứng dụng đang thực thi nếu không có bàn phím mà chỉ có màn hình giám sát, khi ấy ta sẽ sử dụng các phím ảo đã được định nghĩa cho việc nhập dữ liệu Trong thư mục này chứa tất cả các phím ảo dùng cho ứng dụng đó Bằng việc nhấn chuột phải vào màn hình bên phải, nếu con trỏ không chọn được bất kỳ biểu tượng nào thì ta tạo được một mô hình mới, nếu chọn được một biểu tượngthì ta có thể truy xuất nó như một tập tin bất kỳ (copy, cut, paste, rename)

Double click + Shirt mở file ở giao diện WordPad

3.2 Mã lệnh (Code Builder):

3.2.1 Giới thiệu:

Code Builder là một mối trường được thiết kế để tạohàm dễ hơn

Nó cho phép viết code, lưu, tạo mới, kiểm tra cấu trúc

Để giảm lổi các biến thường có màu khác nhau

3.2.1.1 Bước đầu tiên:

Mở code builder, xem môi trường code Builder

Bạn vào file=> open (để mở file code đã có sẵn)

Hoặc file =>new để tạo file code mới

Hình 3.15 Giao diện viết mã lệnh

Trang 15

Hình 3.16 Mã lệnh mẫu

3.2.1.2 Thanh công cụ nhanh (Speedbar):

Thanh này thường hổ trợ cho những hàm được gọi từ menu

Bạn chỉ chuột vào sẽ xuất hiện ra một sự giải thích nhỏ

Trang 16

Phím Hàm

CTRL + Z Trảng lại trạng thái trước đó

CTRL + F9 Kiểm tra cấu trúc mã làm việc

CTRL + Y Xóa hành tại vị trí dấu nhắc

CTRL + L Con trỏ chuột về phía trái của từ CTRL + R Con trỏ chuột về phía phải của từ CTRL + HOME Con trỏ chuột về đầu trang

CTRL + END Con trỏ chuột về cuối trang

Bảng 3.1 Sử dụng các phím tắt

Trang 17

Structures : giống như những hàm cho phép bạn lướt qua và thêm vào ngôn ngữ cho cấu trúc

3.2.1.5.Sử dụng bộ nhớ đệm:

Vùng nhớ tạm là một khu vực mà không thể truy xuất trực tiếp, nơi mà bạn có thể chèn hoặc xóa mã lệnh

Chọn khu vực cần sao chép hoặc xóa(có nhiều cách chọn)

Sau đó chọn vị trí để gián

Trang 18

Hình 3.17 Ví dụ về sao chép trong khi viết mã lệnh

3.2.2.Menus:

3.2.2.1.Giới thiệu:

Bây giờ chúng ta sẽ thấy chi tiết về những hàm những hàm được cung cấp bởi menu Khi bạn đang làm việc có 2 cách để truy xuất menu: đầu tiên là sữ dụng chuột, thứ hai là sữ dụng phím tắt kết hợp với những từ gạch dưới của menu

3.2.2.2.Menu File:

Là nơi lưu trữ tất cả các hàm cần thiết và in mã lệnh

Bạn có thể mở, đóng, lưu những gì bạn đang làm

3.2.2.3.Menu Edit:

Menu edit bao gồm tất cả những hàm cần thiết cho việc chỉnh sữu mã lệnh và thiết lập môi trường làm việc

Trang 19

3.2.2.8.Thiết lập môi trường làm việc

Chúng ta có thể thay đổi môi trường làm việc bằng cách chọn Preferences từ menu Edit sẽ xuát hiện một hộp thoại cho phép chúng tat hay đổi màu nền, tên hàm, biến…

Trang 20

Hình 3.18 Thiết lập môi trường làm việc

3.2.3 Thư viện hàm API

Là những hàm đã được tạotrong thư viện, chúng được gọi trong bất cứ chương trình nào Trong chương này chúng ta sẽ liệt kê và miêu tả tất cả các hàm, chia chúng ra thành từng nhóm

3.2.3.1.Bit

BitMasK

Miêu tả: Nó xuất phát từ hàm AND giữa một số và một mặt nạ

Cấu trúc: int BitMask(int Num, int Mask)

Biến: Num: số để truy xuất

Mask: mặt nạ( vị trí bit từ 0 đến 31)

Giá trị trả về: Kết quả sau khi lấy hàm And giữa một số và một mặt nạ

Ví dụ:

LowByte=BitMask(Value,HexStrToInt("000000FF"));

GetBit:

Miêu tả: Trả lại một bit từ một số

Cấu trúc: int GetBit(int Num, int Bit)

Biến: Num: số để xữ lý

Bit: bit để kiểm tra

Trang 21

Giá trị trả về: Bit trả về

Ví dụ: Even =GetBit(A,0);

ResetBit

Miêu tả: Thiết lập bit có giá tri bằng 0

Cấu trúc: int ResetBit(int Num, int Bit)

Biến: Num: số để truy xuất

Bit: bit mà bạn muốn reset

Giá trị trả về: Số với bit đã thay đổi

Ví dụ: A_even=ResetBit(A,0);

SetBit:

Miêu tả: Gán giá trị bằng 1 cho bit

Cấu trúc: int SetBit(int Num, int Bit)

Biến: Num: số để xữ lý

Bit: bit mà bạn muốn thiết lập

Giá trị trả về: Số sau khi thay đổi giá trị của bit

Cấu trúc: StringGetDateString (String Separator, Bool EuropeanStyle)

Biến: Separator: dấu phân cách

EuropeanStyle: truy vấn có dùng kiểu định dạng ngày Châu Âu không?

Trang 22

Giá trị trả về: Chuổi ngày

Miêu tả: Trả lại số phút của giờ hiện tại

Cấu trúc: Int GetMinute()

Biến: -

Giá trị trả về: Số phút

Ví dụ: Secs=GetMinute()*60;

GetMonth:

Miêu tả: Cho biết hiện tại là tháng mấy

Cấu trúc: Int GetMonth();

Trang 23

Biến: -

Giá trị trả về: Tháng hiện tại

Ví dụ: MonthLeft=12-GetMonth();

GetSecond:

Miêu tả: Cho biết số giây hiện tại

Cấu trúc: Int GetSecond()

Biến: -

Giá trị trả về: Số giây

Ví dụ: Secs=GetMinute()*60 + GetSecond();

Giá trị trả về: Số mili giây

Ví dụ: TimeFromStart = GetTickCount() / TickSize;

GetTimeString:

Miêu tả: Trả lại một chuổi chứa đựng thời gian trong đó giờ, phút, giây, mili giây được phân cách bằng dấu phân cách trong dấu ngoặc kép

Cấu trúc: String GetTimeString(String Separator)

Biến: Dấu phân cách

Giá trị trả về: Chuổi thời gian

Ví dụ: CurrentTime=GetTimeString(":");

GetYear:

Miêu tả: Nó trả lại năm hiện tại

Cấu trúc: Int GetYear()

Miêu tả: Nó tạo một thư mục mới

Cấu trúc: Bool DirectoryCreate(String DirName)

Biến: DirName: tên của thư mục mới

Giá trị trả về: True: nếu tạo thành công

False: bị lổi

Ví dụ: DirectoryCreate("MyProj");

Trang 24

DirectoryDelete:

Miêu tả: Xóa một thư mục mới

Cấu trúc: Bool DirectoryDelete(String DirName)

Biến: DirName: tên của thư mục bạn muốn xóa

Giá trị trả về: True: nếu xóa thành công

False: nếu thất bại

Ví dụ: DirectoryDelete("MyProj");

DirectoryGetCurrent:

Miêu tả: Trả lại thư mục hiện hành

Cấu trúc: String DirectoryGetCurrent()

Biến: -

Giá trị trả về: Thư mục hiện hành

Ví dụ: SearchFor=DirectoryGetCurrent()+"\*.*";

DirectorySetCurrent:

Miêu tả: Thiết lập thư mục là thư mục hiện hành

Cấu trúc: Bool DirectorySetCurrent(String NewPath)

Biến: NewPath : tên đường dẫn mới làm thư mục hiện hành

Giá trị trả về: True: nếu đường dẫn được cập nhật

False: bị lổi

Ví dụ: DirectorySetCurrent("y:\projects");

3.2.3.4.FILES:

FileAttrFound: (Củ rồi thường ít dùng)

Miêu tả: Trả lại thuộc tính của một tệp tin được đọc bởi lệnh FileFindFirst hoặc FileFindNext

Cấu trúc: Int FileAttrFound()

Bảng 3.2.Thuộc tính của file

Nếu một file mà có nhiều hơn một thuộc tính thì kết quả là tổng của những thuộc tính đơn

Trang 25

FileAttrFoundEx:

Miêu tả hàm: Trả lại thuộc tính của file được tìm thấy bởi các hàm FileFindFirstEx hoặc FileFindNextEx

Cấu trúc: Int FileAttrFoundEx(int biến điều khiển(Handle))

Biến: Biến điều khiển là một số nguyên

Giá trị trả về: Thuộc tính của file vừa tìm được

FileCopy:

Miêu Tả: Sao chép file

Cấu trúc: Bool FileCopy( String Src, String Dst, Bool IfExists)

Biến: Src: file muốn copy

Dst: nơi gởi tới

IfExists = true(không cho phép ghi đè file)/ false( cho phép ghi đè file) Giá trị trả về: True: nếu copy thành công

False: nếu copy thất bại

Miêu Tả: Đóng file đang mở

Cấu trúc: Int FileClose(int Handle)

Biến: Handle: biến điều khiển(kiểu số nguyên)

Giá trị trả về: 0: thành công

Không phải số 0 (thất bại)

Miêu Tả: Dùng để xóa một file

Cấu trúc: Bool FileDelete(string FileName)

Biến: FileName: Tên file cần xóa

Giá trị trả về: True (nếu thành công)

False (nếu có)

Ví dụ:

if (FileExist("Promem.bak")) then

FileDelete("Promem.bak");

End

Trang 26

FileEof

Miêu Tả: Trả lại một số khác không nếu việc đọc hoặc ghi ở cuối file Cấu trúc: Int FileEOF (Int Handle)

Biến: Handle: Biến điều khiển của file đã mở

Giá trị trả về: Giá trị tại điểm cuối của file

Ví dụ:

int i=0;

FileHandle=FileOpen("MadeByAPI.dat","rb"); // mở nhị phân

cho việc đọc

While (FileEOF(FileHandle) == 0) // đọc 3 ký tự tại một thời điểm

Miêu Tả: Cho biết có tồn tại file không

Cấu trúc: Bool FileExist(String FileName)

Biến: FileNam: tên của file cần kiểm tra

Giá trị trả về: True (nếu tồn tại)

False (nếu không tồn tại)

Biến: Handle: Biến điều khiển

Giá trị trả về: -

Trang 27

FileFindFirst:

Miêu Tả: Tìm có sự tồn tại file ở trong thư mục không Cấu trúc: Bool FileFindFirst(String Path)

Biến: Path: đường dẫn mà bạn cần tìm file

Giá trị trả về: True (nếu tồn tại ít nhất một file)

False ( thư mục rổng)

FileFindFirstEx:

Miêu Tả: Tìm có sự tồn tại file ở trong thư mục không Cấu trúc: int FileFindFirstEx(String Path)

Biến: Path: đường dẫn mà bạn cần tìm file

Giá trị trả về: 0 nghĩa là có lỗi

Nếu tồn tại trả về một chuỗi khác “”

FileFindNext:

Miêu Tả: Tìm một file khác trong thư mục

Cấu trúc: Bool FileFindNext()

Biến: -

Giá trị trả về: True (nếu có một file khác)

False (không có thêm một file nào khác)

FileFindNextEx:

Miêu Tả: Tìm trong thư mục có thêm file nào khác không Cấu trúc: Bool FileFindNextEx(int Handle)

Biến: Handle: biến điều khiển

Giá trị trả về: True: nếu có

False: ngược lại

FileGetAttr:

Miêu Tả: Trả lại những đặc tính của một file

Cấu trúc: Int FileGetAttr(String FileName)

Biến: FileName: tên của file

Giá trị trả về: Trả lại đặc tính của một file

FileSetAttr:

Miêu Tả: Thiết lập đặc tính của một file

Cấu trúc: Int FileGetAttr(String FileName,Int NewAttr) Biến: FileName: tên file

NewAttr: đặc tính của file

FileGetSize:

Miêu tả:Trả về kích cở của một file

Trang 28

Cấu trúc: Int FileGetSize(String FileName)

Biến: FileName: Tên của file

Giá trị trả về: Kích cở của file t1inh bằng Byte

Ví dụ: CCDim=FileGetSize("Command.Com");

FileMove

Miêu tả: Di chuyển file

Cấu trúc: Bool FileMove(String From, String To)

Biến: From: tên của file bạn muốn di chuyển

To: đến moat đường dẫn mới

Giá trị trả về: True: nếu thành công

False: nếu that bại

Biến: Handle: Biến điều khiển trong việc tìm

Giá trị trả về: Tên của file

FileOpen

Miêu ta:û Mở một file

Cấu trúc: int FileOpen(String FileName, String Mode)

Biến: FileName: tên của file

Mode: chế độ mở

Giá trị trả về: Biến điều khiển(nếu thành công)

0 nếu thất bại

Trang 29

FilePos:

Miêu Tả: Trả lại vị trí của file đang mở

Cấu trúc: Int FilePos(Int Handle)

Biến: Handle: biến điều khiển của file đang mở

Giá trị trả về: Vị trí của file đang đọc/ ghi

Ví dụ: CurPos=FileSeek(CurrHandle);

FileRead

Miêu Tả: Đọc những ký tự của file nhị phân

Cấu trúc: String FileRead(Int Handle, Int Length)

Biến: Handle: biến điều khiển của file nhị phân đang mở Length: Số ký tự được đọc

Giá trị trả về: Những ký tự được đọc

Ví dụ: Buffer=FileRead(FileHandle,16); // đọc 16 ký tự

FileReadLn:

Miêu Tả: Đọc tất cả các ký tự của một file text

Cấu trúc: String FileReadLn(Int Handle)

Biến: Handle: Biến điều khiển của file text đang mở

Giá trị trả về: Những ký tự đọc từ file

Ví dụ: CurrLine=FileReadLn(TextFileHandle);

FileRename

Miêu Tả: Thay đổi tên của file

Cấu trúc: Int FileRename(String OldName, String NewName) Biến: OldName: Tên của file cần đổi

NewName: tên của file

Giá trị trả về: 0: nếu thành

-1: nếu có lổi

Miêu Tả: Dời vị trí đọc file

Cấu trúc: int FileSeek(Int Handle, Int Offset, Whence)

Biến: Handle: Biến điều khiển của file

Offset: khoảng cách di dời

Whence: vị trí bắt đầu di chuyển

0: từ đầu file

1: tại điểm đang đọc

Trang 30

2: tại vị trí cuối file

Giá trị trả về: 0: thành công

Giá trị khác: thất bại

FileSize:

Miêu Tả: Trả lại kích cở của file đang mở

Cấu trúc: Int FileSize(Int Handle)

Biến: Handle: biến điều khiển của file đang mở

Giá trị trả về: Kích thước của file tính bằng bytes

Ví dụ: DirSize=DirSize+FileSize(CurrFileHandle);

FileSplitPath:

Miêu Tả: Trả về đường dẫn của một file

Cấu trúc: String FileSplitPath(String FileName, Int Elem) Biến: ileName: đường dẫn của một file

Elem: tham số yêu cầu

0: tên ổ đĩa

1: đường dẫn

2: tên file

3: phần mở rộng

Giá trị trả về: Trả về những gì mà tham số yêu cầu

Ext=FileSplitPath(FN,3); // ini

FileWrite:

Miêu Tả: Ghi những ký tự vào một file nhị phân

Cấu trúc: int FileWrite(Int Handle, String Data, Int Length) Biến: Handle: Biến điều khiển của file nhị phân

Data: những ký tự cần ghi

Length: số những ký tự cần ghi

Giá trị trả về: Số ký tự được ghi

Ví dụ: FileWrite(FileHandle,Buffer,16);

FileWriteLn

Miêu Tả: Ghi một chuổi vào file văn bản

Cấu trúc: Int FileWriteLn(Int Handle, String Line)

Trang 31

Biến: Handle: biến điều khiển của file văn bản đang mở

Line: chuổi để ghi

Giá trị trả về: Không có giá trị nào trả về thì việc ghi thành công

Ví dụ: FileWriteLn(TextFileHandle,UserInserted);

3.2.3.5.Gates:

DeviceName:

Miêu Tả: Trả lại tên của thiết bị

Cấu trúc: String DeviceName(Int Channel, Int DevNum)

Biến: Channel: số của kênh

DevNum: số của thiết bị

Giá trị trả về: Tên của thiết bị

Ví dụ: DevName = DeviceName (1,3);

GetCmpGateValue:

Miêu Tả: Trả về giá trị đọc được từ cổng được xác định bởi tên của cổng và giá trị

ID

Cấu trúc: Real GetCmpGateValue(String Name, Int Id)

Biến: Name: tên của cổng mà bạn muốn đọc

Id: giá trị Id

Giá trị trả về: Giá trị của cổng đọc được đọc về

Miêu Tả: Trả lại trạng thái của cổng

Cấu trúc: Bool GetDigGateCommunicationStatus(String Name, Int Id)

Biến: Name: tên của cổng

Id: giá trị Id của cổng

Giá trị trả về: True: nếu cổng đọc tốt

False: nếu cổng ở trạng thái KO

GetDigGateValue:

Miêu Tả: Trả lại giá trị được đọc từ cổng số

Cấu trúc: Int GetDigGateValue(String Name, Int Id)

Biến: Name: tên của cổng cần đọc

Id: giá trị ID của cổng

Giá trị trả về: Giá trị đọc về ( nó là một số nguyên)

Ví dụ: DigiGate0001= GetDigGateValue("Gate0001",1);

SetDigGateValue

Trang 32

Miêu Tả: Thay đổi giá trị của cổng lôgic

Cấu trúc: Bool SetDigGateValue(String Name, Int Id, Int Value) Biến: Name: tên của cổng

Id: giá trị Td của cổng

Value: Giá trị được nạp cho cổng

Giá trị trả về: True: nếu giá trị được nạp cho cổng thành công

False: nếu thất bại

Miêu Tả: Trả lại sự cảnh báo của một cổng

Cấu trúc: Bool GetEvnGateAckedStatus(String Name, Int Id) Biến: Name: tên của cổng

Id: giá trị Id của cổng

Giá trị trả về: True: nếu có thông báo trả về

False: Nếu không có thông báo trả về

Miêu Tả: Trả lại sự kiện của cổng

Cấu trúc: String GetEvnGateValue(String Name, Int Id)

Biến: Name: tên của cổng bạn muốn đọc

Id: giá tri Id của cổng

Giá trị trả về: Một tin nhắn về sự kiện của cổng

Ví dụ: GateA_Msg= GetEvnGateMsg(GateA_Name,1);

GetEvnGateValue

Miêu Tả: Trả lại giá trị của cổng được chọn làm sự kiện

Cấu trúc: Bool GetEvnGateValue(String Name, Int Id)

Biến: Name: tên của cổng muốn đọc

Id: giá trị Id của cổng

Giá trị trả về: Giá trị của cổng được chọn làm sự kiện

Ví dụ: GateModified= GetEvnGateValue("Gate0001",1);

GetNumGateCommunicationStatus:

Miêu Tả: Trả lại trạng thái của cổng số

Trang 33

Cấu trúc: Bool GetNumGateCommunicationStatus(String Name, Int Id) Biến: Name: tên của cổng muốn đọc

Id: giá trị Id của cổng

Giá trị trả về: True: nếu cổng OK

False: nếu cổng KO

Ví dụ:

Bool ok;

ok = GetNumGateCommunicationStatus ("NUM 100",1);

GetNumGateProp:

Miêu Tả: Trả lại đặc tính của một cổng số

Cấu trúc: String GetNumGateProp(String Name, Int Id, int Property) Biến: Name: tên của cổng muốn đọc

Id: giá trị Id của cổng

Property: đặc tính của cổng muốn yêu cầu

Giá trị trả về: Một chuổi chủa đựng những đặc tính được yêu cầu

Ví dụ: samplingRate = GetnumeGateProp (NUM1, ID1, 10);

GetNumGateValue:

Miêu Tả: Nó trả lại giá trị đọc từ cổng số

Cấu trúc: Real GetNumGateValue(String Name, Int Id)

Biến: Name: tên của cổng bạn muốn đọc

Id: giá trị Id của cổng

Giá trị trả về: Giá trị trả về của cổng

Trang 34

SetnumGateValue:

Miêu Tả: Thay đổi giá trị của cổng số

Cấu trúc: Bool SetNumGateValue(String Name, Int Id, Real Value) Biến:Name: tên của cổng

Id: giá trị Id của cổng

Value: giá trị cần truyền vào cho cổng

Giá trị trả về: True: truyền thành công

False: nêu thất bại

GetStrGateCommunicationStatus:

Miêu Tả: Tả lại trạng thái của cổng được xác định

Cấu trúc: Bool GetStrGateCommunicationStatus(String Name, Int Id) Biến: Name: tên của cổng muốn đọc

Id: giá trị Id của cổng

Giá trị trả về: True: nếu cổng OK

False: nếu cổng KO

Ví dụ:

Bool ok;

ok = GetStrGateCommunicationStatus ("NUM 100",1);

GetStrGateValue:

Miêu Tả: Trả lại giá trị của một cổng chuổi

Cấu trúc: StringGetStrGateValue(String Name, Int Id)

Biến: Name: tên của cổng

Id: giá trị Id của cổng

Giá trị trả về: Chuổi của cổng được đọc về

Ví dụ: CurrValue= GetStrGateValue("STRGate001",STRGateNo);

SetStrGateValue:

Miêu Tả: Thay đổi giá trị của cổng chuổi

Cấu trúc: Bool SetStrGateValue(String Name, Int Id, String Value) Biến: Name: tên của cổng

Id: giá trị Id của cổng

Value: giá trị mới cần chuyển đến cho cổng

Giá trị trả về: True: nếu cổng tồn tại và chuyển đổi thành công

False: nếu ngược lại

Ví dụ: GateModified= SetStrGateValue("Gate0001SS",1,"Alfa");

3.2.3.6.Những mã lệnh thường dùng khác:

Beep:

Miêu Tả: Tạo ra âm thanh

Cấu trúc: Void Beep()

Biến: -

Trang 35

Giá trị trả về: -

Ví dụ:

Beep();

CloseSession:

CloseSession:

Miêu Tả: Đóng một tác vụ đã mở

Cấu trúc: Void CloseSession()

Biến: -

Giá trị trả về: -

Ví dụ: CloseSession();

CloseWindow:

Miêu Tả: Đóng một cửa sổ window

Cấu trúc: Void CloseWindow()

Biến: Flag: true (cho phép tự động tắt máy sau khi giám sát)

False (không cho phép)

Giá trị trả về: -

Ví dụ:

Function void DisablePCOff()

EnableShutdown(false); // không cho phép tắt máy End

Function void EnablePCOff()

EnableShutdown(true); // cho phép tắt máy End

Exec:

Miêu Tả: Thực thi một chương chình

Cấu trúc: Int Exec(String ProgName)

Biến: ProgName: Tên file của chương trình

Giá trị trả về: Giá trị >31 (thành công)

Ví dụ:

if (Exec("c:\windows\command\command.com") > 31) then

DosShellExecuted=true;

End

Trang 36

ExecEx:

Miêu Tả: Thực thi một chương trình

Cấu trúc: Int ExecEx(String ProgName,int WindowType)

Biến: ProgName: tên file của chương trình

WindowType: 1 (chương trình mở trong của sổ lớn nhất)

2 (chương trình mở trong của số nhỏ nhất)

3 (chương trình mở trong của sổ mặt định) Giá trị trả về: Giá trị >31: thành công

Miêu Tả: Trả lại đường dẫn hiện tại của dự án

Cấu trúc: String GetProjectPath()

Biến: -

Giá trị trả về: Một chuổi với đường dẫn hiện tại

Ví dụ: ProjPath=GetProjectPath();

GetProjectName:

Miêu Tả: Trả lại tên của dự án

Cấu trúc: String GetProjectName()

Giá trị trả về: True: máy tính được phép tắt

False: máy tính không được phép

Trang 37

if (GetUserName() != "MASTER") then

MessageBox("It is necessary to alert the MASTER","ALARMS");

End

GetUserGroups:

Miêu Tả: Nó trả lại những nhóm mà liên kết với người sữ dụng hiện tại

Cấu trúc: Integer GetUserGroups()

Miêu Tả: Chuyển đổi một số hex thành một số integer

Cấu trúc: Int HexStrToInt(String HexValue)

Biến: HexValue: một chuổi chứa đựng một số hex

Giá trị trả về: Giá trị integer trả về

Trang 38

Ví dụ:

int RedColor;

RedColor=HexStrToInt("FF0000");

Keyboard:

Miêu tả: Xem bàn phím được xác định bởi tên

Trước hết bàn phím phải được định nghĩa trong công cụ Keyboard Builder

Hàm này được ứng dụng chop việc tiếp xúc với màn hình

Sau đây là một vài bàn phím được xây dựng với thanh công cụ Keyboard Builder

Cấu trúc: Keyboard(String Name)

Biến: Name: tên của keyboard cần mở

Giá trị trả về: -

Ví dụ: Keyboard("NumericKeyboard");

IconMessageBox:

Miêu Tả: Làm xuất hiện một hộp thông báo và chờ xác nhận của người dùng Cấu trúc: Int IconMessageBox(String Text, String Title, Int ButtonType, Int IconType, Int DefaultButton)

Biến: Text: nội dung trong của sổ

Title: tiêu đề của cửa sổ

ButtonType: loại nút nhấn xuất hiện trong cửa sổ

IconType: loại biểu tượng xuất hiện trong của sổ

DefaultButton: nút mặt định

Loại nút nhấn:

1 hộp thông báo xuât hiện 3 loại nút nhấn: Abort, Retry, Ignore

2 hộp tjông báo xuât hiện nút nhấn: OK

3 hộp thông báo xuất hiện nút nhân OK, Cancel

Trang 39

4 hộp thông báo xuất hiện nút nhấn: Retry, Cancel

5 hộp thông báo xuất hiện nút nhấn: Yes, No

6 hộp thông báo xuất hiện nút nhấn: Yes, No, Cancel

Loại biểu tượng xuất hiện:

1 dấu chấm than xuất hiện trong hộp tin

2 dấu chấm than xuất hiện trong hộp tin( cảnh báo nguy hiểm)

3 chữ “i” (thông tin)

4 dấu hoa thị

5 dấu chấm hỏi

6 stop-icon.( biểu tượng dừng)

7 stop-icon (biểu tượng lổi)

8 stop-icon( biểu tượng bàn tay)

Giá trị trả về:

0 nếu không đủ vùng nhớ để tạo hộp thông báo

1 nếu nút Abort được chọn

2 nếu nút Cancel được chọn

3 nếu nút Ignore được chọn

4 nếu nút No được chọn

5 nếu nút OK được chọn

6 nếu nút Retry được chọn

7 nếu nút Yes được chọn

Ví dụ: IconMessageBox("You can now switch off","Shutdown sequence:", 2, 3,1);

InputDialog:

Miêu Tả: Làm xuất hiện một hộp đối thoại

Cấu trúc: String InputDialog(String Text, String Title, String InitText)

Biến: Text: dòng chử trong hộp thoại

Title: tựa đề của hộp đối thoại

InitText: dòng chử xuất hiện đấu tiên trong trường chuổi

Giá trị trả về: Chuổi trong trường chuổi mà người sữ dụng thay đổi, chuổi rỗng nếu nếu người dùng không thay đổi gì cả

Ví dụ: User=InputDialog("User's name", "Personalized access", "default");

IntToHexStr:

Miêu Tả: Chuyển một số nguyên thành số trong hệ cơ số 16

Cấu trúc: String IntToHexStr(Int Value, Int Digits)

Trang 40

Biến: Value: số nguyên được chuyển đổi

Digits: kích cở chuổi nhỏ nhất, nếu số chuyển đổi ngắn hơn thì thêm sô 0 vào bên trái mãi đến khi bằng kích cở chuổi nhỏ nhất

Giá trị trả về: Giá trị hexa được chuyển từ số nguyên

Ví dụ: Pattern = IntToHexStr(12800,4);

Logout:

Miêu Tả: Cho biết người bị từ chối không cho phép khi thác dữ liệu

Cấu trúc: Void Logout()

Biến: -

Giá trị trả về: -

Ví dụ: Logout();

Message Beep:

Miêu Tả: Gởi ra ngoài một tín hiệu âm thanh

Cấu trúc: Void MessageBeep(int type)

Biến: Type: một số xác định tín hiệu âm thanh sẽ phát ra

Giá trị: tín hiệu âm thanh

Biến: Text: dòng chữ xuất hiện trong của sổ

Title: dòng chữ xuất hiện trên thanh tiêu đề

Giá trị trả về: -

Ví dụ: MessageBox("You can now switch off", "Shutdown sequence:");

Play:

Miêu Tả: Chơi file nhạc có phần mở rộng:WAV

Cấu trúc: Void Play(String AudioFileName)

Biến: AudioFileName: tên của file nhạc cần mở

Ngày đăng: 22/12/2018, 07:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w