基于HTML/Javascript的网页如何与Modbus TCP通信?

7
我有一个使用Modbus TCP的设备。我想从中读取数据并在网页上显示(不需要中间服务器)。
我找到了一个几乎完全相同的Chrome扩展项目:

https://github.com/Cloud-Automation/chrome-modbus

它在javascript代码中使用了chrome.sockets.tcp。我希望能在我的网页上使用WebSockets来做同样的事情。似乎WebSockets可以在我的网页上(作为客户端)与设备(作为服务器)发送和接收信息。看起来WebSockets不受CORS影响。有人能指点我从哪里开始吗?(或者提供一个很好的javascript库)这可行吗?

有几个PLC制造商提供硬件或软件,可以将它们的协议转换为标准的TCP流量,以便您可以访问。例如,我们使用的PLC具有可选的硬件Web模块,可以使用ASP进行通信,因此可以实现AJAX。虽然可以在Node.js中编写自定义连接器,但对于来自Web开发背景的人来说可能会比较复杂。 - Shilly
谢谢回复。我真的在寻找一种不涉及任何硬件或服务器的解决方案。我不认为这与HTTP请求的概念有太大区别。使用Websockets,我认为我可以以设备理解的方式构建TCP数据包,然后发送一个Modbus TCP命令。 - dgProgrammer
@dgProgrammer,您能否详细说明您的解决方案并提供答案?我遇到了类似的问题,想了解一下您的经验。您使用了某个库吗?还是直接在WebSockets上实现了Modbus协议?您的代码是否作为开源代码可用?任何帮助或指针都将不胜感激。 - jrierab
1
我使用了以下JS库链接。我按照Readme中显示的示例进行操作,在我的cordova应用程序中运行良好。我必须包含库cz.blocshop.socketsforcordova。您是在Web浏览器还是Cordova手机应用程序中设置这个? - dgProgrammer
@dg程序员 我正在尝试在 Ionic 2 应用中使用这个方法,该应用在构建过程中使用Cordova。因此,你的解决方案看起来很有希望。我会调查一下并评论结果。非常感谢! - jrierab
@dgProgrammer 它在Android上运行了!我正在使用您建议的chrome-modbus库cordova-plugin-chrome-apps-sockets-tcp插件。非常感谢。您还应该考虑编写自己的答案并接受它,这样其他到达此处的人就不需要深入评论中寻找正确的方向。 - jrierab
3个回答

3

我成功地在没有服务器的情况下解决了这个问题。我使用了Chrome Sockets链接,同时也通过Cordova应用程序使其在智能手机上运行。Firefox也有一个套接字API,但我没有尝试为该浏览器解决此问题。


3

如果您的PLC不支持除Modbus之外的其他协议(例如post/get),那么没有中间服务器是不可能的。

如果您的PLC是“完全封闭”的,并且只有此端口/协议开放,则需要一个中间服务器,将Modbus TCP转换为HTML。使用Node-RED以及仪表板和Modbus流,您可以实现它。

如果您使用其他方法解决了这个问题,我想知道您是如何做到的。


0

我使用PLC Connect在VB中解决了这个问题,我使用VB将数据传递到数据库,并通过JavaScript获取数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接