当前博客:关于快码FOF-Modbus支持库的使用讲解

171 次浏览【转载需注明来源】

博客作者:【快码FOF编程】

个性签名:寒窗苦读十年一朝凤舞九天

快码FOF最新版提供了Modbus支持库,这个支持库中提供了Modbus的:ModbusTCP客户端、ModbusUDP客户端、ModbusRTU客户端、ModbusTCP服务端等功能;本篇博客对该支持库进行相关的讲解。

首先是Modbus的串口实例:

局部变量 客户端ID = modbus客户端类.初始化串口客户端("/dev/ttyUSB0", { baudRate: 9600 }, (客户端状态) => {
    调试输出(客户端状态);
});
倒计时执行(() => {
    modbus客户端类.设置unitID(客户端ID, 1);
}, 1000);
启动时钟(() => {
    modbus客户端类.写入寄存器值(客户端ID, 5, [0,0xffff], (写入状态) => {
        调试输出(写入状态);
    });
}, 2000);

解释:上述代码进行了串口的连接,并向寄存器5的位置写入了[0,0xffff]数据。

解释:写入的数据是数组类型,例如也可以直接[0]

注意:如果想要读取数据,也可以参考下述代码:

局部变量 客户端ID = modbus客户端类.初始化串口客户端("/dev/ttyUSB0", { baudRate: 9600 }, (客户端状态) => {
    调试输出(客户端状态);
});
倒计时执行(() => {
    modbus客户端类.设置unitID(客户端ID, 1);
}, 1000);
启动时钟(() => {
    modbus客户端类.读取寄存器值(客户端ID,0,10,(读取状态)=>{
        调试输出(读取状态)
    })
}, 2000);

解释:读取寄存器从地址0开始的10个寄存器的值

 

关于Modbus客户端连接方式的讲解

Modbus客户端的操作命令几乎一样,唯一不同的则是几个连接方式,如下图:

modbus客户端类.初始化UDP客户端("127.0.0.1","8502",(客户端状态)=>{调试输出(客户端状态)})("127.0.0.1", 8052, (客户端状态) => {
    调试输出(客户端状态);
});
modbus客户端类.初始化TCP客户端("127.0.0.1", 8052, (客户端状态) => {
    调试输出(客户端状态);
});
modbus客户端类.初始化串口客户端("/dev/ttyUSB0", { baudRate: 9600 }, (客户端状态) => {
    调试输出(客户端状态);
});

关于ModbusTCP服务端的讲解

Modbus支持库也提供了TCP服务端的相关功能,下述有一个完整代码参考:

//这里执行相关的JS代码
局部变量 服务ID = modbusTCP服务类.启动modbusTCP服务(
    "0.0.0.0",
    8052,
    真,
    1,
    (服务状态) => {},
    (寄存器地址, 数据值, unitID) => {
        调试输出("客户端发起【写入寄存器值】触发", 寄存器地址, 数据值, unitID);
    },
    (寄存器地址, unitID, 回调函数) => {
        调试输出("客户端发起【读取寄存器值】触发");
        倒计时执行(() => {
            回调函数(空对象, 寄存器地址 + 8000);
        }, 10);
        回调函数(空对象, 寄存器地址 + 8000);
    },
    (寄存器地址, unitID) => {
        调试输出("客户端发起【读取输入寄存器】触发");
        返回 寄存器地址;
    },
    (寄存器地址, unitID) => {
        调试输出("客户端发起【读取线圈数据】触发");
        返回 新建对象 Promise(定义函数 (回调函数) {
            倒计时执行(() => {
                回调函数(寄存器地址 % 2 === 0);
            }, 10);
        });
    },
    (寄存器地址, 数据值, unitID) => {
        调试输出("客户端发起【写多线圈、写单线圈】触发", 寄存器地址, 数据值, unitID);
        返回;
    }
);
//上面启动了服务,下面启动客户端
局部变量 客户端ID = modbus客户端类.初始化TCP客户端("127.0.0.1", 8052, (客户端状态) => {
    调试输出(客户端状态);
});
倒计时执行(() => {
    modbus客户端类.设置unitID(客户端ID, 1);
}, 1000);
启动时钟(() => {
    modbus客户端类.写入寄存器值(客户端ID, 0, [0, 1], (写入状态) => {
        调试输出("写入成功", 写入状态);
    });
}, 2000);

关于modbusTCP服务类的相关案例下载:

modbusTCP服务端案例.zip

默认排序
Generic placeholder image
Generic placeholder image
快码FOF编程 Time: 2023-10-21 13:56:44

Modbus支持库来了

Generic placeholder image
轻声奏乐写代码 Time: 2023-10-21 14:15:39

看起来很不错,正好有modbus的温度检测器,用来试一试


关于快码FOF-Modbus支持库的使用讲解