惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
爱范儿
爱范儿
罗磊的独立博客
V
V2EX
量子位
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
Jina AI
Jina AI
博客园 - 叶小钗
小众软件
小众软件
博客园 - 【当耐特】
Y
Y Combinator Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
博客园 - 聂微东
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
有赞技术团队
有赞技术团队
MongoDB | Blog
MongoDB | Blog
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 木子清

物联网浏览器(IoTBrowser)-驿站多系统查询 物联网浏览器(IoTBrowser)-js开发人脸识别 农产品实名收购系统功能说明之电子秤已支持类型和厂家型号 农产品实名收购系统功能说明之供应商RFID卡设计及用途 【农业数字化升级】农产品实名收购系统,让安全与效率同行 经历2年调整,重新出发! 物联网浏览器(IoTBrowser)-人脸快速搜索 探讨使用智能AI在农业养殖中的风险预警与应用 让摄像头带上智慧“智驭视界·AIEye” 物联网浏览器(IoTBrowser)-基于计算机视觉开发的应用“智慧眼AIEye” 码农的转型之路-全力以赴升级物联网浏览器(IoTBrowser) IoTBrowser V2.0:引领物联网时代的全新浏览器 车牌识别控制台 可快速整合二次开发 物联网浏览器(IoTBrowser)-使用深度学习开发防浸水远程报警 物联网浏览器(IoTBrowser)-整合机器学习yolo框架实现车牌识别 物联网浏览器(IoTBrowser)-MQTT协议集成和测试 物联网浏览器(IoTBrowser)-Modbus协议集成和测试 物联网浏览器(IoTBrowser)-电子秤模块及二次驱动开发 物联网浏览器(IoTBrowser)-顶尖OS2电子秤协议实现 物联网浏览器(IoTBrowser)-Web串口自定义开发
物联网浏览器(IoTBrowser)-Java快速对接施耐德网络IO网关
木子清 · 2024-04-15 · via 博客园 - 木子清

前一段时间有个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/