查看: 1340|回复: 6
收起左侧

[综合教程经验] 【一起摸鱼】1.2Node.js上位机应用开发-Modbus通讯实现

mingiii 2022-8-12 15:29:35 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x

1 创建 Node.js 项目

接上回书说到,我们成功创建了一个简单的 Node.js 程序,下一步我们要开始创建一个能与 Modbus TCP Server 通讯的项目,那么最先需要用到的就是 npm 命令。

1.1 NPM 包管理

安装 Node.js 时,应该已经同时安装了 npm,它是 Node.js 最广泛使用的包管理和分发工具。

打开终端,输入 npm -v,如果得到以下返回,则说明 npm 已经安装成功。

> npm -v
6.14.14

1.2 初始化项目

首先创建一个项目文件夹,在终端中进入该文件夹,然后输入 npm init,随后按照下图配置项目。(# 后为注释)

> npm init
Debugger attached.
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (2-modbus-tcp with h5u) h5u-modbus-tcp-client # 项目名
version: (1.0.0) # 版本
description: This is a modbus client for inovance h5u plc # 描述
entry point: (modbus-client.js) # 入口文件
test command: node modbus-client.js # 测试命令
git repository: # git仓库
keywords:
author: mingiii # 作者
license: (ISC)
About to write to package.json:
{
  "name": "h5u-modbus-tcp-client",
  "version": "1.0.0",
  "description": "This is a modbus client for inovance h5u plc",
  "main": "modbus-client.js",
  "scripts": {
    "test": "node modbus-client.js"
  },
  "author": "mingiii",
  "license": "ISC"
}
Is this OK? (yes)

自此项目初始化完成。

2 下载 modbus-serial 库

NPM官网 我们可以看到一个比较活跃的,由纯 JavaScript 实现的 Modbus-RTU / TCP 库 “modbus-serial”

这里我们就直接使用这个库进行与 H5U 的通讯

打开终端,在我们的项目文件夹下输入指令 npm i modbus-serial

如果在安装时遇到问题,请尝试 npm i modbus-serial --unsafe-perm --build-from-source

> npm i modbus-serial
+ modbus-serial@8.0.5
added 55 packages from 43 contributors and audited 55 packages in 9.946s

20 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

上图所示代表下载成功。

如果由于网络环境无法成功下载的,可以尝试使用国内镜像 NPM MIRROR

3 创建一个 Modbus TCP Client

完成了依赖下载,我们新建一个 modbus-client.js 文件来完成我们的 Modbus TCP 客户端。

H5U 的 Modbus 地址请参考 《H5U系列可编程逻辑控制器 编程与应用手册》5.5.2 功能码与地址

// 创建一个空的modbus客户端
var ModbusRTU = require("modbus-serial");
var client = new ModbusRTU();

// 连接TCP,192.168.1.88为 H5U 默认 IP
client.connectTCP("192.168.1.88", { port: 502 });
client.setID(1);

// 每1000ms将1、2、3、4、5分别写入D0到D4,之后回调read函数
setInterval(function () {
  client.writeRegisters(0, [1, 2, 3, 4, 5])
    .then(read);
}, 1000);

function read () {
  // 读取并打印D0到D4
  client.readHoldingRegisters(0, 5)
    .then(console.log);
}

4 读写 H5U PLC

在 H5U 中定义 D0 到 D4 共计5个变量。

连接网线至 PLC 并下载程序,然后将 PLC 置 run。

在电脑上打开终端,在项目文件夹下输入 npm test, 即可见到如下输出(按 ctrl + c 中止程序)

> npm test
> node modbus-client.js

{
  data: [ 1, 2, 3, 4, 5 ],
  buffer: <Buffer 00 01 00 02 00 03 00 04 00 05>
}
{
  data: [ 1, 2, 3, 4, 5 ],
  buffer: <Buffer 00 01 00 02 00 03 00 04 00 05>
}
...

此时可见 PLC 监控值变为我们所定义的值,Node.js 与 PLC 的 Modbus TCP 已经成功实现。

5 参考文献

  1. modbus-serial document / kzamir, 2021
  2. H5U系列可编程逻辑控制器 编程与应用手册 / 汇川,2021.08

6 讨饭用附件

附件不包含依赖,使用前请输入npm i安装
给点给点


【一起摸鱼】1.2Node.js上位机应用开发-Modbus通讯实现.pdf (199.38 KB, 下载次数: 2, 售价: 10 )




上一篇:H5U_点位控制样例程序(附配套资源)
下一篇:h5u插补

已有 2 人打赏作者

SSSS_AAAA 赏了楼主25水滴 陈婧 赏了楼主25水滴
回复 邀请回答送花

使用道具 举报

mingiii 2022-8-12 17:43:13 来自手机 | 显示全部楼层
提醒一下,论坛的markdown解析器有时候会把小于号解析成< 大于号解析成>复制代码的话要注意一下
回复 送花

使用道具 举报

Patrical 2022-8-13 08:40:41 | 显示全部楼层
内容丰富,感谢分享
回复 送花

使用道具 举报

刘炼国 2022-8-13 09:49:02 | 显示全部楼层
内容丰富,感谢分享
回复 送花

使用道具 举报

mingiii 2022-8-15 08:23:37 | 显示全部楼层
顶一顶
回复 送花

使用道具 举报

dianqizai 2022-8-18 08:04:50 | 显示全部楼层

内容详细,感谢分享
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部