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

Xây dựng phần mềm giao diện người máy (hmi)

133 13 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 133
Dung lượng 0,95 MB

Nội dung

HOÀNG MẠNH THẮNG BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT HOÀNG MẠNH THẮNG * LUẬN VĂN THẠC SỸ KỸ THUẬT XÂY DỰNG PHẦN MỀM GIAO DIỆN NGƯỜI MÁY (HMI) * Luận văn thạc Sỹ kỹ thuật H NI - 2010 Hµ néi – 2010 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT HOÀNG MẠNH THẮNG XÂY DỰNG PHẦN MỀM GIAO DIỆN NGƯỜI MÁY (HMI) Chuyên ngành: Tự Động Hóa Mã số: 60.52.60 LUẬN VĂN THẠC SỸ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC TS Nguyễn Đức Khốt HÀ NỘI - 2010 -1- LỜI CAM ĐOAN Tơi xin cam đoan nghiên cứu luận văn cơng trình nghiên cứu riêng cá nhân hướng dẫn Tiến sỹ Nguyễn Đức Khoát Các số liệu tài liệu nêu luận văn trung thực, đảm bảo tính khách quan, khoa học Các tài liệu tham khảo có nguồn gốc xuất xứ rõ ràng Các luận điểm kết nghiên cứu chưa công bố cơng trình khác Hà Nội, ngày 15 tháng 11 năm 2010 Tác giả luận văn Hoàng Mạnh Thắng -2- MỤC LỤC LỜI CAM ĐOAN…………………………………………………………… MỤC LỤC…………………………………………………………………… DANH MỤC CÁC HÌNH VẼ……………………………………………… DANH MỤC CÁC BẢNG………………………………………………… DANH MỤC CÁC TỪ VIẾT TẮT………………………………………… MỞ ĐẦU…………………………………………………………………… Chương 1: TỔNG QUAN VỀ MẠNG TRUYỀN THƠNG S7-200, PHẦN MỀM PROTOOL…………………………………………………………… 1.1 Mạng truyền thơng S7-200……………………………………… 1.1.1 Các giao thức truyền thông……………………………………… 1.1.2 Các thành phần mạng truyền thông…………………………… 13 1.1.3 Các thiết bị khác………………………………………………… 16 1.1.4 Hiệu suất mạng……………………………………………… 20 1.2 Tổng quan phần mềm Protool………………………………… 22 1.2.1 Giới thiệu tổng quan phần mềm Protool/Pro………………… 22 1.2.2 Khái niệm Tag………………………………………………… 23 1.3 Nhận xét……………………………………………………………… 25 Chương 2: XÂY DỰNG PHẦN MỀM GIAO ĐIỆN NGƯỜI MÁY (HMI) 26 2.1 Giải pháp truyền thông………………………………………………… 26 2.2 Giao thức truyền thông chế độ freeport…………………………… 26 2.3 Xây dựng phần mềm giao diện người máy (HMI)…………………… 30 2.3.1 Mơ hình truyền nhận liệu……………………………………… 30 2.3.2 Sơ đồ thuật toán điều khiển PLC………………………………… 30 2.3.3 Phần mềm giao diện người máy (HMI)………………………… 31 2.3.4 Mô tả chức truyền thông phần mềm (HMI)…………… 32 2.4 Hướng dẫn sử dụng phần mềm giao diện người máy (HMI)………… 40 2.5 Nhận xét……………………………………………………………… 50 Chương 3: ỨNG DỤNG PHẦN MỀM (HMI) ĐÃ XÂY DỰNG VÀ PLC -3- S7-200 GIÁM SÁT ĐIỀU KHIỂN TUYẾN BĂNG TẢI…………………… 51 3.1 Quy trình cơng nghệ…………………………………………………… 51 3.2 Lưu đồ thuật toán điều khiển PLC…………………………………… 52 3.3 Giao diện điều khiển giám sát……………………………………… 54 3.4 Chương trình điều khiển PLC………………………………………… 57 3.5 Nhận xét……………………………………………………………… 60 KẾT LUẬN………………………………………………………………… 61 DANH MỤC CƠNG TRÌNH CỦA TÁC GIẢ……………………………… 62 TÀI LIỆU THAM KHẢO…………………………………………………… 63 PHỤ LỤC A: TỔNG QUAN VỀ PHẦN MỀM VISUAL BASIC 6.0 VÀ CÁC LỆNH SỬ DỤNG TRONG PHẦN MỀM MICROWIN V3.2……… 64 PHỤ LỤC B: CODE CHƯƠNG TRÌNH ĐIỀU KHIỂN PHẦN MỀM (HMI) VÀ CODE SỬ DỤNG ĐIỀU KHIỂN PLC S7-200………………… 85 -4- DANH MỤC CÁC HÌNH VẼ Trang Hình 1.1 Cổng truyền thơng S7-200……………………………………… 14 Hình 1.2 Connector kết nối mạng………………………………………… 15 Hình 1.3 Mạng sử dụng repeater…………………………………………… 16 Hình 1.4 Modem với chuyển đổi null modem………………………… 20 Hình 2.1 Mô tả giao thức truyền thông chế độ freeport 10 bit 11 bit…… 27 Hình 2.2 Bộ đệm truyền liệu…………………………………………… 27 Hình 2.3 Bộ đệm nhận liệu……………………………………………… 28 Hình 2.4 Bộ đệm thơng điệp truyền liệu từ PC khơng có byte start CR… 28 Hình 2.5 Bộ đệm thông điệp truyền liệu từ PC có byte start CR……… 28 Hình 2.6 Bộ đệm thông điệp truyền liệu yêu cầu đọc trạng thái PLC… 28 Hình 2.7 Bộ đệm thơng điệp truyền liệu từ PLC……………………… 29 Hình 2.8 Mơ hình truyền nhận liệu……………………………………… 30 Hình 2.9 Lưu đồ thuật tốn điều khiển……………………………………… 31 Hình 2.10 Phần mềm giao diện người máy (HMI)………………………… 32 Hình 2.11 Cài đặt cổng COM……………………………………………… 41 Hình 2.12 Chọn khung truyền, khung nhận đặt xuống PLC…………… 43 Hình 2.14 Tạo Project mới…………………………………………… 44 Hình 2.15 Khi ấn nút khởi động…………………………………………… 45 Hình 2.16 Khi ấn nút dừng………………………………………………… 46 Hình 3.1 Sơ đồ phần tử tuyến băng tải đơn gián……………………… 52 Hình 3.2 Lưu đồ thuật tốn điều khiển chương trình……………………… 53 Hình 3.3 Giao diện điều khiển giám sát chương trình…………………… 54 Hình 3.4 Tạo Project mới……………………………………………… 54 Hình 3.5 Thêm form modul chương trình…………………… 57 Hình A.1 Sự bố trí chân giắc cắm RS-232 máy tính………………… 84 -5- DANH MỤC CÁC BẢNG Trang Bảng 1.1 Số lượng kết nối CPU S7-200……………………………… 11 Bảng 1.2 Các giao thức hỗ trợ bở S7-200………………………………… 12 Bảng 1.3 Các chân cổng truyền thông S7-200………………………… 14 Bảng 1.4 Tiêu chuẩn chung cáp mạng PROFIBUS…………………… 15 Bảng 1.5 Độ dài cáp lớn phân đoạn mạng PROFIBUS…… 16 Bảng 1.6 Vị trí cơng tắc chọn tốc độ truyền cáp PC/PPI…………………… 17 Bảng 1.7 Các chân cổng RS-232 cáp PC/PPI………………………… 18 Bảng 1.8 Thời gian quay vòng cáp PC/PPI…………………………… 18 Bảng 1.9 Các kiểu Tag………………………………………………… 24 Bảng 1.10 Kiểu liệu, địa chỉ, định dạng S7-200…………………… 24 Bảng 2.1 Các check truyền để ứng dụng cho thiết kế…………………… 46 Bảng 2.2 Các check nhận để ứng dụng cho thiết kế……………………… 48 Bảng 2.3 Các text truyền để ứng dụng cho thiết kế………………………… 50 Bảng 2.4 Các text nhận để ứng dụng cho thiết kế ………………………… 50 Bảng 3.1 Định nghĩa biến sử dụng chương trình………………… 57 Bảng A.1 Độ phân Timer……………………………………………… 71 Bảng A.2 Thông số TBL…………………………………………………… 73 Bảng A.3 Các byte điều khiển SMB30 SMB130……………………… 76 Bảng A.4 Bảng thông số sử dụng lệnh XMT RCV……… 77 Bảng A.5 Các byte điều khiển SMB86 - SMB94 SMB186 - SMB194… 80 Bảng A.6 Chức chân cổng RS-232…………………………… 84 -6- DANH MỤC CÁC TỪ VIẾT TẮT Ký hiệu Giải thích PLC Program Logic Controler HMI Human Machine Interface VB6.0 Visual Basic 6.0 PPI Point – to – Point Interface MPI Multipoint Interface OSI Open System Interconnection CPU Center Processer Unit SCADA Supervisory Control And Data Acquisition PROFUBUS Process Field Bus MSB Most Significant Bit LSB Least Significant Bit -7- MỞ ĐẦU Tính cấp thiết đề tài Ngày nay, hầu hết hệ thống điều khiển giám sát SCADA dựa phần mềm hãng sản xuất lớn Siemens, Omron, Schneider … Trong phải kể đến phần mềm thiết kế giao diện Protool hãng Siemens xây dựng Hầu hết phần mềm tài liệu hướng dẫn viết tiếng Anh, tiếng Đức, tiếng Pháp, tiếng Bồ Đào Nha Nên việc sử dụng chúng gây khơng khó khăn cho người sử dụng điều dẫn đến nhược điểm sau: + Mất nhiều thời gian thiết kế giao diện + Giao diện ngoại ngữ gây khó khăn cho người vận hành + Giá thành cao Mục đích đề tài Với tồn nên đề tài: “Xây dựng phần mềm giao diện người máy (HMI)” Được thực nhằm mục đích: + Thay phần phần mềm Protool hãng Siemens + Giao diện tiếng việt dễ dàng thiết kế giao diện điều khiển giám sát hoạt động PLC S7-200, S7-300, S7-400 + Hạ giá thành tích hợp hệ thống Đối tượng phạm vi nghiên cứu Phần mềm Simatic S7 (Microwin 3.2), giao thức truyền thông Freeport, phần mềm giao diện Protool/CS, phần mềm Visual basic 6.0 Xây dựng phần mềm giao diện người máy (HMI) giao tiếp với máy tính Nội dung nghiên cứu + Nghiên cứu giao thức truyền thông PC – PLC S7-200, S7-300, S7-400 + Xây dựng phần mềm giao diện người máy VB6.0 kết nối PLC – S7200, S7-300, S7-400 Phương pháp nghiên cứu -8- Nghiên cứu phần mềm giao diện Protool/CS để lập quy trình vận hành phần mềm này, từ xây dựng lưu đồ thuật tốn Nghiên cứu phần mền VB6.0 giao thức truyền thông để xây dựng phần mềm giao diện người máy (HMI) Ý nghĩa khoa học thực tiễn Xây dựng phần mềm giao diện người máy HMI giúp ta có thêm giải pháp điều khiển tự động giám sát hệ thống với giao diện tiếng Việt thân thiện, dễ sử dụng đặc biệt giảm giá thành thực hệ thống Cấu trúc luận văn Luận văn trình bày 131 trang, 25 hình 21 bảng gồm phần sau: Chương 1: Tổng quan mạng truyền thông S7-200, phần mềm Protool Chương 2: Xây dựng phần mềm giao diện người máy (HMI) Chương 3: Ứng dụng phần mềm (HMI) thiết kế vào giám sát điều khiển cho hệ thống băng tải Phụ lục A: Tổng quan phần mềm Visual Basic 6.0 lệnh sử dụng phần mềm Microwin V3.2 Phụ lục B: Code chương trình điều khiển phần mềm (HMI) Code sử dụng điều khiển PLC S7-200 Lời cảm ơn Tôi xin chân thành cảm ơn Thầy Cơ mơn Tự động hóa Xí nghiệp Mỏ Dầu khí - Đại học Mỏ - Địa chất tạo điều kiện giúp đỡ đóng góp ý kiến q báu giúp tơi hồn thiện luận văn Đặc biệt tơi xin bày tỏ kính trọng lòng biết ơn sâu sắc tới Tiến sỹ Nguyễn Đức Khốt, người tận tình giúp đỡ, hướng dẫn tơi hồn thành luận văn Tác giả Hồng Mạnh Thắng - 117 - If Combo1(8).Text = "MB0" Me.Text1(8).Text = M0 End If If Combo1(8).Text = "MB1" Me.Text1(8).Text = M1 End If If Combo1(8).Text = "MB2" Me.Text1(8).Text = M2 End If If Combo1(8).Text = "MB3" Me.Text1(8).Text = M3 End If Then Then Then Then Else If Combo2(8).Text = "Decimal" strReceive = Mid(strData, 18, MB0 = Val("&H" & strReceive) strReceive = Mid(strData, 20, MB1 = Val("&H" & strReceive) strReceive = Mid(strData, 22, MB2 = Val("&H" & strReceive) strReceive = Mid(strData, 24, MB3 = Val("&H" & strReceive) Then 2) 2) 2) 2) strReceive = Mid(strData, 18, 4) MW0 = Val("&H" & strReceive) strReceive = Mid(strData, 22, 4) MW2 = Val("&H" & strReceive) strReceive = Mid(strData, 18, 8) MD0 = Val("&H" & strReceive) If Combo1(8).Text = "MB3" Me.Text1(8).Text = MB3 End If If Combo1(8).Text = "MB2" Me.Text1(8).Text = MB2 End If If Combo1(8).Text = "MB1" Me.Text1(8).Text = MB1 End If If Combo1(8).Text = "MB0" Me.Text1(8).Text = MB0 End If If Combo1(8).Text = "MW0" Me.Text1(8).Text = MW0 End If If Combo1(8).Text = "MW2" Me.Text1(8).Text = MW2 End If If Combo1(8).Text = "MD0" Me.Text1(8).Text = MD0 End If Then Then Then Then Then Then Then - 118 - End If End If If Combo2(9).Text = "Binary" Then strReceive = Mid(strData, 26, 2) V0 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 28, 2) V1 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 30, 2) V2 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 32, 2) V3 = ToBin(Val("&H" & strReceive)) If Combo1(9).Text = "VW0" Then Me.Text1(9).Text = V1 & V0 End If If Combo1(9).Text = "VW2" Then Me.Text1(9).Text = V3 & V2 End If If Combo1(9).Text = "VB0" Me.Text1(9).Text = V0 End If If Combo1(9).Text = "VB1" Me.Text1(9).Text = V1 End If If Combo1(9).Text = "VB2" Me.Text1(9).Text = V2 End If If Combo1(9).Text = "VB3" Me.Text1(9).Text = V3 End If Then Then Then Then Else If Combo2(9).Text = "Decimal" strReceive = Mid(strData, 26, VB0 = Val("&H" & strReceive) strReceive = Mid(strData, 28, VB1 = Val("&H" & strReceive) strReceive = Mid(strData, 30, VB2 = Val("&H" & strReceive) strReceive = Mid(strData, 32, VB3 = Val("&H" & strReceive) Then 2) 2) 2) 2) strReceive = Mid(strData, 26, 4) VW0 = Val("&H" & strReceive) strReceive = Mid(strData, 30, 4) VW2 = Val("&H" & strReceive) strReceive = Mid(strData, 26, 8) VD0 = Val("&H" & strReceive) - 119 - If Combo1(9).Text = "VB3" Me.Text1(9).Text = VB3 End If If Combo1(9).Text = "VB2" Me.Text1(9).Text = VB2 End If If Combo1(9).Text = "VB1" Me.Text1(9).Text = VB1 End If If Combo1(9).Text = "VB0" Me.Text1(9).Text = VB0 End If If Combo1(9).Text = "VW0" Me.Text1(9).Text = VW0 End If If Combo1(9).Text = "VW2" Me.Text1(9).Text = VW2 End If If Combo1(9).Text = "VD0" Me.Text1(9).Text = VD0 End If Then Then Then Then Then Then Then End If End If 'Trang thai Timer va Counter: If Combo4(4).Text = "T" Then strReceive = Mid(strData, 34, 8) Me.Text1(10).Text = Val("&H" & strReceive) End If If Combo4(5).Text = "C" Then strReceive = Mid(strData, 42, 8) Me.Text1(11).Text = Val("&H" & strReceive) End If 'Trang thai I If Combo2(6).Text = "Bits" Then strReceive = Mid(strData, 2, 2) K0 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 4, 2) K1 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 6, 2) K2 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 8, 2) K3 = ToBin(Val("&H" & strReceive)) If Combo1(6).Text Check1(1).Value = Check2(1).Value = Check3(1).Value = = "IB0" Mid(K0, Mid(K0, Mid(K0, Then 1, 1) 2, 1) 3, 1) - 120 - Check4(1).Value Check5(1).Value Check6(1).Value Check7(1).Value Check8(1).Value End If = = = = = Mid(K0, Mid(K0, Mid(K0, Mid(K0, Mid(K0, 4, 5, 6, 7, 8, 1) 1) 1) 1) 1) If Combo1(6).Text = "IB1" Then Check1(15).Value = Mid(K1, 1, 1) Check2(15).Value = Mid(K1, 2, 1) Check3(15).Value = Mid(K1, 3, 1) Check4(15).Value = Mid(K1, 4, 1) Check5(15).Value = Mid(K1, 5, 1) Check6(15).Value = Mid(K1, 6, 1) Check7(15).Value = Mid(K1, 7, 1) Check8(15).Value = Mid(K1, 8, 1) End If If Combo1(6).Text = "IB2" Then Check1(21).Value = Mid(K2, 1, 1) Check2(21).Value = Mid(K2, 2, 1) Check3(21).Value = Mid(K2, 3, 1) Check4(21).Value = Mid(K2, 4, 1) Check5(21).Value = Mid(K2, 5, 1) Check6(21).Value = Mid(K2, 6, 1) Check7(21).Value = Mid(K2, 7, 1) Check8(21).Value = Mid(K2, 8, 1) End If If Combo1(6).Text = "IB3" Then Check1(22).Value = Mid(K3, 1, 1) Check2(22).Value = Mid(K3, 2, 1) Check3(22).Value = Mid(K3, 3, 1) Check4(22).Value = Mid(K3, 4, 1) Check5(22).Value = Mid(K3, 5, 1) Check6(22).Value = Mid(K3, 6, 1) Check7(22).Value = Mid(K3, 7, 1) Check8(22).Value = Mid(K3, 8, 1) End If End If 'Trang thai Q If Combo2(7).Text = "Bits" Then strReceive = Mid(strData, 10, 2) Q3 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 12, 2) Q2 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 14, 2) Q1 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 16, 2) Q0 = ToBin(Val("&H" & strReceive)) - 121 - If Combo1(7).Text Check1(7).Value = Check2(7).Value = Check3(7).Value = Check4(7).Value = Check5(7).Value = Check6(7).Value = Check7(7).Value = Check8(7).Value = End If = "QB0" Mid(Q3, Mid(Q3, Mid(Q3, Mid(Q3, Mid(Q3, Mid(Q3, Mid(Q3, Mid(Q3, Then 1, 1) 2, 1) 3, 1) 4, 1) 5, 1) 6, 1) 7, 1) 8, 1) If Combo1(7).Text = "QB1" Then Check1(23).Value = Mid(Q2, 1, 1) Check2(23).Value = Mid(Q2, 2, 1) Check3(23).Value = Mid(Q2, 3, 1) Check4(23).Value = Mid(Q2, 4, 1) Check5(23).Value = Mid(Q2, 5, 1) Check6(23).Value = Mid(Q2, 6, 1) Check7(23).Value = Mid(Q2, 7, 1) Check8(23).Value = Mid(Q2, 8, 1) End If If Combo1(7).Text = "QB2" Then Check1(24).Value = Mid(Q1, 1, 1) Check2(24).Value = Mid(Q1, 2, 1) Check3(24).Value = Mid(Q1, 3, 1) Check4(24).Value = Mid(Q1, 4, 1) Check5(24).Value = Mid(Q1, 5, 1) Check6(24).Value = Mid(Q1, 6, 1) Check7(24).Value = Mid(Q1, 7, 1) Check8(24).Value = Mid(Q1, 8, 1) End If If Combo1(7).Text = "QB3" Then Check1(25).Value = Mid(Q0, 1, 1) Check2(25).Value = Mid(Q0, 2, 1) Check3(25).Value = Mid(Q0, 3, 1) Check4(25).Value = Mid(Q0, 4, 1) Check5(25).Value = Mid(Q0, 5, 1) Check6(25).Value = Mid(Q0, 6, 1) Check7(25).Value = Mid(Q0, 7, 1) Check8(25).Value = Mid(Q0, 8, 1) End If End If 'Trang thai M If Combo2(8).Text = "Bits" Then strReceive = Mid(strData, 18, 2) M3 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 20, 2) M2 = ToBin(Val("&H" & strReceive)) - 122 - strReceive = Mid(strData, 22, 2) M1 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 24, 2) M0 = ToBin(Val("&H" & strReceive)) If Combo1(8).Text Check1(9).Value = Check2(9).Value = Check3(9).Value = Check4(9).Value = Check5(9).Value = Check6(9).Value = Check7(9).Value = Check8(9).Value = End If = "MB0" Mid(M3, Mid(M3, Mid(M3, Mid(M3, Mid(M3, Mid(M3, Mid(M3, Mid(M3, Then 1, 1) 2, 1) 3, 1) 4, 1) 5, 1) 6, 1) 7, 1) 8, 1) If Combo1(8).Text = "MB1" Then Check1(26).Value = Mid(M2, 1, 1) Check2(26).Value = Mid(M2, 2, 1) Check3(26).Value = Mid(M2, 3, 1) Check4(26).Value = Mid(M2, 4, 1) Check5(26).Value = Mid(M2, 5, 1) Check6(26).Value = Mid(M2, 6, 1) Check7(26).Value = Mid(M2, 7, 1) Check8(26).Value = Mid(M2, 8, 1) End If If Combo1(8).Text = "MB2" Then Check1(27).Value = Mid(M1, 1, 1) Check2(27).Value = Mid(M1, 2, 1) Check3(27).Value = Mid(M1, 3, 1) Check4(27).Value = Mid(M1, 4, 1) Check5(27).Value = Mid(M1, 5, 1) Check6(27).Value = Mid(M1, 6, 1) Check7(27).Value = Mid(M1, 7, 1) Check8(27).Value = Mid(M1, 8, 1) End If If Combo1(8).Text = "MB3" Then Check1(28).Value = Mid(M0, 1, 1) Check2(28).Value = Mid(M0, 2, 1) Check3(28).Value = Mid(M0, 3, 1) Check4(28).Value = Mid(M0, 4, 1) Check5(28).Value = Mid(M0, 5, 1) Check6(28).Value = Mid(M0, 6, 1) Check7(28).Value = Mid(M0, 7, 1) Check8(28).Value = Mid(M0, 8, 1) End If End If 'Trang thai V If Combo2(9).Text = "Bits" Then - 123 - strReceive = Mid(strData, 26, 2) V3 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 28, 2) V2 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 30, 2) V1 = ToBin(Val("&H" & strReceive)) strReceive = Mid(strData, 32, 2) V0 = ToBin(Val("&H" & strReceive)) If Combo1(9).Text Check1(5).Value = Check2(5).Value = Check3(5).Value = Check4(5).Value = Check5(5).Value = Check6(5).Value = Check7(5).Value = Check8(5).Value = End If = "VB0" Mid(V3, Mid(V3, Mid(V3, Mid(V3, Mid(V3, Mid(V3, Mid(V3, Mid(V3, Then 1, 1) 2, 1) 3, 1) 4, 1) 5, 1) 6, 1) 7, 1) 8, 1) If Combo1(9).Text = "VB1" Then Check1(29).Value = Mid(V2, 1, 1) Check2(29).Value = Mid(V2, 2, 1) Check3(29).Value = Mid(V2, 3, 1) Check4(29).Value = Mid(V2, 4, 1) Check5(29).Value = Mid(V2, 5, 1) Check6(29).Value = Mid(V2, 6, 1) Check7(29).Value = Mid(V2, 7, 1) Check8(29).Value = Mid(V2, 8, 1) End If If Combo1(9).Text = "VB2" Then Check1(30).Value = Mid(V1, 1, 1) Check2(30).Value = Mid(V1, 2, 1) Check3(30).Value = Mid(V1, 3, 1) Check4(30).Value = Mid(V1, 4, 1) Check5(30).Value = Mid(V1, 5, 1) Check6(30).Value = Mid(V1, 6, 1) Check7(30).Value = Mid(V1, 7, 1) Check8(30).Value = Mid(V1, 8, 1) End If If Combo1(9).Text = "VB3" Then Check1(31).Value = Mid(V0, 1, 1) Check2(31).Value = Mid(V0, 2, 1) Check3(31).Value = Mid(V0, 3, 1) Check4(31).Value = Mid(V0, 4, 1) Check5(31).Value = Mid(V0, 5, 1) Check6(31).Value = Mid(V0, 6, 1) Check7(31).Value = Mid(V0, 7, 1) Check8(31).Value = Mid(V0, 8, 1) End If End If - 124 - End Sub Private Sub UpdateStatus() '========================================================== 'Mo ta: thu tuc cap nhan trang thai StatusBar '========================================================== Dim myDate myDate = Date If Me.comPLC.PortOpen Then Me.StatusBar1.Panels(1).Text = "Connected" Me.mnuConnect.Caption = "Dis&connect" Me.cmdSetPLC.Enabled = True Me.cmdReadPLC.Enabled = True Else Me.StatusBar1.Panels(1).Text = "Disconnected" Me.mnuConnect.Caption = "&Connect" Me.cmdSetPLC.Enabled = False Me.cmdReadPLC.Enabled = False End If Me.StatusBar1.Panels(2).Text = "COM" & Me.comPLC.CommPort Me.StatusBar1.Panels(3).Text = Me.comPLC.Settings Me.StatusBar1.Panels(5).Text = "Date:" & myDate End Sub Private Function ValidatePort() As Boolean '========================================================== 'Mo ta: thu tuc mo cong COM '========================================================== Dim I As Integer On Error Resume Next ValidatePort = False With Me.comPLC For I = To Step -1 CommPort = I Err.Clear PortOpen = True If (Err.Number 0) Then mnuCom(I).Enabled = False Else ValidatePort = True PortOpen = False End If Next I End With End Function Private Sub SetPort(NewSettings As String) '========================================================== 'Mo ta: thu tuc dat cong COM '========================================================== Dim CurPortOpen As Boolean Dim OldIndex As Integer - 125 - Dim Dim Dim Dim Dim Dim OldLength As Integer NewIndex As Integer NewLength As Integer I As Integer Settings(0 To 3) As String Temp As String With comPLC CurPortOpen = PortOpen If PortOpen Then PortOpen = False End If OldIndex = NewIndex = For I = To NewLength = InStr(NewIndex, NewSettings, ",") If (NewLength = 0) Then NewLength = NewIndex + Len(Mid(NewSettings, NewIndex)) End If OldLength = InStr(OldIndex, Settings, ",") If (OldLength = 0) Then OldLength = OldIndex + Len(Mid(.Settings, OldIndex)) End If If (NewLength = NewIndex) Then Settings(I) = Mid(.Settings, OldIndex, OldLength - OldIndex) Else Settings(I) = Mid(NewSettings, NewIndex, NewLength - NewIndex) End If OldIndex = OldLength + NewIndex = NewLength + Next I Settings = Settings(0) & "," & Settings(1) & "," & _ Settings(2) & "," & Settings(3) If CurPortOpen Then PortOpen = True End If End With UpdateStatus End Sub Private Sub comPLC_OnComm() '========================================================== 'Mo ta: thu tuc su kien OnComm '========================================================== Dim EventMsg As String Select Case Me.comPLC.CommEvent 'events Case comEvReceive Dim Buffer As Variant - 126 - Buffer = comPLC.Input If blnBinaryMode Then ScanBinaryData Buffer Else ScanTextData Buffer End If EventMsg = "Receive event" Case comEvSend EventMsg = "Transmit event" Case comEvCTS EventMsg = "Change in CTS Detected" Case comEvDSR EventMsg = "Change in DSR Detected" Case comEvCD EventMsg = "Change in CD Detected" Case comEvRing EventMsg = "The Phone is Ringing" Case comEvEOF EventMsg = "End of File Detected" ' Errors Case comBreak EventMsg = "Err: Break Received" Case comCDTO EventMsg = "Err: Carrier Detect Timeout" Case comCTSTO EventMsg = "Err: CTS Timeout" Case comDCB EventMsg = "Err: Error retrieving DCB" Case comDSRTO EventMsg = "Err: DSR Timeout" Case comFrame EventMsg = "Err: Framing Error" Case comOverrun EventMsg = "Err: Overrun Error" Case comRxOver EventMsg = "Err: Receive Buffer Overflow" Case comRxParity EventMsg = "Err: Parity Error" Case comTxFull EventMsg = "Err: Transmit Buffer Full" Case Else EventMsg = "Err: Unknown error or event" End Select End Sub Private Sub mnuTB_Click(Index As Integer) '========================================================== 'Mo ta: thu tuc chon kieu Text or Binary '========================================================== Dim tb As Integer For tb = To If (tb = Index) Then Me.mnuTB(tb).Checked = True - 127 - Else Me.mnuTB(tb).Checked = False End If Next tb End Sub Private Sub Text1_GotFocus(Index As Integer) '========================================================== 'Mo ta: thu tuc co tro chi vao text '========================================================== Dim I As Integer For I = To 12 Me.Text1(I).BackColor = vbYellow Next End Sub Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) '========================================================== 'Mo ta: thu tuc yeu cau cac text phai la so khong dau '========================================================== If (IsNumeric(Chr(KeyAscii)) True) Then KeyAscii = End Sub Private Sub Text1_LostFocus(Index As Integer) '========================================================== 'Mo ta: thu tuc khong co tro chi vao text '========================================================== Dim I As Integer For I = To Me.Text1(I).BackColor = vbGreen Next For I = To 12 Me.Text1(I).BackColor = vbRed Next End Sub Private Sub trmComm_Timer() '========================================================== 'Mo ta: thu tuc yeu cau doc du lieu lien tuc tu PLC '========================================================== Dim X() As Byte Dim strSend As String If Me.mnulf(0).Checked Then strSend = vbLf & "B" & vbCr Else strSend = "B" & vbCr End If X = StrConv(strSend, vbFromUnicode) Me.comPLC.Output = X End Sub Private Sub trmHethong_Timer() - 128 - '========================================================== 'Mo ta: thu tuc cap nhat thoi gian cho he thong '========================================================== Me.StatusBar1.Panels(4).Text = "Time:" & Time End Sub Phần Code cho modules '========================================================== 'Mo ta: Phan khai bao cac hang so va bien su dung chung '========================================================== Option Explicit Dim blnBinaryMode As Boolean Public Decimal1 As Long Public glngPortNumber As Long Public gstrSettings As String Public gblnUseStartChar As Boolean Public glngUpdateInterval As Long '========================================================== 'Mo ta: Thu tuc cho form giua man hinh '========================================================== Public Sub CenterForm(ByVal frm As Form) frm.Top = (Screen.Height - frm.Height) / 2.5 frm.Left = (Screen.Width - frm.Width) / End Sub '========================================================== 'Mo ta: Chuong trinh chuyen doi Binary to Decimal '========================================================== Function Bin2Dec(nBin As String) As Variant Dim I As Long Dim lLength As Long lLength = Len(nBin) For I = To lLength Bin2Dec = Bin2Dec + IIf(Mid(nBin, lLength - I + 1, 1) = 1, Pow(I - 1), 0) Next I Decimal1 = Bin2Dec End Function Function Pow(op As Long) As Variant Dim I As Long Dim acc As Variant If op = Then Pow = CDec(1) Exit Function End If acc = CDec(2) For I = To op - acc = acc * Next Pow = acc End Function - 129 - B.2 Code chương trình điều khiển phần mềm Chương trình (Main): Khai báo Port, xóa biến đệm truyền thông, khởi động lệnh nhận liệu: Network1 LD SM0.1 // Ln on vịng qt FILL + 0, VW0, 250 // Xóa biến từ VW0 đến VW250 MOVB 16#09, SMB30 // Khởi động chế độ Freeport MOVB 16#E0, SMB87 // Byte điều khiển thông điệp MOVB 16#0A, SMB88 // Byte kí tự bắt đầu thơng điệp MOVB 16#0D, SMB89 // Byte kí tự kết thúc thơng điệp MOVB 60, SMB94 // Số kí tự lớn nhận ATCH Int_Received, 23 // Truyền thơng mảng liệu ATCH Int_Transmited, // Khi kí tự cuối đệm truyền ngắt số phát ENI // Cho phép ngắt RCV VB150, // Khởi động lệnh nhận cho lệnh nhận liệu PLC Network2 // Thực tốn cơng nghệ …………………… Chương trình xử lý ngắt nhận liệu (int_Received): Network1 Nhận tín hiệu truyền từ PC LDB= SMB86, 16#20 // Nếu SMB86 20 (nhận kí tự kết thúc) AB= VB152, 'A' // Và VB152 "A" A byte thông điệp ATH VB153, VB0, 40 MOVB VB3, IB0 MOVB VB2, IB1 // Chuyển ASCII thành HEXA // Ghi giá trị vào ID0 - 130 - MOVB VB1, IB2 MOVB VB0, IB3 MOVB VB7, QB0 // Ghi giá trị vào QD0 MOVB VB6, QB1 MOVB VB5, QB2 MOVB VB4, QB3 MOVB VB11, MB0 // Ghi giá trị vào MD0 MOVB VB10, MB1 MOVB VB9, MB2 MOVB VB8, MB3 MOVB VB15, VB0 // Ghi giá trị vào VD0 MOVB VB14, VB1 MOVB VB13, VB2 MOVB VB12, VB3 Network2 Nhận yêu cầu gửi gửi liệu lên PC LDB= SMB86, 16#20 // Nhận ký tự kết thúc AB= VB152, 'B' // Và VB152 = B HTA IB0, VB101, // Chuyển IB0 từ Hexa thành Ascii HTA QB0, VB109, HTA MB0, VB117, HTA VB0, VB125, MOVW T37, VW30 // Chuyển T37 vào vùng nhớ VW30 HTA // Chuyển VB30 từ Hexa thành Ascii VB30, VB133, MOVW C30, VW40 HTA VB40, VB141, MOVB 16#0D, VB151 MOVB 'B', VB100 MOVB 52, VB99 Network3 Ngắt thời gian để nhận liệu - 131 - LDB= SMB86, 16#20 MOVB 5, SMB34 ATCH Int_Timer, 10 NOT RCV VB150, Chương trình ngắt thời gian (int_Timer): Network1: Sau chờ 5ms gửi thơng điệp LD SM0.0 COM DTCH 10 XMT VB99, Chương trình ngắt truyền liệu (int_Transmited): Netword1: Sau truyền xong liệu bắt LD SM0.0 đầu lệnh nhận thông điệp khác RCV VB150, ... 2.3.3 Phần mềm giao diện người máy (HMI) Phần mềm giao diện người máy (HMI) thiết kế form hình 2.10 Mã chương trình tham khảo phần Phụ lục B.1 Chương trình phần mềm giao diện người máy (HMI). .. phần mềm này, từ xây dựng lưu đồ thuật toán Nghiên cứu phần mền VB6.0 giao thức truyền thông để xây dựng phần mềm giao diện người máy (HMI) Ý nghĩa khoa học thực tiễn Xây dựng phần mềm giao diện. .. cứu Phần mềm Simatic S7 (Microwin 3.2), giao thức truyền thông Freeport, phần mềm giao diện Protool/CS, phần mềm Visual basic 6.0 Xây dựng phần mềm giao diện người máy (HMI) giao tiếp với máy

Ngày đăng: 29/05/2021, 23:09

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w