前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Modbus TCP移植二

Modbus TCP移植二

作者头像
用户1605515
发布2020-02-25 11:35:03
2.2K0
发布2020-02-25 11:35:03
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

上次推送,给大家移植了lwip协议栈,我们这次移植modbus TCP就是基于这个网络协议栈,lwip协议栈是开源的应用非常广泛的TCP协议栈。特别是在嵌入式上。不清楚的可以参考之前的文章。

一张表看懂uIP和lwIP的区别

uIP和LwIP背后的那个牛逼男人

1. 摘要

本篇笔记主要介绍,在freeRTOS下,如何移植Modbus TCP通讯,采用lwip TCP/IP协议栈。采用IAR 8.32开发环境

2. 准备工作

1), 熟悉freeModbus开源协议栈和例程

2), 熟悉Modbus 协议数据单元

3), 复习上一次关于lwip协议栈的移植

3. 动手移植

这次主要基于上此推送过的移植好的lwip工程,直接移植freeModbus源码包,完成Modbus TCP因为Modbus RTU已经讲过很多次了,这次主要讲Modbus TCP。

首先准备好freeModbus 源码包,添加到工程里,上次我们是以ST的板子为例,这次手边没有ST的板子,只有NXP的 FRDM-K64F板子,我们就以这个板子为例,过程都一样,不管是谁家的板子。

添加modbus和port分组,将源码包含进来,同时别忘记设置路径

使能 TCP

移植修改最多的就是port下的文件,如果对freemodbus不是很熟悉的话,可以看看源码包里面的例程和对应的移植。这里直接拷贝源码包里面TCP对应移植下的port文件夹直接复制到工程,然后修改。

因为我们是基于freeRTOS系统,系统不同这个函数内容不同,但作用都一样

继续修改port文件夹下的文件,直至编译无错误,开始创建Modbus TCP任务,使用freeRTOS的任务创建函数动态创建一个任务,注释掉我们之前验证TCP协议栈的任务 tcpecho,

完成Mobdus TCP任务函数,主要初始化,使能,打开端口,打开端口,这里填写0或者502都可以,填写0,内部同样会转换为502使用,因为标准规定502端口留给Modbus TCP使用

完成应用层的函数,就是实现读写保持寄存器,输入寄存器,线圈等函数,这里不一一列举了。

编译无误后,下载到开发板,可以开启DHCP,也可以直连,我这里采用电脑直接连接,板子的IP是192.168.1.102,将电脑和板子设置到同一个网段192.168.1.108,使用modbus tcp测试软件测试

链接上会在黑框提示,并显示,我们来测试一下读取保持寄存器

也可以给一些模拟值测试,这里不在赘述,也可以用modscan测试一下

证明移植成功,随后就可以根据自己的应用添加更多实际应用,如读取ADC,控制继电器,控制电机等等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档