米尔电子
直播中

jf_50393217

5年用户 227经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[技术]

【米尔NXP i.MX 93开发板试用评测】4、使用golang搭建Modbus 服务器

Modbus是一种广泛使用的串行通信协议,主要用于工业环境中的电子设备之间的通信。Modbus服务器通常是指在Modbus通信网络中提供数据和控制服务的设备或软件。在Modbus协议中,服务器通常负责处理来自客户端(通常称为Modbus客户端或从站)的请求,并根据请求提供相应的数据或执行操作。

快速开发modbus服务器

可以使用golang快速部署一个modbus服务器。我们先在开发板上安装golang程序。我们可以在官网上下载aarch64,也就是arm64平台的压缩包

image.png

使用以下的指令

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地址和端口号,点击连接,连接上服务器
image.png

可以看到服务器这边也提示,远程客户端已连接上
image.png

我也不是很熟悉modbus的相关内容,只能先简单测试一下,等有机会熟悉更多的内容,再尝试去玩更多的东西

更多回帖

发帖
×
20
完善资料,
赚取积分