
女,畢業于陜西科技大學電子信息專業,本科,現就職于烽火通信集團恒鑫紡機公司,從事新型紡織機械的研發工作。
摘要: 目前紡織業生產中產品產量一般都還是依靠人工進行統計,在實際操作過程中,不僅麻煩而且容易出錯。因此,有必要采用產量監控及查詢系統對產品產量進行統計。本文介紹了基于VB及臺達觸摸屏的產量監控及查詢系統,該系統不僅能應用于紡織機械,而且適用于其它設備。
關鍵詞: 臺達觸摸屏;VB;監控;查詢;MODBUS;MSCOMM
Abstract: At the present time, the output of the textile industry is accounted by the worker usually. It is bother and easy to make mistakes. So it is necessary to have a system to monitor the output of the product. A monitor and enquiry system about the output of the product is introduced in this article, it's based on VB and Touch Screen. This system is not only used in the textile machine, but also used in the other area.
Key words: Delta HMI; VB; Monitor;Enquiry; MODBUS ; MSCOMM
一、引言
該系統用于對各生產線的紡機進行實時監控和查詢,并對各班次產量數據進行存儲,用戶可通過日期時間段、車號、班次等對產量進行綜合查詢,并進行統計,可在查詢出滿足條件的數據后,進行報表輸出和打印。以下是對系統設計方面的一些討論。
二、系統結構與功能
精梳機是近年來在紡織行業使用較為普遍的一種設備,其主要作用是排出梳棉生條中一定長度以下的短纖維,提高纖維整齊度,進一步清除纖維中殘留的棉結、雜質,提高纖維光潔度。條并卷聯合機是精梳工序的準備設備,通常情況下,一套精梳設備由一臺條并卷聯合機和五臺精梳機組成。該產量監控查詢系統應用于精梳設備的結構示意圖如下所示:
圖1 結構示意圖
該系統實現了以下功能:
(1)實時監控所選機器各班次的當日產量和累計產量以及該機器的運行情況。
(2)可定時保存各機器各班次的當日產量及累計產量,且有多種定時方式可選擇。
(3)能分別根據時間,班次,產量,車號進行查詢操作,也可綜合考慮數據保存方式進行查詢,提高查詢準確率。
(4)查詢結果可顯示為報表格式,并可將結果打印輸出,方便用戶使用。
(5)具有系統維護功能,可方便用戶進行數據維護。
三、系統設計
1)硬件配置
名稱 |
數量 |
觸摸屏 |
7 |
普通PC機 |
1 |
轉換模塊RS232—RS485 |
1 |
2) 數據采集部分的設計
觸摸屏選用臺達系列AE10THTD型,由于其具有強大的通訊功能,靈活的系統構成,生動逼真且豐富的圖庫,簡單易用等特點,在紡織業中得到了廣泛的應用,因此通過觸摸屏來采集所需數據。所以要對紡機進行實時監控,首先要解決觸摸屏與PC的通信問題。所用的臺達觸摸屏支持標準的MODBUS協議,通過串口與PC相連。
● MODBUS通信協議
modbus功能碼
01:讀取線圈狀態 取得一組邏輯線圈的當前狀態(ON/OFF)
02:讀取輸入狀態 取得一組開關輸入的當前狀態(ON/OFF)
03:讀取保持寄存器 在一個或多個保持寄存器中取得當前的二進制值
04:讀取輸入寄存器 在一個或多個輸入寄存器中取得當前的二進制值
05:強置單線圈 強置一個邏輯線圈的通斷狀態
06:預置單線圈 把具體二進制值裝入一個保持寄存器
根據modbus協議,通信中mscomm1.output中包含的字符串應包括以下幾部分:
起始位 站號 功能碼 數據位 校驗位 停止位
在此通信中,站號表示人機站號 數據位包括寄存器地址和數據
● HMI內部地址與MODBUS地址映射表
MODBUS_ADDRESS |
HMI_ADDRESS |
PC_ADDRESS |
描述 |
W40001-W41024 |
$0-$1023 |
0000-03FF |
內部寄存器 |
W42001-W43024 |
$M0-$M1023 |
07D0-0BCF |
斷電保持內部寄存器 |
W44001 |
RCPN0 |
0FA0 |
配方編號寄存器 |
W45001-...... |
RCP0-RCPn |
1388-...... |
配方寄存器 |
B00001-B01024 |
$2000.0-$2063.15 |
0000-03FF |
內部寄存器(bit) |
B01025-B02048 |
$M200.0-$M263.15 |
0400-07FB |
斷電內部保持寄存器(bit) |
● mscomm控件
CommPort 設置并返回通訊端口號。
Settings 以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位。
PortOpen 設置并返回通訊端口的狀態。也可以打開和關閉端口。
Input 從接收緩沖區返回和刪除字符。
Output 向傳輸緩沖區寫一個字符串。
● HMI與PC的通信及數據采集的設計
LRC算法函數:
Public Function LRC(str)
c = 0
l = Len(str) '求出str的長度賦值給l
For c = c + 1 To l
c_data = Mid$(str, c, 2) '在str串中,從c的值開始取2個字符。
d_lrc = d_lrc + Val("&H" + c_data)
c = c + 1
Next c
If d_lrc > &HFF Then
d_lrc = d_lrc Mod &H100
End If
h_lrc = Hex(&HFF - d_lrc + 1)
If Len(h_lrc) > 2 Then
h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)
End If
LRC = h_lrc
End Function
下面對數據進行實時采集,數據采集程序界面如下圖所示:

圖2 數據采集程序界面
Private Sub Timer1_Timer()
'連接數據庫
Dim CONN As New ADODB.Connection
Dim DBStr As String
Dim rs As New ADODB.Recordset
DBStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data.mdb;Persist Security Info=False"
CONN.Open DBStr
Dim Mac_Num ' Mac_Num是車號
Mac_Num = Combo_MacNum.List(Combo_MacNum.ListIndex)
Debug.Print Mac_Num
sql = "select * from machine where Machine_Num = '" + Mac_Num + "'" '獲取車號
rs.Open sql, CONN, 1, 3
Txt_type.Text = rs.Fields("machine_type").Value '獲取車的類型(是精梳機還是條并聯)
rs.Close
str_type = Mac_Num '
Set CONN = Nothing
DBStr = ""
'發送數據(根據所選車號發送數據)
If MSComm1.PortOpen = True And stakeout_flag And Combo_MacNum.ListIndex >= 0 Then
str_output = str_type + "030064001D"
MSComm1.Output = ":" + str_output + LRC(str_output) + Chr$(13) + Chr$(10)
'接收數據
inputstring = MSComm1.Input
'將接收到的數據分別賦值并顯示
Txt_100.Text = change(inputstring, 8, 12) '甲班當日產量
Txt_102.Text = change(inputstring, 16, 20) '甲班累計產量
Txt_104.Text = change(inputstring, 24, 28) '乙班當日產量
Txt_106.Text = change(inputstring, 32, 36) '乙班累計產量
Txt_108.Text = change(inputstring, 40, 44) '丙班當日產量
Txt_110.Text = change(inputstring, 48, 52) '丙班累計產量
Txt_112.Text = change(inputstring, 56, 60) '丁班當日產量
Txt_114.Text = change(inputstring, 64, 68) '丁班累計產量
Txt_116.Text = change(inputstring, 72, 76) '各班當日合計產量
Txt_118.Text = change(inputstring, 80, 84) '各班累計合計產量
If Txt_type.Text = "條并聯" Then
Txt_view1.Text = change(inputstring, 104, 108) '條并聯繞卷速度
Txt_view2.Text = change(inputstring, 112, 116) '條并聯當前長度
Else
Txt_view1.Text = change(inputstring, 88, 92) '精梳機鉗次
Txt_view2.Text = change(inputstring, 96, 100) '精梳機條速
End If
str_state = Mid(inputstring, 120, 4) '接收運行狀態的返回值,并判斷運行狀態
If str_state = "0001" Then
Cmd_128.Caption = "運行中"
End If
If str_state = "0000" Then
Cmd_128.Caption = "停止"
End If
End If
End Sub
change(inputstr, start1 As Integer, start2 As Integer)用于轉換采集到的數據,其功能是將采集到的產量數據轉換為十進制。其代碼如下:
Public Function change(inputstr, start1 As Integer, start2 As Integer)
str_low = Mid(inputstr, start1, 4) '讀寄存器中的數據賦給低字節
str_high = Mid(inputstr, start2, 4) '讀寄存器中的數據賦給高字節
str_hex = str_high + str_low '整合高低字節數據
str_input = Val("&H" + str_hex) '將十六進制數據轉換成十進制
If str_input >= -32768 And str_input <= -1 Then '將轉換成十進制處于-32768~32767的數據轉換為相應的正數
str_input = str_input + 65536
End If
change = str_input / 1000 '返回值 取三位小數
End Function
3)信息查詢
信息查詢界面如下所示,可對已經保存的生產數據根據時間、班次、產量、車號進行綜合查詢。

圖3 信息查詢界面
該功能的程序方面比較簡單,主要是對數據庫的查詢操作。以單獨對班次查詢為例,其代碼如下:
'按班次查詢子函數,用于判斷其搜索關鍵字是否有效
Private Sub Chk_team_Click()
If Chk_team.Value = 1 Then
Combo_team.Enabled = True
Else
Combo_team.Enabled = False
End If
End Sub
'選擇班次子函數,用于判斷所選班次
Private Sub Combo_team_Click()
Dim liner_str
Select Case Combo_team.ListIndex
Case 0
liner_str = "甲班"
Case 1
liner_str = "乙班"
Case 2
liner_str = "丙班"
Case 3
liner_str = "丁班"
End Select
End Sub
'班次查詢子函數,獲取查詢字符串
Public Function sch_team()
Dim liner_str
Dim sch_str_team
Select Case Combo_team.ListIndex
Case 0
liner_str = "甲班"
Case 1
liner_str = "乙班"
Case 2
liner_str = "丙班"
Case 3
liner_str = "丁班"
End Select
sch_str_team = "info_liner = '" + liner_str + "'"
sch_team = sch_str_team
End Function
'產量查詢函數,用于查詢產量并對其進行顯示
Private Sub cmd_search_Click()
Dim sch_str
'按班次查詢
If Chk_team.Value = 1 Then
sch_str = " where " + sch_team()
End If
'查詢結果顯示
Dim resource_str
resource_str = " select info_id as 編號,info_mactype as 機器類型 ,info_liner as 班次, "
resource_str = resource_str + " info_sumoutput as 當日產量, info_dayoutput as 累計產量,"
resource_str = resource_str + " info_daytotal as 當日合計產量,info_total as 累計合計產量 "
resource_str = resource_str + " from " + table_str + sch_str
Adodc1.RecordSource = resource_str
Debug.Print Adodc1.RecordSource
Adodc1.Refresh
End Sub
可根據以上單獨查詢班次的例子對其進行擴展,增加根據時間,車號,產量范圍等對產量進行查詢的功能,這里就不一一敘述了。
四、結束語
觸摸屏與上位機的結合,并通過VB6.0傳送數據所構成的計算機監控系統,對于近距離傳輸數據的現場控制來說是一種性價比很高的解決方案。該系統充分的利用了觸摸屏的通信功能和PC強大的圖形顯示、浮點運算等特點,以最大的限度合理的利用了資源,實現了對設備運行狀態的監控。
其它作者:
馬巖(1980-),男,畢業于西安工程大學機械電子工程專業,本科,現就職于陜西烽火通信集團恒鑫紡機公司,從事新型紡織機械的研發工作。