总线/通信笔记2 —— Modbus TCP 的Client使用
发布日期:2021-07-01 04:04:07
浏览次数:3
分类:技术文章
本文共 1941 字,大约阅读时间需要 6 分钟。
总线/通信笔记2 —— Modbus TCP的使用
1. libmodbus库的使用
Step 1:初始化RTU/TCP指针
modbus_t *ctx;
ctx = modbus_new_tcp(“192.168.191.1”,502);
Step 2:初始化变量
uint16_t tab_reg[20];
Step 3:建立连接
modbus_connect(ctx);
Step 4:设置从站ID
rc = modbus_set_slave(ctx, SLAVE_ID);
Step 5:读写寄存器/数据
modbus_read_registers(ctx, IndexStart, IndexEnd, tab_reg);
Step 6:关闭连接
modbus_close(ctx);
modbus_free(ctx);
2. Modbus TCP开发实践
案例1
Step 1:新建工程
Step 2:将config.h、modbus.h等头文件以及modbus.dll、modbus.lib文件复制到工程目录下,如下图所示。
Step 3:把modbus.h和modbus.lib文件添加到资源文件中,如下图所示:
剩下的不多说,直接上代码
#include#include #include #include #include #include "modbus.h"#define LOOP 1 //循环次数#define SERVER_ID 1 //从端设备地址#define ADDRESS_START 0 //测试寄存器起始地址#define ADDRESS_END 99//测试寄存器结束地址using namespace std;int main(void){ modbus_t *ctx; int rc; int nb=10; uint16_t tab_reg[20]; /*TCP*/ ctx = modbus_new_tcp("192.168.191.1",502); //创建TCP类型的容器// modbus_set_debug(ctx, TRUE); //设置debug模式 if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connection failed:%d\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } rc = modbus_set_slave(ctx, SERVER_ID); if (rc == -1) { fprintf(stderr, "Invalid slave ID\n"); modbus_free(ctx); return -1; } rc = modbus_read_registers(ctx, 0, nb, tab_reg); if (rc == -1) { fprintf(stderr, "%s\n", modbus_strerror(errno)); return -1; } for (int i = 0; i < nb; i++) { printf("reg[%d]=%d \n", i, tab_reg[i]); } modbus_close(ctx); modbus_free(ctx); system("pause"); return 0;}
案例2
#include#include #include #include #include #include "modbus.h"#include "config.h"#define LOOP 1 //循环次数#define SERVER_ID 1 //从端设备地址#define ADDRESS_START 0 //测试寄存器起始地址#define ADDRESS_END 99//测试寄存器结束地址using namespace std;int main(void){ cout<<"start"<
3. Modbus TCP多机通信应用案例
留坑待填
转载地址:https://miracle.blog.csdn.net/article/details/94582511 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月16日 20时13分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP之 使用PHPMailer插件实现邮件发送功能
2019-05-01
《增长黑客》(肖恩·艾利斯)学习笔记——第二部分 实战
2019-05-01
python使用HTMLTestRunner查看运行函数
2019-05-01
python的ImportError
2019-05-01
linux下安装jenkins+git+python
2019-05-01
解决uiautomatorviewer中添加xpath的方法
2019-05-01
性能测试的必要性评估以及评估方法
2019-05-01
Spark学习——利用Mleap部署spark pipeline模型
2019-05-01
Oracle创建表,修改表(添加列、修改列、删除列、修改表的名称以及修改列名)
2019-05-01
使用redis实现订阅功能
2019-05-01
对称加密整个过程
2019-05-01
java内存模型
2019-05-01
volatile关键字
2019-05-01
tomcat_关闭
2019-05-01
Servlet_快速入门
2019-05-01
Servlet_生命周期方法
2019-05-01
Servlet_体系结构
2019-05-01
Servlet_urlpartten配置
2019-05-01
Request_原理
2019-05-01