Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 93 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
93
Dung lượng
5,45 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA - NGUYỄN TRỌNG NHÂN PHÁT TRIỂN CƠNG CỤ TÍCH HỢP BKSI TRÊN NỀN TẢNG C# VÀ AUTOMATION ML (Development of BKSI integrated tool base on C# and AutomationML) Chuyên ngành : KỸ THUẬT ĐIỀU KHIỂN & TỰ ĐỘNG HÓA Mã số: 60520216 LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, 2018 TP HỒ CHÍ MINH, 2018 CƠNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM Cán hướng dẫn khoa học : TS Trương Đình Châu (Ghi rõ họ, tên, học hàm, học vị chữ ký) Cán chấm nhận xét : TS Nguyễn Đức Thành (Ghi rõ họ, tên, học hàm, học vị chữ ký) Cán chấm nhận xét : TS Nguyễn Trọng Tài (Ghi rõ họ, tên, học hàm, học vị chữ ký) Luận văn thạc sĩ bảo vệ Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 11 tháng 01 năm 2019 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị Hội đồng chấm bảo vệ luận văn thạc sĩ) TS Nguyễn Vĩnh Hảo TS Nguyễn Trọng Tài PGS.TS Nguyễn Thanh Phương TS Trần Ngọc Huy TS Nguyễn Đức Thành Xác nhận Chủ tịch Hội đồng đánh giá LV Trưởng Khoa quản lý chuyên ngành sau luận văn sửa chữa (nếu có) CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA………… ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Nguyễn Trọng Nhân MSHV:1670788 Ngày, tháng, năm sinh: 22/09/1992 Nơi sinh: Bình Thuận Chuyên ngành: Kỹ thuật điều khiển va tự động hóa Mã số : 60520216 I TÊN ĐỀ TÀI: Phát triển công cụ tích hợp BKSI dựa tảng C# Automation ML II NHIỆM VỤ VÀ NỘI DUNG: Chuyển đối tượng PLC thành chuẩn xml dựa Automation ML Tạo cơng cụ tích hợp tương tác với phần mềm lập trình PLC vừa rút ngắn thời gian thực dự án, vừa để áp dụng việc chuẩn hóa Automation ML III NGÀY GIAO NHIỆM VỤ : 26/02/2018 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 02/12/2018 V CÁN BỘ HƯỚNG DẪN: TS Trương Đình Châu Tp HCM, ngày tháng năm 20 CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN ĐÀO TẠO (Họ tên chữ ký) (Họ tên chữ ký) TRƯỞNG KHOA….……… (Họ tên chữ ký) TĨM TẮT LUẬN VĂN Trong q trình triển khai dự án tự động hóa, kỹ sư phải đối mặt với vấn đề: giảm thiểu thời gian phát triển, tối ưu hóa nhân thực hiện, tăng tính linh hoạt đảm bảo chất lượng hệ thống Khi phương pháp cũ lạc hậu bộc lộ nhiều hạn chế việc phát triển ứng dụng phương pháp cần thiết Đặc biệt thời đại cơng nghiệp hóa, đại hóa, sức mạnh cơng nghệ thơng tin cần phải tận dụng tối đa Một vấn đề mấu chốt để giảm thiểu thời gian phát triển chương trình nhân lực phải tái sử dụng tài nguyên Tuy nhiên, hệ thống PLC nhiều hãng cung cấp khác chưa có chuẩn thống cho đối tượng chương trình Chính việc quản lý sử dụng tài nguyên hệ thống áp dụng vào hệ thống khác điều không dễ dàng Vào năm 2009, hiệp hội PLCOpen chuyển nội dung đối tượng PLC thành cấu trúc xml Sau đó, tổ chức Automation ML chuẩn hóa định dạng để thống tảng PLC khác Hiểu vấn đề nên tơi định hướng đề tài hướng đến việc nghiên cứu rút ngắn trình triển khai dự án Đưa đối tượng chuẩn để quản lý tái sử dụng dễ dàng LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu khoa học độc lập riêng tơi Các thơng tin trích dẫn luận văn rõ nguồn gốc Các kiến thức sử dụng, kết nghiên cứu nêu luận văn tơi tự tìm hiểu, phân tích phát triển cách trung thực, khách quan, phù hợp với mục tiêu đề tài nghiên cứu chưa cơng bố cơng trình khác Học viên Nguyễn Trọng Nhân MỤC LỤC GIỚI THIỆU ĐỀ TÀI 1.1 Vấn đề đặt 1.2 Giới thiệu đề tài 1.3 Mục tiêu nhiệm vụ .5 CƠ SỞ LÝ THUYẾT 2.1 Tổng quan hệ thống 2.1.1 Bộ điều khiển - PLC .6 2.1.2 Thiết bị tín hiệu điều khiển .8 2.1.3 Hồ sơ thiết kế hệ thống 10 2.1.4 AutomationML, tảng công nghiệp 4.0 11 2.1.5 Totally Integrate Application (TIA) Portal 16 2.1.6 TIA Openness 17 PHÁT TRIỂN PHẦN MỀM TÍCH HỢP BKSI 19 3.1 Yêu cầu chương trình: 19 3.2 Xây dựng cấu trúc liệu 20 3.3 Xây dựng giao diện 23 3.4 Xây dựng tính tạo quản lý thiết bị 24 3.5 Xây dựng tính xuất file hồ sơ hệ thống 30 3.6 Kết nối với chương trình TIA Portal 35 3.6.1 Cài đặt TIA Openness 35 3.6.2 Kết nối với chương trình TIA Portal 37 3.6.3 Đọc thông tin TIA Portal 40 3.7 Xây dựng tính xuất Tag List để import vào TIA Portal 43 3.7.1 Xuất TagList định dạng XLSX 43 3.7.2 Xuất TagList theo cấu trúc AutomationML 45 3.8 Xây dựng tính xuất file liệu xml dựa Automation ML 46 3.8.1 Cấu trúc file XML chuẩn: 46 3.8.2 Mô tả ngôn ngữ LAD/FBD dạng XML 49 3.8.3 Mô tả ngôn ngữ SCL dạng XML: 51 3.8.4 Mô tả khối DataBlock dạng XML: 56 3.9 Xây dựng tính Import file xml 57 3.9.1 Import Tag vào chương trình TIA Portal 59 3.9.2 Import khối Block vào chương trình TIA Portal 59 ỨNG DỤNG VÀO TRIỂN KHAI DỰ ÁN THỰC TẾ 61 4.1 Yêu cầu đặt việc xây dựng mơ quy trình 61 4.2 Tạo thiết bị 63 4.2.1 Tạo khu vực 63 4.2.2 Tạo thiết bị 65 4.2.3 Sắp xếp địa IO 67 4.2.4 Trích xuất file báo cáo 67 4.2.5 Trích xuất IO List 68 4.2.6 Export file XML chứa nội dung thiết bị 70 4.2.7 Chuyển liệu xml vào TIA để tạo thiết bị tự động 71 KẾT LUẬN ĐỀ TÀI 73 5.1 Đánh giá kết luận văn 73 5.2 Hướng nghiên cứu phát triển 73 TÀI LIỆU THAM KHẢO 75 PHỤ LỤC 76 7.1 Code tạo chỉnh sửa Area 76 7.2 Code tạo thiết bị 76 7.3 Code tạo địa IO 77 7.4 Code tạo Report 78 7.4.1 Code tạo IO List Report 78 7.4.2 Code tạo Device List Report 79 7.5 Code tạo liệu Import vào TIA Portal 80 7.5.1 Code tạo file Tag List theo định dạng Xlsx 80 7.5.2 Code tạo file Tag List dạng XML 81 DANH MỤC HÌNH VẼ Hình 1.1: Quy trình thực dự án Hình 1.2: Quy trình thực dự án rút gọn Hình 1.3: Vai trị BKSI cấu trúc hệ thống Hình 1.4: Sơ đồ tính phần mềm BKSI Hình 2.1: Thiết bị PLC S7-1200 Hình 2.2: Thiết bị PLC S7-1500 Hình 2.3: Khối thiết bị valve bướm Hình 4: Khối thiết bị Analog Input Hình 5: Khối thiết bị động Hình 2.6: Mẫu tài liệu IO List 11 Hình 2.7: Các khả mơ tả Automation ML 13 Hình 2.8: Trao đổi thơng tin EPLAN TIA Portal 14 Hình 2.9: Sự kết hợp OPC UA Automation ML 15 Hình 2.10: Sơ đồ đối tượng Automation ML mẫu 15 Hình 2.11: Kiến trúc phần mềm TIA Portal 16 Hình 2.12: Các thành phần TIA Portal 17 Hình 2.13: Vai trị TIA Openness 17 Hình 2.14 Đầu vào TIA Openness 18 Hình 3.1: Giai đoạn phát triển 19 Hình 3.2: Giai đoạn phát triển 20 Hình 3.3: Database SQLite 20 Hình 3.4: Cấu trúc bảng tbl_DeviceList 21 Hình 3.5: Cấu trúc bảng tbl_IOList 22 Hình 3.6: Giao diện chương trình 23 Hình 3.7: Thanh menu Dashboard 23 Hình 3.8: Biểu tượng chức quản lý thiết bị 24 Hình 3.9: Các phần cửa sổ quản lý thiết bị 25 Hình 10: Cửa sổ khai báo khu vực 25 Hình 3.11: Cửa sổ khai báo thiết bị 26 Hình 3.12: Tempalte thiết bị 26 Hình 3.13: Chọn khu vực chứa thiết bị 27 Hình 3.14: Lựa chọn kiểu khai báo 27 Hình 3.15: Khai báo số lượng IO thiết bị 27 Hình 3.16: Cửa sổ chỉnh sửa Tag 28 Hình 3.17: Nút nhấn tạo địa IO 29 Hình 3.18: Cấu hình địa PLC 29 Hình 3.19: Quy trình tạo địa cho Tag IO 30 Hình 3.20: Header mẫu báo cáo 31 Hình 3.21: Mục chọn logo cho báo cáo 31 Hình 3.22: Lựa chọn loại báo cáo 32 Hình 3.23: Chỉnh sửa tiêu đề báo cáo 32 Hình 24: Nút nhấn tạo báo cáo 32 Hình 3.25: Thiết kế nội dung file báo cáo 33 Hình 3.26: Nội dung báo cáo sau xuất 34 Hình 3.27: Mẫu báo cáo tổng số lượng IO dùng 34 Hình 3.28: mẫu báo cáo danh sách thiết bị 35 Hình 3.29: Thanh cơng cụ xem file báo cáo 35 Hình 3.30: Cài đặt TIA Openness 36 Hình 3.31: Thư viện TIA Openness 36 Hình 3.32: Add file thư viện vào C# 37 Hình 3.33: User Group TIA Openness 37 Hình 3.34: Sơ đồ kết nối thơng qua thư viện TIA Openness 38 Hình 3.35: Quy trình truy cập vào TIA Portal 38 Hình 3.36: Cửa sổ cho phép truy cập vào TIA Portal 39 Hình 3.37: Quy trình đọc đối tượng TIA Portal 41 Hình 3.38: Kết hiển thị sau đọc project 42 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 Hình 4.12: Khai báo địa cho thiết bị hữu 4.2.3 Sắp xếp địa IO Sau tạo xong thiết bị, tất liệu lưu vào SQLite Tiếp theo, nhấn vào nút Assign Address để tạo địa cho IO Ta kết sau: Hình 4.13: Kết sau tạo địa cho IO Trong địa Start, Stop, Q_cmd P01 có hình ổ khóa, cho biết địa cố định, khơng thay đổi 4.2.4 Trích xuất file báo cáo Tại menu ribbon Dashboard, chọn nút Export IO List để vào hình báo cáo: GVHD: TS TRƯƠNG ĐÌNH CHÂU 67 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 Hình 4.14: Nút nhấn vào cửa sổ xuất file báo cáo Chọn logo khách hàng tương ứng mục Customer Logo Hình 4.15: Chỉnh sửa logo chủ đầu tư Sau nhấn Show report, kết ra: Hình 4.16: Kết sau tạo báo cáo 4.2.5 Trích xuất IO List Tại menu ribbon cửa sổ xuất liệu data, chọn nút Connect Data để chương trình kết nối với TIA Portal: GVHD: TS TRƯƠNG ĐÌNH CHÂU 68 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 Hình 4.17: Nút nhấn kết nối chương trình TIA Portal Chương trình đọc khối liệu bên project TIA Portal hiển thị Hình 4.18: Các đối tượng dự án TIA Portal Trên mục Export Tag list, nhấn chọn export danh sách tag dạng xlsx xml tùy người sử dụng lựa chọn Trong dự án này, chương trình xuất định dạng xlsx Hình 4.19: Nút chọn tính xuất danh sách tag Nếu đường dẫn tồn file trước đó, chương trình hỏi có ghi đè hay khơng Hình 4.20: Cửa sổ cảnh báo file tồn GVHD: TS TRƯƠNG ĐÌNH CHÂU 69 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 Hình 4.21: Kết sau xuất danh sách tag 4.2.6 Export file XML chứa nội dung thiết bị Trong cửa sổ Export XML, thực bước sau: GVHD: TS TRƯƠNG ĐÌNH CHÂU 70 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 Chọn kiểu Area muốn xuất Đối với kiểu FC, muốn Area hoạt động người dùng phải gọi chương trình Chọn thư mục lưu file XML sau xuất Nhấn nút Export để bắt đầu xuất liệu Kết file xml xuất ra: Hình 4.22: Kết file xml xuất 4.2.7 Chuyển liệu xml vào TIA để tạo thiết bị tự động Bước 1: Trong thư mục dự án, chọn mục program block để chương trình nhận biết thư mục Import file XML Hình 4.23: Chọn thư mục Program blocks GVHD: TS TRƯƠNG ĐÌNH CHÂU 71 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 Bước 2: Nhấn chọn nút Import, cửa sổ duyệt file XML Chọn file cần Import Hình 4.24: Chọn file XML muốn Import Bước 3: Sau Import, chương trình TIA Portal tạo đối tượng tương ứng file XML Hình 4.25: Các đối tượng sau tạo TIA Portal GVHD: TS TRƯƠNG ĐÌNH CHÂU 72 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 KẾT LUẬN ĐỀ TÀI 5.1 Đánh giá kết luận văn Dựa sở lý thuyết vững chắc, đề tài phát triển phần mềm đạt tính mong muốn Dự án áp dụng triển khai hiệu tiết kiệm thời gian Các bước từ khai báo thiết bị đến tạo đối tượng lập trình thực cách tự động quán với Chương trình xây dựng xoay quanh tiêu chuẩn chất lượng: Ổn định (Stability) Tin cậy (Reliability) Linh hoạt (Flexibility) Dễ dàng sử dụng (Easy to use) Có tính độc đáo: kết nghiên cứu đề tài mang lại tiến định lĩnh vực kỹ thuật điều khiển tự động hóa, khơng trùng lắp với kết quả, cơng trình cơng bố trước Mang tính ứng dụng thực tiễn: Kết thu đề tài vận dụng vào công việc thực tế Phát huy tối đa lợi ích mà đề tài mang lại Nghiên cứu chuyên sâu tiêu chuẩn chung mà công bố chấp nhận rộng rãi Nhằm tạo nên tính tương thích cao áp dụng đề tài vào thực tế 5.2 Hướng nghiên cứu phát triển Với hỗ trợ mạnh mẽ thư viện TIA Openness, đề tài xây dựng giao diện chỉnh sửa nội dung chương trình trực tiếp phần mềm C# Điều giúp hệ thống linh động với khả tùy biến cao Khi hãng tự động (Schneider, ABB, Omron…) bắt đầu tung thư viện tương tự TIA Openness, phần mềm BKSI cần tương thích với tất phần mềm GVHD: TS TRƯƠNG ĐÌNH CHÂU 73 Luận văn thạc sĩ HVTH: NGUYỄN TRỌNG NHÂN - 1670788 12 2018 hãng Điều làm tăng mạnh mẽ khả tái sử dụng phần mềm BKSI mà không phụ thuộc vào hãng mà hệ thống sử dụng TIA Openness mở cánh cửa liên kết phần mềm lập trình PLC với phần mềm lập trình cấp cao Vì cần tận dụng tối đa liên kết thông qua đưa giải thuật điều khiển tiên tiến vào điều khiển PLC, điều mà lập trình PLC truyền thống chưa (hoặc khó) làm TIA Openness Fuzzy, Neural BKSI TIA PORTAL Hình 5.1: Hướng phát triển tích hợp điều khiển thơng minh Ngồi ra, nhằm nắm bắt xu hướng công nghệ 4.0, phần mềm BKSI cần phát triển thêm tính hoạt động từ xa, tích hợp vào hệ thống thơng qua địa IP Ví dụ kỹ sư Việt Nam khai báo IO lập trình thiết bị cho dự án có server đặt Mỹ INTERNET BKSI TIA PORTAL Hình 5.2: Hướng phát triển hoạt động từ xa qua đám mây GVHD: TS TRƯƠNG ĐÌNH CHÂU 74 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 TÀI LIỆU THAM KHẢO Tài liệu nước [1] Nguyễn Ngọc Bình Phương Thái Thanh Phong, “Các giải pháp lập trình C#”, NXB Giao thơng vận tải , 2014 Tài liệu nước [1] M Bani Younis, G Frey, “Visualization of PLC Programs using XML”, Juniorprofessorship Agentenbased Automation, 2014 [2] Siemens Support, TIA Openness Getting Started And Demo, 2018 [3] Automation ML, https://www.automationml.org [4] Miroslav Hanák; “Advanced PLC programming methods”, Faculty of Electrical Engineering Department of Cybernetics, 2017 [5] Elisabet Estévez and Marga Marcos,“ IEC 61131-3 code generation using XML technologies”, 2014 GVHD: TS TRƯƠNG ĐÌNH CHÂU 75 Luận văn thạc sĩ HVTH: NGUYỄN TRỌNG NHÂN - 1670788 12 2018 PHỤ LỤC 7.1 Code tạo chỉnh sửa Area if (!new_flag) { //Edit if (oldname != null) { strInsert = string.Format("UPDATE tbl_IOList SET Area = '{0}' WHERE Area ='{1}'", tb_AreaName.Text, oldname); } sqlite.SendCommand(strInsert); strInsert = string.Format("UPDATE tbl_DeviceList SET Name = '{0}' WHERE ID ='{1}'", tb_AreaName.Text, ID); treeView1.SelectedNode.Text = tb_AreaName.Text; } else //Add New { strInsert = string.Format("INSERT INTO tbl_DeviceList(ParentID, Name, Type, Qtt, Suffix) VALUES('{0}','{1}','{2}','{3}','{4}')", 0, tb_AreaName.Text, "", 1, ""); TreeNode node = treeView1.Nodes[0].Nodes.Add(tb_AreaName.Text); treeView1.SelectedNode = node; } sqlite.SendCommand(strInsert); treeView1.Nodes[0].Expand(); } else MessageBox.Show("Area is existing, please choose another name"); 7.2 Code tạo thiết bị Tùy vào kiểu thiết bị chọn, chương trình tạo mảng Buffer chứa thông tin tương ứng: case "Valve_Butterfly": { tbDeviceName.Text = "Valve_Butterfly"; lb_IN.Text = "(Min: 4)"; lb_OUT.Text = "(Min: 1)"; lb_Static.Text = "(Min: 5)"; min_IN = 4; min_OUT = 1; min_Static = 5; GVHD: TS TRƯƠNG ĐÌNH CHÂU 76 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 dt = "V2"; IN_temp.STT.Add(0); IN_temp.Name.Add("MAN_OPEN"); IN_temp.Type.Add("DI"); IN_temp.Address.Add(""); IN_temp.DefVal.Add("0"); IN_temp.Cmt.Add("Open Signal"); IN_temp.isLocked.Add("1"); IN_temp.STT.Add(1); IN_temp.Name.Add("MAN_CLOSE"); IN_temp.Type.Add("DI"); IN_temp.Address.Add(""); IN_temp.DefVal.Add("0"); IN_temp.Cmt.Add("Close Signal"); IN_temp.isLocked.Add("1"); OUT_temp.STT.Add(1000); OUT_temp.Name.Add("Q_Cmd"); OUT_temp.Type.Add("DO"); OUT_temp.Address.Add(""); OUT_temp.DefVal.Add("0"); OUT_temp.Cmt.Add("Open Command"); OUT_temp.isLocked.Add("1"); Static_temp.STT.Add(1); Static_temp.Name.Add("AUT_OPEN"); Static_temp.Type.Add("Bool"); Static_temp.Address.Add(""); Static_temp.DefVal.Add("0"); Static_temp.Cmt.Add("Open signal in Auto mode"); Static_temp.isLocked.Add("1"); Static_temp.STT.Add(2); Static_temp.Name.Add("AUT_CLOSE"); Static_temp.Type.Add("Bool"); Static_temp.Address.Add(""); Static_temp.DefVal.Add("0"); Static_temp.Cmt.Add("Close signal in Auto mode"); Static_temp.isLocked.Add("1"); pBThumb.Image = imageList1.Images[5]; break; } Sau đó, chương trình lưu mảng buffer vào SQLite if (rb_Multi.Checked) { name = tbDeviceName.Text + "_" + index; } if (!sqlite.kiemtratontai(name)) { string strInsert = string.Format("INSERT INTO tbl_DeviceList(ParentID, Name, Type, Qtt, Suffix) VALUES('{0}','{1}','{2}','{3}','{4}')", ParentID, name, dt, tb_from.Text, "0"); sqlite.SendCommand(strInsert); sqlite.closeConnection(); flag = ganmang(name); index++; } else { if (rb_Multi.Checked) index++; else { MessageBox.Show("Device is existing, please choose another name"); break; } } 7.3 Code tạo địa IO Row = dt.Select("Device='" + name_Device + "' AND IOType = 'DI'", "STTinDevice"); foreach(DataRow r in Row) GVHD: TS TRƯƠNG ĐÌNH CHÂU 77 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 { if (!(Boolean)r["AbsAddr"]) { string addr = "I" + indexByte_I + "." + indexbit_I; DataRow[] checkRow = assignedIOTags.Select("IOAddress ='" + addr + "'"); while (checkRow.Length > 0) { if (indexbit_I > 6) { indexByte_I++; indexbit_I = 0; } else { indexbit_I++; } addr = "I" + indexByte_I + "." + indexbit_I; checkRow = assignedIOTags.Select("IOAddress ='" + addr + "'"); } r["IOAddress"] = "I" + indexByte_I + "." + indexbit_I; if (indexbit_I > 6) { indexByte_I++; indexbit_I = 0; } else { indexbit_I++; } } } //DO signal addr = "Q" + indexByte_Q + "." + indexbit_Q; //AI signal addr = "IW" + indexAnalog_I; //AO signal addr = "QW" + indexAnalog_Q; 7.4 Code tạo Report 7.4.1 Code tạo IO List Report this.xrLabel2.DataBindings.Add("Text", null, "Area"); GroupHeader1.GroupFields.Add(new GroupField("Area")); this.Cell1.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Device")}); this.Cell2.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "IOName")}); GVHD: TS TRƯƠNG ĐÌNH CHÂU 78 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 this.Cell3.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "IOType")}); this.Cell4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "IOAddress")}); this.Cell5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Comment")}); this.DataSource = dt; GroupField sortField = new GroupField("Device"); sortField.SortOrder = XRColumnSortOrder.Ascending; this.Detail.SortFields.Add(sortField); sortField = new GroupField("IOAddress"); sortField.SortOrder = XRColumnSortOrder.Ascending; this.Detail.SortFields.Add(sortField); 7.4.2 Code tạo Device List Report string tableName = "tbl_DeviceList"; string str = string.Format("SELECT * FROM {0} WHERE ParentID > 0", tableName); dt = sqlite.getDataTable(tableName, str); foreach (DataRow r in dt.Rows) { str = "select * from tbl_DeviceList where ID = @Par"; int AreaID = Convert.ToInt32(r["ParentID"]); SQLiteDataReader reader = sqlite.Datareader(str, "@Par", AreaID ); while (reader.Read()) { string Area = reader.GetString(2); r["Area"] = Area; } string device = (string)(r["Name"]); DataRow[] Row = dIO.Select("IOType='DI' AND Device='"+device+"'"); r["DI"] = Row.Length.ToString(); Row = dIO.Select("IOType='DO' AND Device='" + device + "'"); r["DO"] = Row.Length.ToString(); Row = dIO.Select("IOType='AI' AND Device='" + device + "'"); r["AI"] = Row.Length.ToString(); Row = dIO.Select("IOType='AO' AND Device='" + device + "'"); r["AO"] = Row.Length.ToString();} GVHD: TS TRƯƠNG ĐÌNH CHÂU 79 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 7.5 Code tạo liệu Import vào TIA Portal 7.5.1 Code tạo file Tag List theo định dạng Xlsx // Khởi động chtr Excell COMExcel.Application exApp = new COMExcel.Application(); string[] objData = new string[10]; COMExcel.Workbook exBook = exApp.Workbooks.Add( COMExcel.XlWBATemplate.xlWBATWorksheet); // Lấy sheet 1, đặt tên PLC Tags COMExcel.Worksheet exSheet = (COMExcel.Worksheet)exBook.Worksheets[1]; exSheet.Activate(); exSheet.Name = "PLC Tags"; // Lấy ghi liệu COMExcel.Range r = (COMExcel.Range)exSheet.get_Range("A1", "J1"); objData = gan_IOdata("Name", "Path", "Data Type", "Logical Address","Comment", "Hmi Visible", "Hmi Accessible", "Hmi Writeable", "Typeobject ID", "Version ID"); r.Value2 = objData; string str = "select * from tbl_IOList ORDER BY Device, IOType, STTinDevice "; SQLiteDataReader reader = sqlite.Datareader(str, "@tentb", ""); int IndexRow = 2; while (reader.Read()) { string IOName = reader.GetString(11); string IOType = reader.GetString(3); string IOAddress = reader.GetString(5); string DeviceName = reader.GetString(6); string IOComment = reader.GetString(9); string DataType = ""; if (IOType == "DI" || IOType == "DO") { DataType = "Bool"; } else { DataType = "Word"; } r = (COMExcel.Range)exSheet.get_Range("A" + IndexRow, "J" + IndexRow); objData = gan_IOdata(IOName, "Tag Table", DataType, IOAddress, DeviceName + " - " + IOComment, "True", "True", "True", "", ""); r.Value2 = objData; IndexRow++; GVHD: TS TRƯƠNG ĐÌNH CHÂU 80 HVTH: NGUYỄN TRỌNG NHÂN - 1670788 Luận văn thạc sĩ 12 2018 } sqlite.closeConnection(); r.Columns.AutoFit(); // Save file exBook.SaveAs("D:\\Tagfile.xlsx", COMExcel.XlFileFormat.xlOpenXMLWorkbook, null, null, false, false, COMExcel.XlSaveAsAccessMode.xlExclusive, false, false, false, false, false); exBook.Close(false, false, false); exApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(exBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(exApp); 7.5.2 Code tạo file Tag List dạng XML int IN_index = 1; foreach (DataRow r in Row) { string IOType = (string)r["IOType"]; string IOAddress = (string)r["IOAddress"]; string Comment = (string)r["Comment"]; string fullname = (string)r["FullName"]; if ((IOType == "DI") || (IOType == "DO")) { table += Tagdata(IN_index, fullname,"Bool",IOAddress, Comment); } else { table += Tagdata(IN_index, fullname, "Word", IOAddress,Comment); } IN_index += 3; } table += @" "; return table; GVHD: TS TRƯƠNG ĐÌNH CHÂU 81 ... Phát triển c? ?ng c? ?? tích hợp BKSI dựa tảng C# Automation ML II NHIỆM VỤ VÀ NỘI DUNG: Chuyển đối tượng PLC thành chuẩn xml dựa Automation ML Tạo c? ?ng c? ?? tích hợp. .. PLC S7 1500 dịng PLC phát triển để thay cho PLC S7 400 Kích thư? ?c nhỏ gọn, CPU c? ? t? ?c độ tính tốn xử lý cao Đ? ?c biệt c? ? tích hợp tính motion control để điều khiển t? ?c độ, vị trí hỗ trọ cho encoder,... Electric nhà cung c? ??p giải pháp tự động hóa triển khai giao diện AutomationML với c? ?ng c? ?? ECAD sản phẩm thương mại Bên c? ??nh đó, để nắm bắt kịp xu thế, EPLAN kết hợp với Siemens cho mắt c? ?ng c? ?? chuyển