zoukankan      html  css  js  c++  java
  • 移植Modbus TCP二

    上次推送,给大家移植了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,控制继电器,控制电机等等。

  • 相关阅读:
    机器语言与汇编语言的关系
    环境变量
    .NET程序运行过程
    【转】计算机组成原理
    将大型 Page Blob 的页范围进行分段
    价格更低、SLA 更强的全新 Azure SQL 数据库服务等级将于 9 月正式发布
    把二元查找树转换成排序的双向链表
    初识C++
    Linux企业级项目实践之网络爬虫(25)——管理源代码之SVN
    Linux企业级项目实践之网络爬虫(24)——定制规则扩展为垂直爬虫
  • 原文地址:https://www.cnblogs.com/laoxiongzhijia/p/14687851.html
Copyright © 2011-2022 走看看