技術頻道

      基于VB及臺達觸摸屏的監控系統在紡機中的應用

        一、引言

        該系統用于對各生產線的紡機進行實時監控和查詢,并對各班次產量數據進行存儲,用戶可通過日期時間段、車號、班次等對產量進行綜合查詢,并進行統計,可在查詢出滿足條件的數據后,進行報表輸出和打印。以下是對系統設計方面的一些討論。

        二、系統結構與功能

        精梳機是近年來在紡織行業使用較為普遍的一種設備,其主要作用是排出梳棉生條中一定長度以下的短纖維,提高纖維整齊度,進一步清除纖維中殘留的棉結、雜質,提高纖維光潔度。條并卷聯合機是精梳工序的準備設備,通常情況下,一套精梳設備由一臺條并卷聯合機和五臺精梳機組成。該產量監控查詢系統應用于精梳設備的結構示意圖如下所示:

        該系統實現了以下功能:

        1)實時監控所選機器各班次的當日產量和累計產量以及該機器的運行情況。

        2)可定時保存各機器各班次的當日產量及累計產量,且有多種定時方式可選擇。

        3)能分別根據時間,班次,產量,車號進行查詢操作,也可綜合考慮數據保存方式進行查詢,提高查詢準確率。

        4)查詢結果可顯示為報表格式,并可將結果打印輸出,方便用戶使用。

        5)具有系統維護功能,可方便用戶進行數據維護。

        三、系統設計

        1)硬件配置

      名稱

      數量

      觸摸屏

      7

      普通PC

      1

      轉換模塊RS232—RS485

      1

        2)數據采集部分的設計

        觸摸屏選用臺達系列AE10THTD型,由于其具有強大的通訊功能,靈活的系統構成,生動逼真且豐富的圖庫,簡單易用等特點,在紡織業中得到了廣泛的應用,因此通過觸摸屏來采集所需數據。所以要對紡機進行實時監控,首先要解決觸摸屏與PC的通信問題。所用的臺達觸摸屏支持標準的MODBUS協議,通過串口與PC相連。

        <1>MODBUS通信協議

        modbus功能碼

        01:讀取線圈狀態取得一組邏輯線圈的當前狀態(ON/OFF)

        02:讀取輸入狀態取得一組開關輸入的當前狀態(ON/OFF)

        03:讀取保持寄存器在一個或多個保持寄存器中取得當前的二進制值

        04:讀取輸入寄存器在一個或多個輸入寄存器中取得當前的二進制值

        05:強置單線圈強置一個邏輯線圈的通斷狀態

        06:預置單線圈把具體二進制值裝入一個保持寄存器

        根據modbus協議,通信中mscomm1.output中包含的字符串應包括以下幾部分:

        起始位站號功能碼數據位校驗位停止位

        在此通信中,站號表示人機站號數據位包括寄存器地址和數據

        <2>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)

        <3>mscomm控件

        CommPort設置并返回通訊端口號。

        Settings以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位。

        PortOpen設置并返回通訊端口的狀態。也可以打開和關閉端口。

        Input從接收緩沖區返回和刪除字符。

        Output向傳輸緩沖區寫一個字符串。

        <4>HMI與PC的通信及數據采集的設計

        LRC算法函數:

        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

      下面對數據進行實時采集,數據采集程序界面如下圖所示:


      PrivateSubTimer1_Timer()

      ’連接數據庫

      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’獲取車的類型(是精梳機還是條并聯)

      rs.Close

      str_type=Mac_Num’

      SetCONN=Nothing

      DBStr=""

      ’發送數據(根據所選車號發送數據)

      IfMSComm1.PortOpen=TrueAndstakeout_flagAndCombo_MacNum.

      ListIndex>=0Then

      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)’各班累計合計產量

      IfTxt_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)’精梳機條速

      EndIf

      str_state=Mid(inputstring,120,4)’接收運行狀態的返回值,并判斷運行狀態

      Ifstr_state="0001"Then

      Cmd_128.Caption="運行中"

      EndIf

      Ifstr_state="0000"Then

      Cmd_128.Caption="停止"

      EndIf

      EndIf

      EndSub

      change(inputstr,start1AsInteger,start2AsInteger)用于轉換采集到的數據,其功能是將采集到的產量數據轉換為十進制。其代碼如下:

      PublicFunctionchange(inputstr,start1AsInteger,start2AsInteger)

      str_low=Mid(inputstr,start1,4)’讀寄存器中的數據賦給低字節

      str_high=Mid(inputstr,start2,4)’讀寄存器中的數據賦給高字節

      str_hex=str_high+str_low’整合高低字節數據

      str_input=Val("&H"+str_hex)’將十六進制數據轉換成十進制

      Ifstr_input>=-32768Andstr_input<=-1Then’

      將轉換成十進制處于-32768~32767的數據轉換為相應的正數

      str_input=str_input+65536

      EndIf

      change=str_input/1000’返回值取三位小數

      EndFunction

      3)信息查詢

      信息查詢界面如下所示,可對已經保存的生產數據根據時間、班次、產量、車號進行綜合查詢。

      該功能的程序方面比較簡單,主要是對數據庫的查詢操作。以單獨對班次查詢為例,其代碼如下:

      ’按班次查詢子函數,用于判斷其搜索關鍵字是否有效

      PrivateSubChk_team_Click()

      IfChk_team.Value=1Then

      Combo_team.Enabled=True

      Else

      Combo_team.Enabled=False

      EndIf

      EndSub

      ’選擇班次子函數,用于判斷所選班次

      PrivateSubCombo_team_Click()

      Dimliner_str

      S electCaseCombo_team.ListIndex

      Case0

      liner_str="甲班"

      Case1

      liner_str="乙班"

      Case2

      liner_str="丙班"

      Case3

      liner_str="丁班"

      EndS elect

      EndSub

      ’班次查詢子函數,獲取查詢字符串

      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

      ’產量查詢函數,用于查詢產量并對其進行顯示

      PrivateSubcmd_search_Click()

      Dimsch_str

      ’按班次查詢

      IfChk_team.Value=1Then

      sch_str="where"+sch_team()

      EndIf

      ’查詢結果顯示

      Dimresource_str

      resource_str="s electinfo_idas編號,info_mactypeas

      機器類型,info_lineras班次,"

      resource_str=resource_str+"info_sumoutputas

      當日產量,info_dayoutputas累計產量,"

      resource_str=resource_str+"info_daytotalas

      當日合計產量,info_totalas累計合計產量"

      resource_str=resource_str+"from"+table_str+sch_str

      Adodc1.RecordSource=resource_str

      Debug.PrintAdodc1.RecordSource

      Adodc1.Refresh

      EndSub

      可根據以上單獨查詢班次的例子對其進行擴展,增加根據時間,車號,產量范圍等對產量進行查詢的功能,這里就不一一敘述了。

      四、結束語

      觸摸屏與上位機的結合,并通過VB6.0傳送數據所構成的計算機監控系統,對于近距離傳輸數據的現場控制來說是一種性價比很高的解決方案。該系統充分的利用了觸摸屏的通信功能和PC強大的圖形顯示、浮點運算等特點,以最大的限度合理的利用了資源,實現了對設備運行狀態的監控。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 久久精品国产第一区二区| 少妇一夜三次一区二区| 一色一伦一区二区三区| 国产精品一区电影| 亚欧免费视频一区二区三区| 国产在线精品一区二区在线看| 久久国产午夜一区二区福利| 亚洲国模精品一区| 人妻互换精品一区二区| 日韩毛片基地一区二区三区| 激情内射亚洲一区二区三区| 日本一区二区免费看| 国精无码欧精品亚洲一区| 国产激情一区二区三区成人91| 免费观看日本污污ww网站一区| 人妻少妇精品视频三区二区一区 | 亚洲国产成人精品久久久国产成人一区二区三区综| 亚洲无线码在线一区观看| 日韩有码一区二区| 福利一区二区视频| 无码人妻一区二区三区在线水卜樱 | 中文字幕一区二区三区精彩视频| 成人区精品一区二区不卡| 中文字幕在线观看一区| 亚洲无线码在线一区观看| 免费一区二区三区| 69福利视频一区二区| 97精品一区二区视频在线观看 | 国产精品日韩一区二区三区| 国产一区二区精品久久91| 日韩十八禁一区二区久久| 国产vr一区二区在线观看| 精品日韩在线视频一区二区三区| 国产午夜毛片一区二区三区| 亚洲国产一区在线| 亚洲sm另类一区二区三区| 精品天海翼一区二区| 红桃AV一区二区三区在线无码AV| 一区二区三区福利视频免费观看| 无码乱码av天堂一区二区| 无码少妇一区二区三区芒果|