Modbus是一种广泛使用的串行通信协议,主要用于工业环境中的电子设备之间的通信。Modbus服务器通常是指在Modbus通信网络中提供数据和控制服务的设备或软件。在Modbus协议中,服务器通常负责处理来自客户端(通常称为Modbus客户端或从站)的请求,并根据请求提供相应的数据或执行操作。
可以使用golang快速部署一个modbus服务器。我们先在开发板上安装golang程序。我们可以在官网上下载aarch64,也就是arm64平台的压缩包

使用以下的指令
wget https://golang.google.cn/dl/go1.23.1.linux-arm64.tar.gz
然后安装到板子上,使用以下的命令将golang程序安装到.bin目录里。
mkdir .bin
tar -C .bin/ -xzf go1.23.1.linux-arm64.tar.gz
echo "export PATH=$PATH:/home/root/.bin/go/bin" >> ~/.bashrc
source ~/.bashrc
然后设置国内源,将以下内容添加到.bashrc文件里
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
然后下载modbus支持包go get github.com/thinkgos/gomodbus/v2
创建新文件夹,切换到文件夹里,然后初始化go模块配置文件go mod init example.com/m/v2
编辑主程序vi main.go
添加以下内容到文件里
package main
import (
modbus "github.com/thinkgos/gomodbus/v2"
)
func main() {
srv := modbus.NewTCPServer()
srv.LogMode(true)
srv.AddNodes(
modbus.NewNodeRegister(
1,
0, 10, 0, 10,
0, 10, 0, 10),
modbus.NewNodeRegister(
2,
0, 10, 0, 10,
0, 10, 0, 10),
modbus.NewNodeRegister(
3,
0, 10, 0, 10,
0, 10, 0, 10))
err := srv.ListenAndServe(":502")
if err != nil {
panic(err)
}
}
运行程序go run main.go
在客户端填写设备的ip地址和端口号,点击连接,连接上服务器
可以看到服务器这边也提示,远程客户端已连接上
我也不是很熟悉modbus的相关内容,只能先简单测试一下,等有机会熟悉更多的内容,再尝试去玩更多的东西
更多回帖