前一段時間有個Java技術棧的朋友聯繫到我,需要快速對接現有的無人值守稱重系統,這裏的對接是指替代現有系統,而非軟件層面的對接,也就是利用現有的硬件開發一套替代現有軟件的自動化系統。主要設備包括地磅秤、道閘、紅外對射傳感器、攝像頭、小票打印、LED顯示屏等等,全程使用LED顯示屏提示人員當前的操作狀態。
業務流程:
①攝像頭識別車牌號
②開啓前入磅道閘
③紅外監測是否抵達稱重區域
④採集地磅重量,自動判斷儀表讀數穩定
⑤攝像頭抓拍現場圖像,同時併發採集多路攝像頭形成現場檔案
⑥數據打包上傳到MES系統
⑦打印小票
⑧開啓後出磅道閘
這位同學基於java技術棧研究了一段時間進展較慢,應該是通過園子聯繫到我。我們簡單溝通了一下,確定使用IoTBrowser來開發,雖然前期沒有界面的展示需求,但是保留了UI控制的擴展性,最主要是用html+js開發起來簡單、高效。我這邊提供硬件層的驅動和js接口,他來實現上層業務邏輯控制。
因爲目前項目處於前期技術驗證階段,所以前期拿了2款硬件進行測試。第一款是地磅秤,據瞭解地磅秤儀表使用耀華A9,IoTBrowser已經自帶實現,js示例也提供了不需要二次開發。第二個就是控制道閘的開啓與關閉,這個還沒有實現,所以重點就是打通這個設備。
要進行硬件對接首先要知道對接的接口形式和數據協議,通過以下三步:
第一步,找到設備的品牌和型號;
第二步,快速在官網找到說明書,通過了解這塊設備是施耐德品牌C2000型號,一款以太網型開關量模塊,向下使用RS485接入道閘的串口,向上提供Modbus-TCP協議可以遠程控制。
第三步,通過說明書找到具體的控制協議,然鵝Modbus協議是使用原始的16進制描述,並沒有線圈相關的介紹。
找到了對應的協議,下一步就算摞起袖子開工。因爲對方在寧夏而我在長沙,需要代碼開發調試不可能在對方機器上安裝一套VS開發工具再遠程到他電腦,這樣很不方便,所以使用代理軟件將設備的Modbus端口臨時轉發出來,這樣跨越千里通過網絡就可以在異地聯調設備。
經過幾個小時的摸索,成功實現了設備的開啓和關閉。中間過程還算順利,就是使用NModbus時是使用的Int參數需要進行進制轉換,這裏浪費了一點時間。
// 開關控制 function open(address, startAddress, value) { var $msgWrite = $('#msgWrite'); dds.iot.com.exeCommand({ id: wid, name: "WriteSingleCoil", data: { slaveAddress: address, startAddress: startAddress, value: value } }, function (ar) { if (ar.Success) { $msgWrite.text('操作成功') } else { $msgWrite.text('操作失敗:' + ar.Message) } }) } //開關狀態讀取 function readStatus(address, startAddress, num) { dds.iot.com.exeCommand({ id: wid, name: "ReadCoils", data: { slaveAddress: address, startAddress: startAddress, numberOfPoints: num } }, function (ar) { if (ar.Success) { $msg.text('數據:' + ar.Data) } else { $msg.text('操作失敗:' + ar.Message) } }) } // 啓動稱重採集服務 function startWeight() { var $weight = $("#weight"); var type = 'test';// 修改爲實際型號 //var type = 'yh_a9';// 耀華XK3190-A9:yh_a9 var port = 1; var baudRate = 9600; // 調用電子秤 dds.iot.weight.start({ type: type, port: port, baudRate: baudRate, onUpdateWeight: function (data) { // 重量回調事件 $weight.html(data.weight); console.log('最新重量:'+ data.weight) }, complete: function (ar) { if (!ar.Success) { alert(ar.Message); } } }) }
上層封裝了js和簡單的UI參考示例,我這邊的工作就順利交付了。
IoTBrowser平臺開源地址:https://gitee.com/yizhuqing/IoTBrowser/