RMS TO EAP通过MQTT简单实现

27 篇文章 0 订阅
15 篇文章 10 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

EAP是MES与设备的桥梁,EAP通过SECS国际标准协议与机台进行数据传输。我们公司RMS也是通过SECS国际标准协议与机台进行数据传输,只是多了本该在MES上的业务逻辑,放到了RMS上,架构上没这么使用EAP这样分工明确,RMS把业务逻辑拿掉改造下也能成为EAP,我就简单试试


提示:以下是本篇文章正文内容,下面案例可供参考

一、MQTT

1、使用消息队列
MES和其他系统通过消息队列来发送信息给RMS,RMS收到消息在通过SECS\GEM 与半导体设备通讯
优点:
1、对系统进行解耦,提高响应速度,系统功能向内聚合,对外开放;
2、对系统异步功能进行剥离,减少功能耦合,提供开发效率;
有优点也有缺点,具体可网上查,这就不系讲
MQTT协议是一种消息列队传输协议,采用订阅、发布机制,订阅者只接收自己已经订阅的数据,非订阅数据则不接收,既保证了必要的数据的交换,又避免了无效数据造成的储存与处理。因此在工业物联网中得到广泛的应用.
我使用的是rabbitmq,因为rabbitmq 支持 MQTT 协议,还有MQTT 协议还支持用于Web消息推送,实现起来也比较简单,既支持WEB,有支持客户端,还是通用的协议,任何系统都能使用此协议与RMS通讯

二、使用步骤

1.rabbitmq支持 MQTT 协议

代码如下(示例):

第一种 rabbitmq_mqtt 提供与后端服务交互使用,对应端口1883。

rabbitmq-plugins enable rabbitmq_mqtt
第二种 rabbitmq_web_mqtt 提供与前端交互使用,对应端口15675。

rabbitmq-plugins enable rabbitmq_web_mqtt 

2.RMS监听消息和发送消息

在RMS加入代码如下(示例):
在这里插入图片描述
在这里插入图片描述
RMS监听到其他系统发过来消息,在通过SECS\GEM 与半导体设备通讯,机器返回结果后再通过MQTT将结果发给其他系统

3.Web监听消息和发送消息

代码如下(示例):

    <script type="text/javascript">
        // mqtt协议rabbitmq服务
        var brokerIp = "10.20.36.64";
        // mqtt协议端口号
        var port = 15675;
        // 接受推送消息的主题
        var topic = "test";

        // mqtt连接
        client = new Paho.MQTT.Client(brokerIp, port, "/ws", "clientId_" + parseInt(Math.random() * 100, 10));

        var options = {
            timeout: 3, //超时时间
            keepAliveInterval: 30, //心跳时间
            userName: "admin",  //用户名
            password: "admin",  //密码
            onSuccess: function () {
                console.log(("连接成功~"));
                client.subscribe("test1", { qos: 1 });
            },
            onFailure: function (message) {
                alert(message.errorMessage);
                console.log(("连接失败~" + message.errorMessage));
            }
        };
        // 考虑到https的情况
        if (location.protocol == "https:") {
            options.useSSL = true;
        }
        client.connect(options);
        console.log(("已经连接到" + brokerIp + ":" + port));

        // 连接断开事件
        client.onConnectionLost = function (responseObject) {
            console.log("失去连接 - " + responseObject.errorMessage);
        };

        // 接收消息事件
        client.onMessageArrived = function (message) {
            alert("222:"+message.payloadString);
            console.log("接受主题: " + message.destinationName + "的消息: " + message.payloadString);
            $("#arrivedDiv").append("<br/>" + message.payloadString);
            var count = $("#count").text();
            count = Number(count) + 1;
            $("#count").text(count);
        };

        // 推送给指定主题
        function sendMessage() {
            var a = $("#message").val();
            if (client.isConnected()) {
                var message = new Paho.MQTT.Message(a);
                message.destinationName = topic;
                client.send(message);
                alert(message);
            }
            else {
                alert("isConnected:" + client.isConnected());
            }
        }
    </script>

4.RMS和WEB客户端启动后

测试WEB端
会在rabbitmq里Qu
测试RMS端
在这里插入图片描述
rabbitmq 在队列会产生mqtt-开头的队列,当你关闭客户端,这队列也随之消失。
在这里插入图片描述


总结

记录点点滴滴

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

panda_225400

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值