-
- Tổng tiền thanh toán:

Part 17. Phần mềm SCADA Cimon Ultimate Access - Hệ quản trị cơ sở dữ liệu (DBMS)
Part 17. Phần mềm SCADA Cimon Ultimate Access - Hệ quản trị cơ sở dữ liệu (DBMS)
1. User LOG DB
CIMON-SCADA cung cấp một cơ sở dữ liệu đơn giản cho phép người dùng tìm kiếm các giá trị thẻ mà không cần sử dụng DB chung. Dữ liệu được tìm kiếm được sắp xếp dưới dạng bảng. Kết quả của User LOG DB có thể được lưu dưới dạng tệp csv, pdf và excel. Người dùng cũng có thể đặt mật khẩu cho tệp DB, chẳng hạn như Excel, để tăng cường bảo mật.
- Bạn không thể chỉnh sửa thủ công dữ liệu của User LOG DB.
- Bạn không thể sử dụng User LOG DB qua mạng. Tính năng này chỉ dành cho PC cục bộ
1.1 Features
- Bạn có thể tìm kiếm hoặc chèn dữ liệu đơn giản mà không cần sử dụng các DB phổ biến như Microsoft SQL và Oracle Database.
- Dữ liệu được tìm kiếm có thể được hiển thị trong một bảng.
- Dữ liệu được tìm kiếm có thể được lưu dưới dạng tệp csv, pdf và excel.
- Bạn có thể đặt mật khẩu cho tệp đã lưu, chẳng hạn như Excel, để tăng cường bảo mật.
1.2 Settings
To bring up the configuration window of the User LOG DB, select [Tools] – [User LOG DB] or press icon
(1) Settings
Item | Description |
Database Name | Enter the name of the User LOG DB model. You cannot leave the field blank. The name cannot duplicate. The maximum length of the name is 60 characters. |
Save Path | Assign the path of the log data file to be saved. The file name format is ‘ProjectName.ldd’. |
Save Days | Assign the number of days to save the data. You can assign from 1 to 9999 days. |
Add | Adds a new DB model. |
Registry | Saves the changed DB model. |
Del | Deletes the selected DB model. |
Item Add | Adds a new item to the DB model. |
Item Del | Deletes the selected item from the DB model. |
Item Edit | Changes the settings of the selected item of the DB model. |
(2) Configuring the Record Item
When you press [Item Add] or [Item Edit] button, the dialog box will appear as shown below.
Name | Enter the name of the item. |
Data Type | Select the data type of the item. You can select digital, analog, and string. |
Data Size | This field is enabled when you select the data type as String. You can assign the size from 0 to 128. |
Tag | You can assign a tag according to the data type you have assigned. You can assign digital, analog and string tag. You may manually enter the tag name or press button to browse the tag. |
1.3 Related Features
Trong phần này, bạn có thể tìm thấy các hàm và chương trình con thường được sử dụng cho User LOG DB. Vui lòng tham khảo bảng bên dưới để biết các hàm/chương trình con áp dụng.
Command | Description | ||
Functions for data searching | Function | DbInsert | Chèn dữ liệu vào mô hình User LOG DB. |
Subroutine | DbSetFindTimeStr | Đặt thời gian tìm kiếm cho mô hình User LOG DB | |
Function | DbSetFindFilter | Đặt điều kiện tìm kiếm cho mô hình User LOG DB | |
Function | DbFindRun | Tìm kiếm dữ liệu từ CSDL Nhật ký người dùng. | |
Function | DbFindCount | Trả về số bản ghi được tìm thấy bởi hàm DbFindRun. | |
Function | DbFindFirstItem | Tìm mục đầu tiên của User LOG DB được liệt kê trên List Control. | |
Function | DbFindLastItem | Tìm mục cuối cùng của User LOG DB được liệt kê trên List Control. | |
Function | DbFindNextItem | Di chuyển tiêu điểm của List Control tới mục tiếp theo. | |
Function | DbFindPrevItem | Di chuyển tiêu điểm của List Control tới mục trước đó | |
Function | DbFindItemData | Đọc dữ liệu từ mục được chọn trên List Control. | |
List control | Subroutine | wcGridCommand | Các lệnh cho List Control như xuất dữ liệu và xóa |
Subroutine | wcGridSetData | Đặt dữ liệu vào cột và hàng được chỉ định trong List Control. | |
Subroutine | wcGridGetData | Ghi dữ liệu từ cột và hàng được chỉ định vào List Control. | |
Subroutine | wcLoadData | Tải tệp ‘CSV’ vào đối tượng List Control. | |
Subroutine | wcSaveData | Lưu nội dung của List Control dưới dạng định dạng tệp ‘csv’, ‘pdf’, ‘xlsx’. | |
Calendar Control | Function | wcGetData | Trả về nội dung của Calendar Control |
Error Codes | Bạn có thể tìm thấy lỗi với giá trị trả về của hàm |
1.3.1 Functions for Data Searching
DbInsert | Chèn dữ liệu vào mô hình User LOG DB. | |
Function | Operation | DbInsert(“UserLOGDB Name”) |
Script | n = DbInsert(“UserLOGDB Name”) | |
Description | Hàm này đọc giá trị thẻ được đăng ký vào User LOG DB và lưu nó dưới dạng dữ liệu của DB có dữ liệu thời gian. Nếu hàm không lưu được dữ liệu, giá trị ngoại trừ 0 sẽ được trả về. | |
Example | Saves data to the User LOG DB named “LOGDB”. n = DbInsert(“LOGDB”) |
DbSetFindTimeStr | Sets search time to the User LOG DB model. | |
Subroutine | Command | DbSetFindTimeStr (“UserLOGDB Name, “StartTime String”, “EndTime String”) |
Script | DbSetFindTimeStr “UserLOGDB Name”, “StartTime String”, “EndTime String” |
|
Description | Đặt thời gian tìm kiếm cho mô hình User LOG DB. Chuỗi StartTime phải là giá trị thời gian trước chuỗi EndTime. | |
Example | Sets search time from 2017 – 10 – 11 14:00:00 to 2017 – 10 – 11 15:26:35 at the User LOG DB named LOGDB. DbSetFindTimeStr “LOGDB”, “20171011140000”, “20171011152635 |
DbSetFindFilter | Đặt điều kiện tìm kiếm cho mô hình User LOG DB | |
Function | Operation | DbSetFindFilter(“UserLOGDB Name”, “Condition”) |
Script | n = DbSetFindFilter(“UserLOGDB Name”, “Condition”) | |
Description | Đặt điều kiện tìm kiếm cho mô hình User LOG DB. Nếu không có lỗi trong điều kiện, hàm trả về 0. Nếu giá trị trả về không phải là 0, hãy thay đổi điều kiện. | |
Example | Tìm mục có nhiệt độ cao hơn 30 độ C trong số các mục có số sê-ri B104 trong CSDL người dùng có tên là LOGDB. n = DbSetFindFilter (“LOGDB”, “[Serial] = $B104 AND[Temp] >= 30”) |
DbFindRun | Tìm kiếm dữ liệu từ User LOG DB. | |
Function | Operation | DbFindRun(“UserLOGDB Name”) |
Script | n = DbFindRun(“UserLOGDB Name”) | |
Description | Tìm kiếm dữ liệu từ User LOG DB với các điều kiện được đặt bởi các hàm DbSetFindTimeStr và DbSetFindFilter. Nếu dữ liệu được tìm kiếm đúng cách, hàm trả về 0. | |
Example | Searches data from the User LOG DB named LOGDB. n = DbFindRun(“LOGDB”) |
DbFindCount | Trả về số lượng bản ghi được tìm thấy bởi hàm DbFindRun. | |
Function | Operation | DbFindCount(“UserLOGDB Name”) |
Script | n = DbFindCount(“UserLOGDB Name”) | |
Description | Để thực hiện hàm này, hàm DbFindRun phải được thực hiện trước. Hàm này trả về số bản ghi từ dữ liệu được tìm kiếm. | |
Example | Returns the number of searched data from the User LOG DB named LOGDB. n = DbFindCount(“LOGDB”) |
DbFindFirstItem | Finds the first item of User LOG DB listed on the List Control. | |
Function | Operation | DbFindFirstItem(“UserLOGDB Name”) |
Script | n = DbFindFirstItem(“UserLOGDB Name”) | |
Description |
Hàm này tìm mục đầu tiên của User LOG DB được liệt kê trên List Control. Tiêu điểm di chuyển đến mục đầu tiên. |
|
Example | Moves to the first item of the User LOG DB named LOGDB listed on the List Control. n = DbFindFirstItem(“LOGDB”) |
DbFindLastItem | Finds the last item of User LOG DB listed on the List Control. | |
Function | Operation | DbFindLastItem(“UserLOGDB Name”) |
Script | n = DbFindLastItem(“UserLOGDB Name”) | |
Description |
The function finds the last item of User LOG DB listed on the List Control. The focus moves to the last item. |
|
Example | Moves to the last item of the User LOG DB named LOGDB listed on the List Control. n = DbFindLastItem(“LOGDB”) |
DbFindNextItem | Moves the focus of the List Control to the next item. | |
Function | Operation | DbFindNextItem(“UserLOGDB Name”) |
Script | n = DbFindNextItem(“UserLOGDB Name”) | |
Description |
This function moves the focus of the List Control to the next item. |
|
Example | Moves to the next item of the User LOG DB named LOGDB listed on the List Control. n = DbFindNextItem(“LOGDB”) |
DbFindPrevItem | Moves the focus of the List Control to the previous item. | |
Function | Operation | DbFindPrevItem(“UserLOGDB Name”) |
Script | n = DbFindPrevItem(“UserLOGDB Name”) | |
Description |
This function moves the focus of the List Control to the previoust item. |
|
Example | Moves to the previous item of the User LOG DB named LOGDB listed on the List Control. n = DbFindPrevItem(“LOGDB”) |
DbFindItemData | Đọc dữ liệu từ mục được chọn trên List Control. | |
Function | Operation | DbFindItemData(“UserLOGDB Name”, “Item Name”) |
Script | strVal$ = DbFindItemData(“UserLOGDB Name”, “Item Name”) | |
Description | Đọc dữ liệu từ mục đã chọn trên List Control. Khi hàm hoạt động chính xác, nó trả về giá trị của Item Name. | |
Example | Reads the [Product] value of the current focus from the User LOG DB named LOGDB. strVal$ = DbFindItemData (“LOGDB”, “Product”) |
1.3.2 Functions for List Control
wcGridSetData | Đặt dữ liệu vào cột và hàng được chỉ định trong List Control. | |
Subroutine | Command | WcGridSetData(“Object Name”, Column, Row, “Value”) |
Script | WcGridSetData “Object Name”, Column, Row, “Value” | |
Description | Sets the data to the specified column and row in the List Control. | |
Example | Sets “LOG DB” to the cell at 4th row and 2nd column in the List Control named “LOGDBLIST”. wcGridSetData“LOGDBLIST”, 2, 4, “LOGDB |
wcGridGetData | Brings the data from the specified column and row in the List Control. | |
Function | Operation | wcGridGetData (“Object Name”, Column, Row) |
Script | n= wcGridGetData (“Object Name”, Column, Row) | |
Description | Đưa dữ liệu từ cột và hàng được chỉ định vào List Control. | |
Example | Brings data from the cell at 4th row and 2nd column in the List Control named “LOGDBLIST”. n= wcGridGetData(“LOGDBLIST”, 2, 4) |
wcSaveData | Saves the contents of List Control as ‘csv’, ‘pdf’, ‘xlsx’ file format. | |
Subroutine | Command | wcSaveData (“Object Name”, “File Path”) |
Script | wcSaveData “Object Name”, “File Path” | |
Description | Lưu nội dung của List Control dưới dạng tệp ‘csv’, ‘pdf’, ‘xlsx’. Nếu bạn lưu tệp có cùng tên trong cùng Đường dẫn tệp, tệp sẽ không bị ghi đè. |
|
Example | Saves the contents of List Control “LOGDBLIST” as: - “a.csv” in C drive wcSaveData “LOGDBLIST”, “C:\a.csv” - “a.pdf” in C drive (requires pdf format file beforehand). wcSaveData “LOGDBLIST”, “C:\a.pdf” - “a.xlsx” in C drive (requires xlsx format file beforehand). wcSaveData “LOGDBLIST”, “C:\a.xlsx” |
wcLoadData | Loads the ‘CSV’ file to the List Control object. | |
Subroutine | Command | wcLoadData (“Object Name”, “CSVFile Path”) |
Script | wcLoadData “Object Name”, “CSV File Path” | |
Description | Loads the ‘CSV’ file to the List Control object. | |
Example | Loads the content of file “a.csv” in C drive to the List Control named “LOGDBLIST”. wcLoadData “LOGDBLIST”, “C:\a.csv” |
wcGridCommand | Các lệnh điều khiển danh sách như xuất và xóa dữ liệu. | |||||||||||||
Subroutine | Subroutine | wcGridCommand (“Object Name”, Command, 0, n) | ||||||||||||
Script | wcGridCommand “Object Name”, Command, 0, n | |||||||||||||
Description |
Theo Command, các lệnh chương trình con đến List Control có tên là “Object Name” chẳng hạn như dữ liệu đầu ra và xóa.
|
|||||||||||||
Example | E.g.1) Deletes all data from the List Control named “LOGDBLIST”. wcGridCommand “LOGDBLIST”, 100, 0, 0” E.g.2) Deletes data from the 3rd row of List Control named “LOGDBLIST”. wcGridCommand “LOGDBLIST”, 101, 0, 3” E.g.3) Outputs the search result to the List Control named “LOGDBLIST”. Descending: wcGridCommand “LOGDBLIST”, 102, 0, 0“ Ascending: wcGridCommand “LOGDBLIST”, 104, 0, 0“ E.g.4) Stops the current data output of the List Control named “LOGDBLIST”. wcGridCommand “LOGDBLIST”, 103, 0, 0” |
1.3.3 Functions for Calendar Control
wcGetData | Returns the content of the Calendar Control. | |||||||||||||||
Function | Operation | wcGetData(“Object Name”,Item) | ||||||||||||||
Script | n=wcGetData(“Object Name”,Item) | |||||||||||||||
Description |
Trả về nội dung của Calendar Control có tên là “Object Name”, theo giá trị được gán cho Item. Khi kiểu hiển thị của đối tượng là ‘Date’, bạn có thể gán 0, 1 và 2 cho Item. Khi kiểu hiển thị của đối tượng là ‘Time’, bạn có thể gán 3, 4 và 5 cho Item.
|
|||||||||||||||
Example | E.g.1) Returns the ‘Year’ data from the Calendar Control named as “Calendar”. wcGetData(“Calendar”,0)=n E.g.2) Returns the ‘Second’ data from the Calendar Control named as “Calendar”. wcGetData(“Calendar”,5)=n |
1.3.4 Error Codes
Khi hàm không hoạt động bình thường, bạn có thể kiểm tra lý do bằng giá trị trả về. Các mã lỗi này chỉ được sử dụng cho các hàm như ‘DbSetFindFilter’, ‘DbInsert’ và ‘DbFindRun’. Nếu giá trị kết quả là 0, điều đó cho biết hàm hoạt động bình thường. Lỗi xảy ra khi cú pháp của biểu thức điều kiện sai hoặc hàm không hoạt động
Error Code | Description |
0 | The function has operated properly |
1 | There is no User LOG DB model corresponding to the parameter. |
2 | The system is busy. Could not process the function |
3 | The assigned User LOG DB model has stopped |
4 | There is a syntax error or no item in the conditional expression |
5 | The parameter of the conditional expression is too large |
6 | There is an error in the conditional expression |
7 | There is only a part of the bracket in the conditional expression. (There is ‘[‘ symbol but no ‘]’ symbol) |
8 | The inequation of the conditional expression is incorrect |
9 | When a tag is used in the conditional expression, the type of the tag and item is not identical |
1.4 Detailed Features
1.4.1 Search Filter
Bạn có thể tìm dữ liệu mong muốn từ User LOG DB bằng bộ lọc
Để có kết quả mong muốn, hãy sử dụng hàm n = DbSetFindFilter(“UserLOGDB Name”, “Condition”).
Nếu không có lỗi trong biểu thức điều kiện và cấu hình bộ lọc đã hoàn tất, hàm sẽ trả về 0. Nếu có lỗi, hàm sẽ trả về giá trị khác 0.
Các quy tắc cho biểu thức điều kiện được liệt kê dưới đây:
- Các mục được cấu hình trong User LOG DB là phần tử chính của biểu thức điều kiện. Các mục được sử dụng dưới dạng [Item Name]
Ví dụ:) Nếu bạn muốn tìm kiếm dữ liệu có điều kiện trên PRODUCT, hãy nhập [PRODUCT].
- Khi bạn viết biểu thức điều kiện, chỉ có thể sử dụng một mục. Nhập một mục trong một cặp dấu ngoặc như [PRODUCT], [SERIAL].
- Để tạo nhiều điều kiện, hãy kết nối các điều kiện bằng AND hoặc OR.
Ví dụ) Nếu bạn muốn tìm một sản phẩm có tên là “A” và số sê-ri là “A101”, hãy nhập [PRODUCT] = $A AND [SERIAL] = $A101 làm điều kiện.
- Bạn không thể sử dụng phép toán ngoặc.
Ví dụ) Khi bạn nhập biểu thức điều kiện như
DbSetFindFilter("UserLOGDB", "(SERIAL) = $B04"), lỗi sẽ xảy ra
- Nếu một chuỗi là toán hạng, bạn phải thêm “$” vào trước chuỗi
Ví dụ) Nếu bạn muốn tìm một thẻ chuỗi, hãy nhập điều kiện như [PRODUCT] = $A.
- Khi bạn tạo một biểu thức điều kiện bằng cách sử dụng giá trị thẻ, bạn phải nhập tên đầy đủ của thẻ
Ví dụ) Khi bạn so sánh giá trị thẻ của LOGDB.TEMP1 và LOGDB.TEMP2, hãy nhập biểu thức điều kiện như LOGDB.TEMP1 < [TEMP] < LOGDB.TEMP2
Ví dụ về tập lệnh sử dụng hàm DbSetFindFilter trong tập lệnh ‘Find’
Khi bạn thực thi tập lệnh, kết quả sẽ như bên dưới. Bạn sẽ thấy rằng chỉ những mục có số sê-ri “B104” được hiển thị trên List Control
1.4.2 Direct Control on Data Searching
Bạn có thể tìm kiếm dữ liệu theo cách thủ công từ User LOG DB và kiểm soát các kết quả được liệt kê trên List Control.
Để kiểm soát dữ liệu được tìm kiếm, hãy sử dụng các hàm như DbFindCount, DbFindFirstItem, DbFindNextItem và DbFindItemData.
- n = DbFindCount(“UserLOGDB Name”) là để lấy số bản ghi được tìm thấy bởi hàm DbFindRun.
- n = DbFindFirstItem(“UserLOGDB Name”) là để chỉ ra mục đầu tiên trong danh sách.
- n = DbFindNextItem(“UserLOGDB Name”) là để di chuyển đến mục tiếp theo từ mục hiện đang được chọn.
- findData = DbFindItemData(“UserLOGDB Name”, “Item Name”) là để lấy dữ liệu từ mục đã chọn
Thêm một tập lệnh như “FindDirect” để lưu dữ liệu “Áp suất”, “Nhiệt độ”, “Tên sản phẩm” và “Số sê-ri” vào một thẻ mới, tìm kiếm qua danh sách dữ liệu đã tìm kiếm.
f) Sử dụng hàm DbFindCount để đọc số dữ liệu được tìm kiếm bởi hàm DbFindRun.
g) Sử dụng hàm DbFindFirstItem để di chuyển đến mục đầu tiên của danh sách. Sau đó, tìm kiếm qua mô hình User LOG DB được chỉ định nhiều bằng số bản ghi.
h) Sử dụng DbFindItemData để thu thập dữ liệu của ‘TIME’, ‘PRODUCT’, ‘SERIAL’, ‘TEMPERATURE’ và ‘PRESSURE’, sau đó đặt giá trị cho các thẻ bằng hàm SetTagVal.
i) Sử dụng hàm DbFindNextItem để di chuyển đến mục tiếp theo và lặp lại bước h) và i) cho đến khi vòng lặp kết thúc.
Kết quả thực thi tập lệnh như sau. Các giá trị Nhiệt độ, Áp suất, Tên sản phẩm và Số sê-ri được nhập vào thẻ ảo.
Bạn có thể tìm kiếm trong danh sách theo hướng ngược lại bằng cách sử dụng các hàm DbFindLastItem và DbFindPrevItem như được hiển thị bên dưới
1.4.3 Controlling List Control
Bạn có thể xuất dữ liệu được tạo thủ công hoặc dữ liệu được đọc từ tệp csv trên List Control. Đoạn mã sau là ví dụ về dữ liệu người dùng được xuất.
Kết quả thực thi như sau
Đoạn mã sau đây là để đọc dữ liệu từ tệp csv và xuất dữ liệu ra List Control