Đăng Ký
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 14
  1. #1
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết

    Autobase connect SQL Server 2005

    Hiện nay tất cả các phần mềm Scada đều có khả năng kết nối với các Database để sao lưu và phục hồi dữ liệu.
    Autobase có khả năng kết nối với hầu hết các chương trình lưu trữ và quản lý dữ liệu (Database) như MS SQL server; My SQL, Oracle, Acess(*.mdb), CSV file…Trong bài này tôi sẽ giới thiệu chức năng lưu trữ dữ liệu của Autobase với cơ sở dữ liệu (Database) MS SQL Server 2005.
    Các bạn có thể download video về tham khảo theo link: http://www.mediafire.com/?jbsdvyrr1k1q3kw
    Phần 1 là cách Insert (chèn) dữ liệu vào bảng, Update, Delete, lấy dữ liệu.
    Phần 2 là 1 Demo ví dụ đơn giản lưu dữ liệu tự động với chu kì thời gian đặt trước.
    Yêu cầu: Máy tính có cài đặt chương trình MS SQL Server (phiên bản nào cũng được).
    Trong ứng dụng Project Autobase này sẽ ứng dụng các Window Control Object của Autobase để nhập dữ liệu cũng như hiển thị dữ liệu. Ưu điểm của cách này là hạn chế sử dụng các Tag để hiển thị nên sẽ tiết kiệm được chi phí nếu ứng dụng thực tế (vì chi phí cho bản quyền phần mềm tính theo số lượng Tag được sử dụng). Tuy nhiên để dễ dàng cho việc ứng dụng các chức năng các bạn có thể tạo các tag và sử dụng các Tag Object để hiển thị.
    Yêu cầu:
    - Sử dụng Autobase để lưu dữ liệu vào bảng dữ liệu của SQL Server 2005. Sử dụng Object Edit Box để nhập và hiển thị dữ liệu từ Database.
    - Chương trình thực hiện
    Bước 1 : Thực hiện ghi dữ liệu
    Bước 2: Thực hiện đọc dữ liệu
    Bước 3: Thay đổi và chỉnh sửa bảng dữ liệu
    Bước 5: Xóa dữ liệu
    - Trình tự thực hiện:
    1. Chạy chương trình SQL server tạo 1 Database trong Database mới này tạo bảng dữ liệu có tên là “Bang_1” có số cột và tên vùng (Field name) như sau

    ID...............Column1..............Column2..... ...........Column3

    2. Chạy chương trình Autobase tạo Project mới và thực hiện soạn thảo giao diện màn hình có các thành phần bao gồm có nút nhấn chức năng “Insert”; “Update”; “Delete”; “Get Data”
    3. Thực hiện kết nối Autobase với Bảng dữ liệu
    4. Viết Code cho các nút nhấn chức năng
    xem video ở đây

    Phần I
    A) TẠO BẢNG DỮ LIỆU DATABASE

    Chạy chương trình SQL Server 2005 tạo bảng dữ liệu như các hình sau


    <Hình 1>
    Thực hiện đăng nhập với tài khoản như lúc cài đặt chương trình SQL

    <Hình 2>
    Hoặc

    <Hình 2_1>
    Tạo mới Database

    <Hình 3>
    Lần sửa cuối bởi hoangminh1803, ngày 09-28-2011 lúc 02:42 PM.

  2. #2
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    <tiếp.....>
    Click chuột phải như hình để tạo mới Database, trong database này ta sẽ tạo bảng dùng để lưu trữ dữ liệu.

    <Hình 4>
    Đặt tên cho Database.

    <Hình 5>
    Database được tạo (AutobaseVina) hình sau:

    <Hình 6>
    Tạo bảng dữ liệu mới click chuột phải và chọn New Table như hình sau:

    <Hình 7>
    Lần sửa cuối bởi hoangminh1803, ngày 09-28-2011 lúc 02:08 PM.

  3. #3
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    Tạo các Field Name và kiểu dữ liệu, trong trường hợp này tạo 3 Field Name Column1, Column2, Column3

    <Hình 8>

    <Hình 9>
    Lưu tên bảng dữ liệu

    <Hình 10>
    Xem bảng dữ liệu vừa tạo bằng cách Click chuột phải chọn Open Table:

    <Hình 11>

  4. #4
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    Bảng dữ liệu mới vừa được tạo sẽ dùng để lưu các dữ liệu từ chương trình Runtime của Autobase.

    <Hình 12>
    B) Tạo giao diện và kết nối AutoBase với SQL Server.
    1. Tạo Project mới

    <Hình 13>

    <Hình 14>
    2. Cấu hình kết nối Autobase với cở dữ liệu của SQL server, trên thanh menu của chương trình Studio chọn config/Database Connection nhu hình sau:

    <Hình 15>
    Lần sửa cuối bởi hoangminh1803, ngày 09-28-2011 lúc 02:35 PM.

  5. #5
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    Khi ta liên kết với Database thì phải có tên của Database Server, tên Database như trong hình sau thì tên của Server là “HOANGMINHHAN-PC\SQLEXPRESS” và tên của Database là “AutoBaseVina”. Để xem các thông tin này thì click chuột phải vào bảng Database vừa tạo chọn Properties để lấy các thông tin trên.

    <Hình 16>
    Provider=SQLOLEDB;Data Source=HOANGMINHHAN-PC\SQLEXPRESS;User ID=sa;Password=sa;Initial Catalog=AutoBaseVina;
    Chuỗi kết nối này sử dụng User ID và Password như khi cài đặt chương trình SQL Server. Các bạn hãy điền các thông số cho phù hợp với máy tính của mình!
    Nếu trường hợp SQL của bạn không cài pass và user ID thì 2 mục này trong chuỗi kết nối để trống.


    <Hình 17>
    Sau đó nhấn nút “Connection Test” để kiểm tra

    <Hình 18>
    Như vậy là việc kết nối đã Ok, tiếp theo tạo giao diện và viết các chức năng để lưu dữ liệu.
    3. Giao diện đồ họa
    Hình sau là một giao diện đơn giản để thực hiện các chức năng.

    <Hình 19>
    Lần sửa cuối bởi hoangminh1803, ngày 09-28-2011 lúc 03:03 PM.

  6. #6
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    Các thành phần chính của giao diện bao gồm:
    - 7 Editbox, chức năng của các Editbox này là dùng để nhập các dữ liệu kiểu kí tự để ghi xuống Database đồng thời cũng dùng để hiển thị các dữ liệu trong bảng Database.
    Để chèn các Editbox này từ trên thanh menu của Studio chọn Object/Windows Control/ Edit Box như hình sau:

    <Hình 20>

    Sau đó click x2 để thiết lập thuộc tính cho các Object này, đặt tên cho thuộc tính Class Name cho các Object tương ứng.

    <Hình 21>

    Tương tự ta làm cho các Edit Box còn lại!
    Trên giao diện còn có các nút chức năng ở đây ta dùng 6 Button Script như hình ở trên.
    Để chèn các nút nhấn này vào giao diện từ thanhmenu chọn Object/Button/Script Button như hình sau:

    <Hình 22>

    Để thay đổi nội dung hiển thị trên Button và thay đổi màu sắc và các thuộc tính khác ta click x2 vào nút nhấn để thiết lạp như hình sau:

    <Hình 23>

  7. #7
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    Lần lượt làm tương tụ với các nút còn lại.
    Đó là cách thiết lập các Object cơ bản, còn lại các thành phần như các “Text”, các hình vuông trang trí thêm các bạn có thể sử dụng các công cụ sẵn có của chương trình Studio để tạo như hình ở trên.
    Bước tiếp theo là viết code cho nút nhấn Script để thực hiện các chức năng.

    5. Viết Script
    5.1 Insert Button Script
    Click x2 vào nút nhấn Insert chọn Edit như hình sau:

    <Hình 24>

    Xuất hiện hộp thoại cho phép soạn thảo Script, nhấn Help để lấy câu lệnh hỗ trợ.

    <Hình 25>

    Do phiên bản này file Help chưa có tiếng Anh(nhưng sẽ có trong thời gian ngắn nữa) nên đành “Mò” theo câu lệnh!! Nếu cần câu lệnh nào thì cần nhập từ khóa là sẽ có ví dụ như DbCommand, database, Edit Box, Combo box …chúng ta sẽ tìm được chức năng mong muốn!


    <Hình 26>


    <Hình 27>

    @EditBoxGetText("id", txtID); //Lấy nội dung của Edit Box có classname "id" gán cho biến "txtID", biến //"txtID" kiểu dữ liêu string
    @EditBoxGetText("col1", txtCol1); //Lấy nội dung của Edit Box có classname "col1" gán cho biến //"txtID", biến "txtCol1" kiểu dữ liêu string
    @EditBoxGetText("col2", txtCol2); //Lấy nội dung của Edit Box có classname "col2" gán cho biến //"txtID", biến "txtCol2" kiểu dữ liêu string
    @EditBoxGetText("col3", txtCol3); //Lấy nội dung của Edit Box có classname "col3" gán cho biến //"txtID", biến "txtCol3" kiểu dữ liêu string

    @sprintf(query,"INSERT INTO Bang_1 (ID,Column1,Column2,Column3) VALUES('%s', '%s', '%s','%s')",txtID, txtCol1,txtCol2,txtCol3);
    @DbCommand("SQL_connect", query);

    @EditBoxSetText("id",""); //Xóa nội dung của Edit Box
    @EditBoxSetText("col1",""); //Xóa nội dung của Edit Box
    @EditBoxSetText("col2",""); //Xóa nội dung của Edit Box
    @EditBoxSetText("col3",""); //Xóa nội dung của Edit Box
    Đoạn code ở hình trên thực hiện lấy các kí tự trong các EditBox gán cho các biến, sau đó sử dụng câu lệnh của SQL để chèn các kí tự này vào bảng database, sau khi gán xong thì xóa nội dụng của các EditBox. Sauk hi nhập xong các lệnh nhấn nút Complie để kiểm tra cú pháp.
    Sauk hi soạn thảo xong Script nhấn nút “Ok” để lưu kết quả và chạy thử chương trình. Giao diện của chương trình

  8. #8
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết

    <Hình 28>

    Nhập các dữ liệu vào EditBox sau đó nhấn nút Insert, mở bảng dữ liệu của SQL Server để kiểm tra

    <Hình 29>

    Như vậy nút “Insert” dùng để nhập dữ liệu đã hoàn thành!
    5.2 Script cho nút nhấn Delete
    Thao tác tương tự như nút “Inser” sau đó soạn thảo Script như hình sau

    <Hình 30>

    @EditBoxGetText("id", txtID); //Lấy nội dung của Edit Box có classname "id" gán cho //biến "txtID", biến "txtID" kiểu dữ liêu string
    @sprintf(query,"DELETE FROM Bang_1 WHERE ID = '%s'",txtID);
    @DbCommand("SQL_connect", query);
    @EditBoxSetText("id", "");
    Mô tả:
    Đoạn Script ở trên thực hiện xóa ở Bang_1 nơi mà có giá trị được chọn ở cột ID. Điều này có nghĩa là khi chúng ta nhập vào cột ID có dữ liệu giống như ở cột ID đã chọn thì tất cả dữ liệu ở hàng giá trị ID đã chọn sẽ bị xóa.

    5.3 Nút nhấn Update
    Click x2 vào Object của nút nhấn “Update” và mở cửa sổ soạn thảo đoạn Script như hình sau:

    <Hình 31>

    Đoạn Code:
    @EditBoxGetText("ID_UD", txtID_UD); //Lấy nội dung của Edit Box có classname //"ID_UD" gán cho biến "txtID_UD", biến "txtID_UD" kiểu dữ liêu string
    @EditBoxGetText("col_Ud", txtCol_Ud); //Lấy nội dung của Edit Box có classname //"col_Ud" gán cho biến "txtCol_Ud", biến "txtCol_Ud" kiểu dữ liêu string
    @EditBoxGetText("data", txtdata_Ud); //Lấy nội dung của Edit Box có classname "data" //gán cho biến "txtdata_Ud", biến "txtdata_Ud" kiểu dữ liêu string

    @sprintf(query,"UPDATE Bang_1 SET Column%s='%s' WHERE ID=%s",txtCol_Ud,txtdata_Ud,txtID_UD);
    @DbCommand("SQL_connect", query);

    @EditBoxSetText("ID_UD", ""); //Xóa nội dung của Edit Box
    @EditBoxSetText("col_Ud",""); //Xóa nội dung của Edit Box
    @EditBoxSetText("data",""); //Xóa nội dung của Edit Box

    //-------Hiển thị các giá trị mới Update-----------//
    @sprintf(buf_query,"SELECT * FROM Bang_1 WHERE ID=%s",txtID_UD);
    connection_id = @DbDsOpen("SQL_connect",buf_query);
    //Lấy data từ bảng database
    txtid = @DbDsGetRowData(connection_id, "ID", 0);
    data1 = @DbDsGetRowData(connection_id, "Column1", 0);
    data2 = @DbDsGetRowData(connection_id, "Column2", 0);
    data3 = @DbDsGetRowData(connection_id, "Column3", 0);
    //Hiển thị trên Edit Box
    @EditBoxSetText("id",txtid);
    @EditBoxSetText("col1",data1); //gán data1 cho nội dung của Edit Box có //ClassName là "col1"
    @EditBoxSetText("col2",data2); //gán data2 cho nội dung của Edit Box có //ClassName là "col2"
    @EditBoxSetText("col3",data3); //gán data3 cho nội dung của Edit Box có //ClassName là "col3"
    @DbDsClose(connection_id);
    Chú ý nhớ khai báo biến đã sử dụng trong Script

  9. #9
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    5.4 Nút Get Data
    Ứng dụng của nút này là có thể sử dụng để lấy 1 dữ liệu cụ thể để ghi thông số cài đặt cho các thiết bị. Trong Project này dữ liệu là kiểu kí tự được lấy từ Database sau đó hiển thị lên màn hình. Tuy nhiên nếu bạn muốn lấy dữ liệu dạng số (int, float…) thì có thể dùng hàm chuyển đổi từ dạng kí tự sang dạng số mà bạn muốn sử dụng hoặc các bạn có thể tạo trên SQL Server dữ liệu là kiểu số thì bạn có thể lấy trục tiếp các dữ liệu số đó để xuất xuống thiết bị (PLC, bộ điều khiển…)
    Viết đoạn code như hình sau:


    <Hình 32>
    Đoạn code ở trong hình:
    @EditBoxGetText("ID_UD", txtID_UD); //Lấy nội dung của Edit Box có classname //"ID_UD" gán cho biến "txtID_UD", biến "txtID_UD" kiểu dữ liêu string
    @EditBoxGetText("col_Ud", txtCol_Ud); //Lấy nội dung của Edit Box có classname //"col_Ud" gán cho biến "txtCol_Ud", biến "txtCol_Ud" kiểu dữ liêu string

    @sprintf(buf_query,"SELECT * FROM Bang_1 WHERE ID=%s",txtID_UD);
    connection_id = @DbDsOpen("SQL_connect",buf_query);

    //Lấy data từ bảng database
    @sprintf(columnview,"Column%s",txtCol_Ud);
    txtdata = @DbDsGetRowData(connection_id, columnview, 0);

    //Hiển thị trên Edit Box
    @EditBoxSetText("data",txtdata);
    @DbDsClose(connection_id);

    Phần 2
    1. Ứng dụng lưu dữ liệu tự động
    Giả sử các bạn muốn lưu giá trị nhiệt độ từ các bộ điều khiển một cách tự động sau 1 khoảng thời gian chương trình sẽ tự động lưu vào Database. Trong Demo này toii sẽ làm thêm phần tự động lưu thông số của 3 Tag nội (giả lập giá trị nhiệt độ đưa vào máy tính). Hoạt động như sau:
    Khi nhấn nút “ON” trên màn hình giám sát các thông số về nhiệt độ sẽ lưu vào bảng dữ liệu với thời gian là lúc giá trị được ghi. Khi nhấn OFF chương trình sẽ không lưu giá trị.

    1.1 Tạo Tag
    Trước tiên ta tạo ra 3 Tag Analog Input kiểu Memory có tên là “Temperature1”, “Temperature2”, “Temperature3”, và 1 Tag DI kiểu Memory như hình sau:

    <Hình 33>
    Thiết lập các thuộc tính của 3 Tag AI như sau:

    <Hình 34>
    Thiết lập tương tự cho 2 tag còn lại. Với Tag DI thì chỉ cần tạo là kiểu Tag Memory là được. Sau đó nhấn Ok để thoát ra.

    1.2 Tạo giao diện
    Ttiếp theo tạo thêm trên màn hình các thành phần như hình sau:

    <Hình 35>

  10. #10
    Thành viên cấp 2
    Ngày tham gia
    Jun 2011
    Bài viết
    65
    Thanks
    0
    11 lượt trong 8 bài viết
    - Chèn 2 nút nhấn Script (ON & OFF) viết Code như hình sau:

    <Hình 36>
    Ở hình trên khi chương trình giám sát chạy nếu nhấn nút “ON” thì Tag DI có tên “AutoSave” sẽ có giá trị là 1. Làm tương tự cho nút OFF (Tag DI $AutoSave = 0).
    Chèn ảnh động cho Tag DI này để hiển thị trạng thái ON/OFF bằng cách từ trên Menu của chương trình Studio chọn Object/Digital/ Digital Circle:

    <Hình 37>

    <Hình 38>
    Để hiển thị giá trị của Tag analog Input trên màn hình trên menu chọn Object/Analog/ Analog String

    <hình 39>

Trang 1 của 2 12 CuốiCuối

Tag của Chủ đề này

Đánh dấu

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Back to Top