張江辰,徐世許,孫學凱,朱君高
(青島大學 自動化學院,青島 266071)
在工業生產和國民經濟生活中,車輛稱重業務在各個行業具有廣泛應用,始終占據著重要的地位。國民經濟的迅速發展也使得各類企業對車輛稱重業務的需求量越來越大,這對一些企業的車輛稱重系統和車輛稱重業務部門造成了極大的壓力,同時也為車輛自動化稱重管理系統的發展帶來了新的挑戰與歷史機遇。某再生能源公司車輛稱重流程復雜且效率低下,在稱重時需要現場工作人員將車輛稱重信息錄入Excel表格,耗費大量時間成本,并且會發生現場工作人員與車主串通對稱重數據徇私舞弊,給企業帶來經濟上的損失[1]。針對以上存在的問題,設計了一套適用于企業的、能夠實現車輛自動化稱重、具有稱重管理的車輛自動化稱重管理系統。該系統應用后在防止稱重環節人員作弊的同時可大大提高用戶的稱重效率,并提高企業的管理水平。
自動化稱重管理系統硬件由上位機、歐姆龍CP1H系列PLC、梅特勒-托利多IND780型稱重儀表、梅特勒-托利多VTS257120-3418型數字式電子汽車衡、語音播報控制器、信號指示燈、出入口擋桿、紅外對射裝置、地感線圈、監控攝像頭組成。車輛稱重前,需要通過RFID讀卡器識別車輛稱重權限,權限通過后,PLC控制擋桿打開,兩側紅燈亮起,現場語音播報“車輛識別成功”,車輛開始駛入汽車衡;車輛完全駛入汽車衡后,紅外對射裝置檢測車輛是否完全上秤;完全上秤后,兩側檔桿落下,開始讀取車輛重量數據;數據讀取后系統自動進行車輛相關信息以及稱重數據的保存,完成數據保存后出口側檔桿抬起,語音播報“重量讀取完畢,請下稱”;當出口側地感線圈檢測到信號變化后,表示汽車已經完全離開汽車衡,出口側檔桿落下,稱重完成。IND780稱重儀表獲取到車輛重量后,通過工業以太網傳送到上位機中。系統硬件結構如圖1所示。

圖1 系統硬件結構圖
在車輛自動化稱重過程中,上位機需要對PLC發送命令指示門禁擋桿和語音播報器發出動作,當上位機讀取到穩定的車輛重量數據后也需要指示PLC完成對硬件的一系列操作。基于Fins TCP協議的以太網通信,可以實現上位機與歐姆龍PLC的通信[2]。具體實現過程與編程如下:
1)引入命名空間。用C#語言實現Fins TCP通信需要開啟Socket服務,將PLC作為服務器端,將上位機作為客戶端來進行通信。開啟Socket服務必須引入System.Net.Sockets和using System.Net命名空間。引入這兩項命名空間的代碼為:

2)構建Fins TCP協議中PLC的IP地址、端口號、本機節點等參數[3]。其中設定的string類型變量RemoteIP代表PLC的IP地址,int類型變量RemotePort代表端口號,byte類型變量 fra表示本機節點。相關代碼如下:

3)建立握手連接。所謂建立握手連接就是上位機向PLC發送握手連接命令,PLC接收到命令后向上位機返回命令,如果返回命令中無錯誤返回值代表握手連接成功。上位機向PLC發送握手的命令編碼如下所示:

4)寫位數據。對PLC寫數據就是將構建好的具有寫位數據命令Fins TCP協議幀發送給PLC。以下程序為構建寫位數據字段的程序,其中變量memory和sendBit分別表示內存地址和位號。

5)返回值判斷。在Fins TCP通信過程中,上位機對PLC發送Fins TCP協議指令碼,然后PLC返回響應碼,響應碼包含響應返回值,通過讀取返回值可以判斷指令是否執行成功。
IND780稱重儀表擁有EtherNet/IP接口,使用Socket服務可與上位機建立通信[5]。通信建立后,開啟稱重數據監聽線程,可實現上位機對稱重儀表中數據的實時讀取。以下為建立通信和監聽線程的主要程序。上位機讀取稱重數據的軟件流程圖如圖2所示。

圖2 稱重數據讀取軟件流程圖
1)建立通信。


2)建立監聽線程。

2.2.2 稱重儀表數據輸出格式
稱重儀表的數據輸出格式為標準連續輸出模式,數據以十六進制的ASCII碼傳輸,一條完整的數據共有18個字符。采用連續輸出模式一般禁用校驗和,因此除去數據標志E位,此時總位數為17。表1為IND780稱重儀表的標準連續輸出格式數據。

表1 儀表標準連續輸出格式
2.2.3 重量數據處理
上位機為了將從稱重儀表中讀取到的數據便于處理,首先需要將接收的數據從十六進制ASCII碼轉換為標準ASCII碼,并將其作為String類型數據進行處理。以下為通過String類型數據字符串中截取重量數據的處理過程:
1)首先使用String類的LastIndexOf(FindStr)方法,設定數據流中的字母“D”的十六進制數作為需要查找的字符參數Findstr,此時將返回字母“D”的在字符串中的下標。
2)依次向前查找字符串表示重量的起始下標,使用SubString(a,b)方法,將參數a設定為重量數據的起始下標,b作為向后查找的位數,由此可以截取到稱重數據。
3)最后上位機在連續獲取5次數據并且之間不超過設定誤差后,將此次稱重數據記錄,這樣就完成了一次穩定重量數據的讀取。
2.3.1 RS485通信建立
使用串口通信的方式實現上位機與RFID讀卡器的RS485通信,在C#語言環境下實現RS485通信串口通信一般需要調用SerialPort類來實現,在系統硬件設置選項中,使用SerialPort類可以根據RFID讀卡器的各項通信參數來設置“串口號”,“波特率”,“數據位”,“停止位”,“校驗位”,設置正確后使用硬件連接測試,連接成功后表示建立起通信。
2.3.2 RFID卡號讀取
建立起RS485通信后,根據RFID讀卡器廠家提供的SDK,只需調用SDK中設計好的類和方法,上位機便可以對讀卡器進行相應操作,廠家提供的SDK中的類和方法如表2所示。如上位機讀取識別卡信息時需要循環接收串口信息,系統在開機運行時會自動調用Card類的start()方法,保持開啟狀態[4],當讀卡器讀取到數據時,可以調用SDK中的讀取函數即read()方法對卡號信息進行讀取。

表2 RFID數據讀取類及方法表
卡號信息用字符串類型數據保存。在上位機成功提取到卡號信息后對該卡號進行數據庫中比對,進行比對的數據來源為卡信息表。如果卡信息表中存在該卡號,則表示比對成功允許車輛稱重,否則不允許稱重。在車輛稱重過程中不允許對卡號的讀取操作。對卡號讀取并進行判斷的軟件流程圖如圖3所示。

圖3 卡號讀取判斷軟件流程圖
車輛稱重管理系統在Windows7系統下的Visual Studio 2017平臺開發,用C#語言編程實現,具體實現的功能如下:
1)新增車輛信息錄入功能。在車輛入廠前,將需要寫入信息的RFID識別卡發放給運輸司機。進行制卡時,點擊卡信息維護界面上的增加按鈕,將卡放到讀卡器上,系統會自動讀取卡號[5]。然后輸入各類信息如車牌號、貨物名稱、發貨單位等,最后保存便完成制卡。新增車輛信息錄入界面如圖4所示。

圖4 新增車輛信息錄入界面
2)系統狀態監視功能。為實時顯示車輛的稱重過程狀態、展示系統讀取到的各類信息,因此系統的主界面需要監控并顯示各類數據與狀態[6]。實時狀態監視界面主要由車輛狀態監視、重量數據顯示、車輛信息顯示、臨時表歷史記錄顯示、稱重歷史曲線等組成。稱重顯示主界面如圖5所示。

圖5 車輛稱重顯示主界面
3)稱重數據查詢功能。數據查詢可以根據時間段和多個查詢條件如車牌號、卡號、貨物名稱、重量范圍等得到所有的稱重數據記錄[7],在數據查詢中時間條件是必須輸入條件,其他條件可以自由組合。選擇好查詢條件后,點擊確認查詢,可以查詢到數據庫中記錄的具體信息。數據查詢界面如圖6所示。

圖6 稱重數據查詢界面
本文根據企業具體稱重需求,結合歐姆龍PLC與Visual Studio 2017環境下開發的上位機軟件,設計了車輛自動化稱重管理系統。系統具有車輛權限檢測、動態檢重、數據讀取、數據存儲等功能,能夠將車輛信息自動錄入數據庫中,方便用戶查詢、追溯。目前該系統已經在企業中投入使用,減少了人工成本,提高了檢重效率,運行效果穩定可靠,為企業提升了經濟效益。