劉衛(wèi)生+周慶貴+張?jiān)?劉騰堯+顧俊
【摘 要】論文以稱(chēng)重儀表和PLC為下位機(jī)、PC為上位機(jī),實(shí)現(xiàn)了計(jì)算機(jī)和PLC與儀表之間的RS485通訊,開(kāi)發(fā)出的上位機(jī)監(jiān)控軟件可以實(shí)現(xiàn)流程控制、數(shù)據(jù)輸入/輸出和參數(shù)在線設(shè)置等功能。實(shí)驗(yàn)結(jié)果表明監(jiān)控軟件界面友好、可操作性強(qiáng)、性能可靠、簡(jiǎn)單實(shí)用。
【Abstract】The paper uses the weighing instrument and PLC as the lower machine, PC as the host computer, realizes the RS485 communication between the computer and PLC instrument, and then develops a PC monitoring software that can realize the process control, data input/output and parameter settings and other functions. The experimental results show that the monitoring software has the characters of friendly interface, strong operability, performance reliable, simple and practical.
【關(guān)鍵詞】FX2NPLC;VB;RS485通信
【Keywords】FX2N PLC;VB;RS485 communication
【中圖分類(lèi)號(hào)】TP274.2;TP311.1 【文獻(xiàn)標(biāo)志碼】A 【文章編號(hào)】1673-1069(2017)06-0178-04
1 引言
在葉片制造過(guò)程中,膠的配比對(duì)產(chǎn)品質(zhì)量有著重要影響。為保證產(chǎn)品質(zhì)量,原料的配比要嚴(yán)格按照工藝要求進(jìn)行。自動(dòng)配料稱(chēng)重控制系統(tǒng)是將兩種以上的配料按一定重量配比要求自動(dòng)加入混合機(jī)內(nèi)形成混合物料,供下一工序使用。本文介紹了基于VB語(yǔ)言開(kāi)發(fā)的打膠機(jī)網(wǎng)絡(luò)控制系統(tǒng)的工作原理、硬件構(gòu)成與程序設(shè)計(jì)流程,并具體給出了串口通信的流程和代碼。
2 稱(chēng)重系統(tǒng)構(gòu)成及主要功能
2.1 系統(tǒng)組成原理
系統(tǒng)由型號(hào)為FX2N-32MT的PLC和IND245的稱(chēng)重儀表構(gòu)成,PLC利用485BD模塊和接口轉(zhuǎn)換器與PC鏈接,稱(chēng)重儀表和工控機(jī)485串口相連。圖1為控制系統(tǒng)的組成示意圖。
2.2 主要控制功能
系統(tǒng)具有配方數(shù)據(jù)存儲(chǔ)和實(shí)際配料數(shù)據(jù)存儲(chǔ)功能,能夠按照時(shí)間、產(chǎn)品型號(hào)、打膠人、配料型號(hào)、組分等信息生成記錄進(jìn)行遠(yuǎn)程錄入。對(duì)現(xiàn)場(chǎng)的生產(chǎn)工藝過(guò)程進(jìn)行監(jiān)控,通過(guò)PLC控制混合設(shè)備和實(shí)時(shí)顯示現(xiàn)場(chǎng)的生產(chǎn)情況[1]??刂葡到y(tǒng)具有不同的工作方式,根據(jù)工藝要求,按照不同方式完成混合配料工作。主控制界面如圖2所示。
3 數(shù)據(jù)讀取
3.1 稱(chēng)重儀表的數(shù)據(jù)格式
IND245的連續(xù)輸出模板能夠向遠(yuǎn)程設(shè)備(如PC或顯示器)傳輸稱(chēng)量數(shù)據(jù)和秤的信息。連續(xù)模板可以使用串口1,串口2或以太網(wǎng)。連續(xù)輸出格式的校驗(yàn)和可選。
表1中顯示了18個(gè)字節(jié)的數(shù)據(jù)。
連續(xù)輸出格式說(shuō)明:
A.數(shù)據(jù)輸出以十六進(jìn)制02開(kāi)始;
B.狀態(tài)字,詳情請(qǐng)參照表2,3,4;
C.重量顯示值,六位字節(jié),沒(méi)有符號(hào)和小數(shù)點(diǎn)。前導(dǎo)零用空格代替;
D.皮重,六位字節(jié),沒(méi)有小數(shù)點(diǎn);
E.ASCII回車(chē)符
F.校驗(yàn)和僅設(shè)置為有效時(shí)進(jìn)行傳輸,校驗(yàn)和用于檢查傳輸數(shù)據(jù)中的錯(cuò)誤。
3.2 MSComm控件
本設(shè)計(jì)中,利用VB的通信控件MScomm實(shí)現(xiàn)串口通信[2],它是一種簡(jiǎn)單易用的串口通信控件。可通過(guò)該控件設(shè)置串口狀態(tài)和通信信息協(xié)議和格式。
通過(guò)以下五種屬性可設(shè)置串口的基本設(shè)置和操作。
①Setting是字符型,用于設(shè)定通信的信息格式。
②Output用于寫(xiě)入發(fā)送緩沖區(qū)的字符。
③PortOpen是布爾型且是開(kāi)關(guān)通信口。
④Input用于讀取接收緩沖區(qū)的字符。
⑤CommPort用于設(shè)置并返回通信口號(hào)并設(shè)置通信控件MScomm為哪個(gè)串口提供通信服務(wù)。
以下三種屬性描述如何利用VB所擁有事件驅(qū)動(dòng)機(jī)制來(lái)進(jìn)行通信。
①RThreshold用于設(shè)置并返回不觸發(fā)OnComm事件時(shí)接收緩沖區(qū)被允許的最多字符數(shù)。
②SThreshold用于設(shè)置并返回不觸發(fā)OnComm事件時(shí)發(fā)送緩沖區(qū)被允許的最少字符數(shù)。
③CommEvent用于返回通信過(guò)程中產(chǎn)生的錯(cuò)誤信息和事件,反映通信狀況。
上位機(jī)采用的通信格式為:MSComm1.Settings = "9600,N,7,1"表示波特率是9600bit/s,沒(méi)有奇偶校驗(yàn)位,7位數(shù)據(jù)位,1位停止位。
3.3 數(shù)據(jù)包提取
根據(jù)儀表的前述協(xié)議格式,要從緩沖區(qū)提取出數(shù)據(jù)首先要找到數(shù)據(jù)的尾字節(jié),因?yàn)橥ㄓ嵖丶袛?shù)據(jù)設(shè)置為8位,所以回車(chē)符值為128+13=141H,起始符值為128+2=130H。
因?yàn)閿?shù)據(jù)采用連續(xù)發(fā)送方式,設(shè)置接收控件數(shù)據(jù)長(zhǎng)度為36,數(shù)據(jù)為8位,只要找到其中數(shù)據(jù)的起始符,再看后面是否有回車(chē)符,如果有的話就是一個(gè)可以接收的數(shù)據(jù)包。
在托利多的電子秤上所顯示的重量數(shù)據(jù)在數(shù)據(jù)包中處于5到10位,有6個(gè)字節(jié),每個(gè)字節(jié)對(duì)應(yīng)電子秤上所顯示的一個(gè)數(shù)值。所以以字符串的形式將重量值從變量中取出,再判斷小數(shù)點(diǎn)的位置,這樣就能準(zhǔn)確地析取出重量數(shù)據(jù)[3]。
部分程序代碼
Private Sub Form_Load()
MScomm1.CommPort = 8 ' 設(shè)置端口號(hào)
MScomm1.InputLen=36 '設(shè)置接收字符串長(zhǎng)度
End Sub
Private Sub Timer2_Timer()
On Error GoTo Sexit '打開(kāi)數(shù)據(jù)端口
If MScomm1.PortOpen = True Then GoTo dexit
MScomm1.PortOpen = True
dexit:
fexit = "ok"
sexit:
If fexit = "ok" Then
On Error GoTo ition
weight1 = Mscomm1.Input
dition = "ok"
ition:
If dition = "ok" Then
Else
MsgBox "鏈接中斷", 0 + 16, "警告": Label18.Caption = "未連接": Timer2.Enabled = False: comm.PortOpen = False: Exit Sub
End If
Label18.Caption = "已連接"
Dim i As Long
For i = 1 To 36
If Mid(weight1, i, 1) = Chr(2) Then weight1 = Mid(weight1, i, 18): Exit For
'檢測(cè)數(shù)據(jù)
Next i
weight2 = Val(Mid(weight1, 5, 6))
weight2 = weight2 / 1000
Text6.Text = Format(weight2, "0.000")
Mscomm1.InBufferCount = 0
Else
Label18.Caption = "未連接"
End If
End Sub
4 數(shù)據(jù)庫(kù)操作
Ado Data控件使用ActiveX數(shù)據(jù)對(duì)象(ADO)來(lái)快速建立數(shù)據(jù)綁定和數(shù)據(jù)提供者之間的連接。數(shù)據(jù)綁定控件是任何具有“數(shù)據(jù)源”屬性的控件,數(shù)據(jù)提供者可以是任何符合OLE DB規(guī)范的數(shù)據(jù)源。連接數(shù)據(jù)庫(kù):將Ado Data控件與數(shù)據(jù)庫(kù)進(jìn)行連接,主要是對(duì)Ado Data控件的ConnectionString屬性、CommandType屬性、RecordSource屬性進(jìn)行設(shè)置。
下面是配方數(shù)據(jù)遠(yuǎn)程錄入的部分程序代碼:
Private Sub Inputdata()
Set cnn = New ADODB.Connection cnn.Open "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;
User ID=adc;Initial Catalog=質(zhì)量記錄_new;DataSource=192.*.*.1" '訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)
cnn.Execute "insert into data1" & _
"(A樹(shù)脂型號(hào),A樹(shù)脂批號(hào),A樹(shù)脂重量,B固化劑型號(hào),B固化劑批號(hào),B固化劑重量,[實(shí)際混合比B/A],機(jī)器編號(hào),葉片編號(hào),打膠人,生產(chǎn)日期,合計(jì)重量,打膠開(kāi)始時(shí)間,打膠結(jié)束時(shí)間,校核報(bào)警記錄)" & _
"values ('" & Combo1.Text & "','" & Combo2.Text & "','" & Text1.Text & "','" & Combo3.Text & "','" & Combo4.Text & "'" & _
",'" & Text2.Text & "','" & Text3.Text & "','" & Combo8.Text & "','" & Combo6.Text & "'" & _
",'" & Combo9.Text & "'" & _
",'" & time & "','" & Text6.Text & "','" & Text7.Text & "','" & Text8.Text & "','" & "超出質(zhì)量標(biāo)準(zhǔn)" + Label22.Caption & "')"
Sleep 200
Set rst = New ADODB.Recordset
rst.Open "select 打膠人 from 質(zhì)量記錄_new.dbo.data1 where 生產(chǎn)日期='" & time & "'", cnn
If Combo9.Text = rst.Fields("打膠人") Then
MsgBox "數(shù)據(jù)錄入成功", 0 + 64, "提示"
Else: MsgBox "請(qǐng)重新輸入數(shù)據(jù)", 0 + 48, 數(shù)據(jù)錄入失?。?cnn.Execute "delete from 質(zhì)量記錄_new.dbo.data1 where 生產(chǎn)日期 ='" & time & "'"
End If
End Sub
5 應(yīng)用情況
該程序已經(jīng)在某葉片制造企業(yè)的混料配比稱(chēng)重系統(tǒng)中得到應(yīng)用,經(jīng)過(guò)一年多的運(yùn)行情況表明,系統(tǒng)運(yùn)行穩(wěn)定,操作方便,配比質(zhì)量控制得到了較好保證,并實(shí)現(xiàn)了控制參數(shù)的遠(yuǎn)程控制和設(shè)備運(yùn)行情況(包括人員信息、打膠時(shí)間、配比、重量等)數(shù)據(jù)保存和遠(yuǎn)程監(jiān)控。實(shí)現(xiàn)了混料配比工藝過(guò)程的網(wǎng)絡(luò)化管理。
【參考文獻(xiàn)】
【1】朱金平,楊明.基于VB環(huán)境下開(kāi)發(fā)的配料稱(chēng)重系統(tǒng)[J].微計(jì)算機(jī)信息,2003,19(1):36-38.
【2】辛文舉.基于VB的標(biāo)簽打印機(jī)軟件和托利多電子稱(chēng)之間的串口通信[J].自動(dòng)化技術(shù)與應(yīng)用,2012,31(7):96-98.
【3】周慶貴.基于VB編程環(huán)境數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].測(cè)控技術(shù),2008,27(4):62-65.