基于VB及臺達(dá)觸摸屏的監(jiān)控系統(tǒng)在紡機中的應(yīng)用
一、引言
該系統(tǒng)用于對各生產(chǎn)線的紡機進行實時監(jiān)控和查詢,并對各班次產(chǎn)量數(shù)據(jù)進行存儲,用戶可通過日期時間段、車號、班次等對產(chǎn)量進行綜合查詢,并進行統(tǒng)計,可在查詢出滿足條件的數(shù)據(jù)后,進行報表輸出和打印。以下是對系統(tǒng)設(shè)計方面的一些討論。
二、系統(tǒng)結(jié)構(gòu)與功能
精梳機是近年來在紡織行業(yè)使用較為普遍的一種設(shè)備,其主要作用是排出梳棉生條中一定長度以下的短纖維,提高纖維整齊度,進一步清除纖維中殘留的棉結(jié)、雜質(zhì),提高纖維光潔度。條并卷聯(lián)合機是精梳工序的準(zhǔn)備設(shè)備,通常情況下,一套精梳設(shè)備由一臺條并卷聯(lián)合機和五臺精梳機組成。該產(chǎn)量監(jiān)控查詢系統(tǒng)應(yīng)用于精梳設(shè)備的結(jié)構(gòu)示意圖如下所示:
該系統(tǒng)實現(xiàn)了以下功能:
1)實時監(jiān)控所選機器各班次的當(dāng)日產(chǎn)量和累計產(chǎn)量以及該機器的運行情況。
2)可定時保存各機器各班次的當(dāng)日產(chǎn)量及累計產(chǎn)量,且有多種定時方式可選擇。
3)能分別根據(jù)時間,班次,產(chǎn)量,車號進行查詢操作,也可綜合考慮數(shù)據(jù)保存方式進行查詢,提高查詢準(zhǔn)確率。
4)查詢結(jié)果可顯示為報表格式,并可將結(jié)果打印輸出,方便用戶使用。
5)具有系統(tǒng)維護功能,可方便用戶進行數(shù)據(jù)維護。
三、系統(tǒng)設(shè)計
1)硬件配置
名稱 |
數(shù)量 |
觸摸屏 |
7 |
普通PC機 |
1 |
轉(zhuǎn)換模塊RS232—RS485 |
1 |
2)數(shù)據(jù)采集部分的設(shè)計
觸摸屏選用臺達(dá)系列AE10THTD型,由于其具有強大的通訊功能,靈活的系統(tǒng)構(gòu)成,生動逼真且豐富的圖庫,簡單易用等特點,在紡織業(yè)中得到了廣泛的應(yīng)用,因此通過觸摸屏來采集所需數(shù)據(jù)。所以要對紡機進行實時監(jiān)控,首先要解決觸摸屏與PC的通信問題。所用的臺達(dá)觸摸屏支持標(biāo)準(zhǔn)的MODBUS協(xié)議,通過串口與PC相連。
<1>MODBUS通信協(xié)議
modbus功能碼
01:讀取線圈狀態(tài)取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF)
02:讀取輸入狀態(tài)取得一組開關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF)
03:讀取保持寄存器在一個或多個保持寄存器中取得當(dāng)前的二進制值
04:讀取輸入寄存器在一個或多個輸入寄存器中取得當(dāng)前的二進制值
05:強置單線圈強置一個邏輯線圈的通斷狀態(tài)
06:預(yù)置單線圈把具體二進制值裝入一個保持寄存器
根據(jù)modbus協(xié)議,通信中mscomm1.output中包含的字符串應(yīng)包括以下幾部分:
起始位站號功能碼數(shù)據(jù)位校驗位停止位
在此通信中,站號表示人機站號數(shù)據(jù)位包括寄存器地址和數(shù)據(jù)
<2>HMI內(nèi)部地址與MODBUS地址映射表
MODBUS_ADDRESS |
HMI_ADDRESS |
PC_ADDRESS |
描述 |
W40001-W41024 |
$0-$1023 |
0000-03FF |
內(nèi)部寄存器 |
W42001-W43024 |
$M0-$M1023 |
07D0-0BCF |
斷電保持內(nèi)部寄存器 |
W44001 |
RCPN0 |
0FA0 |
配方編號寄存器 |
W45001-...... |
RCP0-RCPn |
1388-...... |
配方寄存器 |
B00001-B01024 |
$2000.0-$2063.15 |
0000-03FF |
內(nèi)部寄存器(bit) |
B01025-B02048 |
$M200.0-$M263.15 |
0400-07FB |
斷電內(nèi)部保持寄存器(bit) |
<3>mscomm控件
CommPort設(shè)置并返回通訊端口號。
Settings以字符串的形式設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。
PortOpen設(shè)置并返回通訊端口的狀態(tài)。也可以打開和關(guān)閉端口。
Input從接收緩沖區(qū)返回和刪除字符。
Output向傳輸緩沖區(qū)寫一個字符串。
<4>HMI與PC的通信及數(shù)據(jù)采集的設(shè)計
LRC算法函數(shù):
PublicFunctionLRC(str)
c=0
l=Len(str)’求出str的長度賦值給l
Forc=c+1Tol
c_data=Mid$(str,c,2)’在str串中,從c的值開始取2個字符。
d_lrc=d_lrc+Val("&H"+c_data)
c=c+1
Nextc
Ifd_lrc>&HFFThen
d_lrc=d_lrcMod&H100
EndIf
h_lrc=Hex(&HFF-d_lrc+1)
IfLen(h_lrc)>2Then
h_lrc=Mid(h_lrc,Len(h_lrc)-1,2)
EndIf
LRC=h_lrc
EndFunction
下面對數(shù)據(jù)進行實時采集,數(shù)據(jù)采集程序界面如下圖所示:
PrivateSubTimer1_Timer()
’連接數(shù)據(jù)庫
DimCONNAsNewADODB.Connection
DimDBStrAsString
DimrsAsNewADODB.Recordset
DBStr="Provider=Microsoft.Jet.
OLEDB.4.0;DataSource="&App.Path&"\data.mdb;PersistSecurityInfo=False"
CONN.OpenDBStr
DimMac_Num’Mac_Num是車號
Mac_Num=Combo_MacNum.List(Combo_MacNum.ListIndex)
Debug.PrintMac_Num
sql="s elect*frommachinewhereMachine_Num=’"+Mac_Num+"’"’獲取車號
rs.Opensql,CONN,1,3
Txt_type.Text=rs.Fields("machine_type").Value’獲取車的類型(是精梳機還是條并聯(lián))
rs.Close
str_type=Mac_Num’
SetCONN=Nothing
DBStr=""
’發(fā)送數(shù)據(jù)(根據(jù)所選車號發(fā)送數(shù)據(jù))
IfMSComm1.PortOpen=TrueAndstakeout_flagAndCombo_MacNum.
ListIndex>=0Then
str_output=str_type+"030064001D"
MSComm1.Output=":"+str_output+LRC(str_output)+Chr$(13)+Chr$(10)
’接收數(shù)據(jù)
inputstring=MSComm1.Input
’將接收到的數(shù)據(jù)分別賦值并顯示
Txt_100.Text=change(inputstring,8,12)’甲班當(dāng)日產(chǎn)量
Txt_102.Text=change(inputstring,16,20)’甲班累計產(chǎn)量
Txt_104.Text=change(inputstring,24,28)’乙班當(dāng)日產(chǎn)量
Txt_106.Text=change(inputstring,32,36)’乙班累計產(chǎn)量
Txt_108.Text=change(inputstring,40,44)’丙班當(dāng)日產(chǎn)量
Txt_110.Text=change(inputstring,48,52)’丙班累計產(chǎn)量
Txt_112.Text=change(inputstring,56,60)’丁班當(dāng)日產(chǎn)量
Txt_114.Text=change(inputstring,64,68)’丁班累計產(chǎn)量
Txt_116.Text=change(inputstring,72,76)’各班當(dāng)日合計產(chǎn)量
Txt_118.Text=change(inputstring,80,84)’各班累計合計產(chǎn)量
IfTxt_type.Text="條并聯(lián)"Then
Txt_view1.Text=change(inputstring,104,108)’條并聯(lián)繞卷速度
Txt_view2.Text=change(inputstring,112,116)’條并聯(lián)當(dāng)前長度
Else
Txt_view1.Text=change(inputstring,88,92)’精梳機鉗次
Txt_view2.Text=change(inputstring,96,100)’精梳機條速
EndIf
str_state=Mid(inputstring,120,4)’接收運行狀態(tài)的返回值,并判斷運行狀態(tài)
Ifstr_state="0001"Then
Cmd_128.Caption="運行中"
EndIf
Ifstr_state="0000"Then
Cmd_128.Caption="停止"
EndIf
EndIf
EndSub
change(inputstr,start1AsInteger,start2AsInteger)用于轉(zhuǎn)換采集到的數(shù)據(jù),其功能是將采集到的產(chǎn)量數(shù)據(jù)轉(zhuǎn)換為十進制。其代碼如下:
PublicFunctionchange(inputstr,start1AsInteger,start2AsInteger)
str_low=Mid(inputstr,start1,4)’讀寄存器中的數(shù)據(jù)賦給低字節(jié)
str_high=Mid(inputstr,start2,4)’讀寄存器中的數(shù)據(jù)賦給高字節(jié)
str_hex=str_high+str_low’整合高低字節(jié)數(shù)據(jù)
str_input=Val("&H"+str_hex)’將十六進制數(shù)據(jù)轉(zhuǎn)換成十進制
Ifstr_input>=-32768Andstr_input<=-1Then’
將轉(zhuǎn)換成十進制處于-32768~32767的數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的正數(shù)
str_input=str_input+65536
EndIf
change=str_input/1000’返回值取三位小數(shù)
EndFunction
3)信息查詢
信息查詢界面如下所示,可對已經(jīng)保存的生產(chǎn)數(shù)據(jù)根據(jù)時間、班次、產(chǎn)量、車號進行綜合查詢。
該功能的程序方面比較簡單,主要是對數(shù)據(jù)庫的查詢操作。以單獨對班次查詢?yōu)槔浯a如下:
’按班次查詢子函數(shù),用于判斷其搜索關(guān)鍵字是否有效
PrivateSubChk_team_Click()
IfChk_team.Value=1Then
Combo_team.Enabled=True
Else
Combo_team.Enabled=False
EndIf
EndSub
’選擇班次子函數(shù),用于判斷所選班次
PrivateSubCombo_team_Click()
Dimliner_str
S electCaseCombo_team.ListIndex
Case0
liner_str="甲班"
Case1
liner_str="乙班"
Case2
liner_str="丙班"
Case3
liner_str="丁班"
EndS elect
EndSub
’班次查詢子函數(shù),獲取查詢字符串
PublicFunctionsch_team()
Dimliner_str
Dimsch_str_team
S electCaseCombo_team.ListIndex
Case0
liner_str="甲班"
Case1
liner_str="乙班"
Case2
liner_str="丙班"
Case3
liner_str="丁班"
EndS elect
sch_str_team="info_liner=’"+liner_str+"’"
sch_team=sch_str_team
EndFunction
’產(chǎn)量查詢函數(shù),用于查詢產(chǎn)量并對其進行顯示
PrivateSubcmd_search_Click()
Dimsch_str
’按班次查詢
IfChk_team.Value=1Then
sch_str="where"+sch_team()
EndIf
’查詢結(jié)果顯示
Dimresource_str
resource_str="s electinfo_idas編號,info_mactypeas
機器類型,info_lineras班次,"
resource_str=resource_str+"info_sumoutputas
當(dāng)日產(chǎn)量,info_dayoutputas累計產(chǎn)量,"
resource_str=resource_str+"info_daytotalas
當(dāng)日合計產(chǎn)量,info_totalas累計合計產(chǎn)量"
resource_str=resource_str+"from"+table_str+sch_str
Adodc1.RecordSource=resource_str
Debug.PrintAdodc1.RecordSource
Adodc1.Refresh
EndSub
可根據(jù)以上單獨查詢班次的例子對其進行擴展,增加根據(jù)時間,車號,產(chǎn)量范圍等對產(chǎn)量進行查詢的功能,這里就不一一敘述了。
四、結(jié)束語
觸摸屏與上位機的結(jié)合,并通過VB6.0傳送數(shù)據(jù)所構(gòu)成的計算機監(jiān)控系統(tǒng),對于近距離傳輸數(shù)據(jù)的現(xiàn)場控制來說是一種性價比很高的解決方案。該系統(tǒng)充分的利用了觸摸屏的通信功能和PC強大的圖形顯示、浮點運算等特點,以最大的限度合理的利用了資源,實現(xiàn)了對設(shè)備運行狀態(tài)的監(jiān)控。
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。
你可能感興趣的文章