当前位置:网站首页>RMS TO EAP通过MQTT简单实现
RMS TO EAP通过MQTT简单实现
2022-07-05 09:38:00 【panda_225400】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
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端
测试RMS端
rabbitmq 在队列会产生mqtt-开头的队列,当你关闭客户端,这队列也随之消失。
总结
记录点点滴滴
边栏推荐
- Wechat applet - simple diet recommendation (3)
- Windows uses commands to run kotlin
- Are databases more popular as they get older?
- 揭秘百度智能测试在测试自动执行领域实践
- Online chain offline integrated chain store e-commerce solution
- 百度交易中台之钱包系统架构浅析
- What about wechat mall? 5 tips to clear your mind
- Theme. AppCompat. Light. Darkactionbar not found
- TDengine 连接器上线 Google Data Studio 应用商店
- 盗版DALL·E成梗图之王?日产5万张图像,挤爆抱抱脸服务器,OpenAI勒令改名
猜你喜欢
The comparison of every() and some() in JS uses a power storage plan
Oracle combines multiple rows of data into one row of data
基于宽表的数据建模应用
TDengine 连接器上线 Google Data Studio 应用商店
On July 2, I invite you to TD Hero online press conference
分布式数据库下子查询和 Join 等复杂 SQL 如何实现?
让AI替企业做复杂决策真的靠谱吗?参与直播,斯坦福博士来分享他的选择|量子位·视点...
How to improve the operation efficiency of intra city distribution
Idea debugs com intellij. rt.debugger. agent. Captureagent, which makes debugging impossible
Tdengine can read and write through dataX, a data synchronization tool
随机推荐
Apache DolphinScheduler 系统架构设计
Data visualization platform based on template configuration
Design and exploration of Baidu comment Center
On July 2, I invite you to TD Hero online press conference
Solve liquibase – waiting for changelog lock Cause database deadlock
移动端异构运算技术-GPU OpenCL编程(进阶篇)
About getfragmentmanager () and getchildfragmentmanager ()
Cut off 20% of Imagenet data volume, and the performance of the model will not decline! Meta Stanford et al. Proposed a new method, using knowledge distillation to slim down the data set
H. 265 introduction to coding principles
[two objects merged into one object]
E-commerce apps are becoming more and more popular. What are the advantages of being an app?
解决idea调试过程中liquibase – Waiting for changelog lock….导致数据库死锁问题
TDengine 已经支持工业英特尔 边缘洞见软件包
How to get the STW (pause) time of GC (garbage collector)?
oracle 多行数据合并成一行数据
Single chip microcomputer principle and Interface Technology (esp8266/esp32) machine human draft
TDengine 离线升级流程
揭秘百度智能测试在测试自动执行领域实践
Node の MongoDB Driver
Apache dolphin scheduler system architecture design