技術(shù)頻道

      Vb6.0 實(shí)現(xiàn)計(jì)算機(jī)與三菱PLC的通信

      摘要:本文介紹了VB進(jìn)行串口通信的各種基本方式和三菱可編程控制器之間的通信的程序設(shè)計(jì),重點(diǎn)介紹了利用MSCOMM.OCX進(jìn)行串行通信的設(shè)計(jì)方法。

      關(guān)鍵詞:串行通信, PLC Visual Basic 6.0

      Abstract: Describes all kinds of basic serial port communication methods using Visual Basic 6.0 and design of free port communication program of MITSUBISH PLC, furthermore set focus on the designing method of serial port communication through dynamic linked library in Visual Basic 6.0

      Key Words: Serial port communication, PLC, Visual Basic 6.0

      一、引言

      在工業(yè)生產(chǎn)中,人們常常面臨著數(shù)據(jù)采集與管理。作為工廠自動(dòng)化的三大支柱可編程控制器PLCProgrammable Logic Controller),由于其安全可靠,廣泛的用于數(shù)據(jù)采集與控制。生產(chǎn)過程中,要監(jiān)視PLC內(nèi)部的數(shù)據(jù)與運(yùn)行狀況,選用市場上的人機(jī)界面或組態(tài)軟件,雖然功能豐富,但大都價(jià)格昂貴,在一些中小規(guī)模的生產(chǎn)場合,人們希望能自己用高級語言開發(fā)一個(gè)簡易實(shí)用的通信程序。微軟公司推出的Visual Basic 6.0,開發(fā)串行通信程序時(shí),有兩種方法,一種是用Windows API函數(shù),另一種是用VB支持的通信控件MSCOMM.OCX。利用Windows API函數(shù)是通過調(diào)用讀寫等函數(shù)來操作串口。兩種比較,使用MSCOMM.OCX控件編程方便,具有更完善的發(fā)送和接收功能。這里采用了MSCOMM.OCX控件。

      本文根據(jù)杭州某包裝材料公司原料配料控制系統(tǒng)為背景,簡述實(shí)現(xiàn)計(jì)算機(jī)與三菱FX系列PLC通信的實(shí)現(xiàn)過程。

      二、硬件與選型

      日本三菱公司是國際著名的工廠自動(dòng)化設(shè)備制造商,工業(yè)可編程控制器在國內(nèi)市場占有率一直保持前列。項(xiàng)目選用三菱FX2N-64MRPLCSC-09電纜作為計(jì)算機(jī)與PLC通信的連線。連接電纜的9針端連接在計(jì)算機(jī)串口上,另一端連接在PLCRS-422編程口。系統(tǒng)框圖如圖一所示:

      圓角矩形標(biāo)注:  SC-09電纜
 



       

      計(jì)算機(jī) 三菱 PLC

      圖一

      三、軟件編程

      軟件設(shè)計(jì)主要包括PLC梯形圖設(shè)計(jì)和計(jì)算機(jī)VB程序、數(shù)據(jù)庫設(shè)計(jì)。計(jì)算機(jī)操作系統(tǒng)為Windows98,編程語言用Visual Basic 6.0,數(shù)據(jù)庫選用Access97,梯形圖程序在三菱PLC編程軟件GPPWIN軟件環(huán)境設(shè)計(jì)。上位機(jī)軟件實(shí)現(xiàn)計(jì)算機(jī)對PLC內(nèi)部數(shù)據(jù)讀取、寫入?yún)?shù)和保存數(shù)據(jù)到數(shù)據(jù)庫。

      三菱FX2NPLC編程口通信協(xié)議如下:

      命令

      命令字

      控制元件

      備注

      讀元件

      0

      X,Y,M,S,T,C,D

      讀字/位元件狀態(tài)

      寫元件

      1

      X,Y,M,S,T,C,D

      寫字/位元件狀態(tài)

      置位

      7

      X,Y,M,S,T,C

      位元件置位

      復(fù)位

      8

      X,Y,M,S,T,C

      位元件復(fù)位

      通信格式:

      起始符

      命令字

      首地址

      數(shù)據(jù)區(qū)

      結(jié)束符

      和校驗(yàn)

      波特率9600,偶校驗(yàn),8位數(shù)據(jù)位,一位停止位。

      在新建工程的表單上添加MSCOMM.OCX控件,初始化程序:

      Private Sub Form_Load()

      MSComm1.CommPort = 1 '選擇COM1

      MSComm1.Settings = "9600,e,7,1"

      End Sub


      系統(tǒng)參數(shù)主畫面如下圖所示: 

      圖二

      數(shù)據(jù)讀取子程序:

      Public Function GetData(ByVal StartAddress As String, ByVal GetBytes As Integer, ByVal Hex_Bytes As String) As String

      MSComm1.InputLen = GetBytes * 2 + 4

      MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)

      ‘傳送數(shù)據(jù)組成:起始符+命令+首地址+數(shù)據(jù)位+結(jié)束符+和檢驗(yàn)碼

      GetData = MSComm1.Input

      MSComm1.InBufferCount = 0

      MSComm1.InputLen = 0

      End Function

      如需讀取數(shù)據(jù),通過調(diào)用GetData子程序。

      參數(shù)設(shè)置程序可參考讀取子程序,只是改變命令而已。

      Access97數(shù)據(jù)庫中包含三個(gè)表單,包括參數(shù)表、記錄表、報(bào)警記錄表。

      通過如下子程序是將實(shí)際稱量值(記錄表)更新到數(shù)據(jù)庫:

      Private Sub SaveData()

      Dim i As Integer

      Dim valid As Boolean

      On Error Resume Next

      valid = True

      Data1.Recordset.AddNew

      Data1.Recordset.Fields("dtime") = TimeSerial(OnHour, OnMinute, OnSecond)

      Data1.Recordset.Fields("systime") = Time ‘系統(tǒng)時(shí)間

      Data1.Recordset.Fields("get_xl") = LF(1) ‘小料當(dāng)前稱量值

      Data1.Recordset.Fields("get_fjs") = LF(2) ‘方解石當(dāng)前稱量值

      Data1.Recordset.Fields("get_cs") = LF(3) ‘長石當(dāng)前稱量值

      Data1.Recordset.Fields("get_sys") = LF(4) ‘石英砂當(dāng)前稱量值

      Data1.Recordset.Fields("get_cj") = LF(5) ‘純堿當(dāng)前稱量值

      On Error Resume Next

      Data1.Recordset.Update ‘更新數(shù)據(jù)庫記錄

      Data1.Recordset.MovePrevious

      End Sub

      程序中,LF(i)變量對應(yīng)為圖二系統(tǒng)參數(shù)表單中實(shí)稱值。

      保存參數(shù)子程序只是對數(shù)據(jù)庫操作,程序結(jié)構(gòu)可參考以上子程序。

      上位機(jī)與PLC通信質(zhì)量的好壞,對系統(tǒng)的安全可靠運(yùn)行影響極大,因此,編寫程序時(shí),除了在兩者之間的通信協(xié)議上保持絕對一致和采取相應(yīng)的容錯(cuò)技術(shù)外,還要考慮系統(tǒng)的整體容錯(cuò)技術(shù),防止系統(tǒng)的不正常。

      四、結(jié)束語

      串行通信是目前計(jì)算機(jī)與其他設(shè)備之間通信廣泛采用的方式之一,傳送數(shù)據(jù)準(zhǔn)確,程序穩(wěn)定運(yùn)行是系統(tǒng)開發(fā)的主要目的。本設(shè)計(jì)中充分利用計(jì)算機(jī)和PLC的資源,在幾乎不增加設(shè)備開支的情況下成功的實(shí)現(xiàn)上位機(jī)與PLC之間的通信

      參考文獻(xiàn)

      1、美國 ·Microsoft Visal Basic 6.0 Controls reference控件參考手冊

      2、舒繼武·Visual Basic 中通信及應(yīng)用·微型機(jī)與應(yīng)用,1996

      3、陳小歐·Windows環(huán)境下串口異步通信程序設(shè)計(jì)·電子技術(shù)應(yīng)用

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 无码aⅴ精品一区二区三区浪潮| 另类ts人妖一区二区三区| 国产一区在线视频| 亚洲一区二区三区电影| 视频精品一区二区三区| 亚洲乱码一区二区三区国产精品| 久久精品综合一区二区三区| 国产精品一区二区久久乐下载 | 精品成人一区二区三区四区| 伊人色综合一区二区三区影院视频| 中文无码AV一区二区三区| 无码AV一区二区三区无码| 国产精品无码一区二区三区在 | 无码人妻精品一区二区三区99仓本 | 一区二区三区在线观看免费 | 色妞AV永久一区二区国产AV| 一区二区在线免费视频| 国产在线观看精品一区二区三区91| 日本免费一区二区三区| 精品一区二区三区自拍图片区| 又硬又粗又大一区二区三区视频| 国产vr一区二区在线观看| 一区二区三区视频免费| A国产一区二区免费入口| 久久成人国产精品一区二区| 中文字幕一区二区区免| 中文字幕在线播放一区| 久久99国产精品一区二区| 亚洲熟妇av一区二区三区| 精品少妇一区二区三区视频| 国产AV一区二区三区传媒| 少妇无码一区二区三区| 老熟女高潮一区二区三区| 亚洲一区精品视频在线| 亚洲色偷精品一区二区三区| 日本一道一区二区免费看| 中文字幕一区二区三区有限公司 | 精品综合一区二区三区| 精品少妇一区二区三区在线| 高清国产AV一区二区三区| 国产精品揄拍一区二区|