物聯網瀏覽器(IoTBrowser)-Java快速對接施耐德網絡IO網關

 

前一段時間有個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/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章