PROFINET IO设备协议栈的基本实现思路
PROFINET IO协议的难点在于其协议状态机不是一个分层的上下层关系,而是一种复杂的关系,因为各个状态机都有可能有接口调用,耦合度很高,一口气完整实现协议栈难度很大。
PROFINET IO设备通信的一般过程
对于一个PROFINET IO设备来说,其实就是一种协议转换器,将连接的输入模块的数据,如AI、DI等,用PROFINET协议打包成PROFINET IO协议的字节流。将PROFINET IO协议中的字节流转换成输出模块的数据,转成DO、AO等。因此可以考虑从IO设备和IO控制器通信的角度去分解协议栈及其协议机组成。
PROFINET IO设备协议栈实现简化思路
PROFINET IO设备的通信协议主要用于完成与IO控制器的通信,其中通信过程主要包含有:寻址流程、组态流程、数据交互流程和报警流程。如果说以上通信流程的每一个环节对应一种协议机,那么可以考虑用一种循序渐进的实现思路,考虑使用一种基本的代码框架来实现以上的流程,就可以满足大部分PROFINET IO设备的基本应用。
过程 | 协议 | 功能 | 层级 |
---|---|---|---|
寻址和设置 | DCP | 地址发现与设置 | 数据链路层 |
组态 | CMRPC | RPC包括参数读写 | 基于UDP |
IO数据 | CPM PPM | 接收和发送 | 数据链路层 |
报警 | Alarm | 报警 | 数据链路层 |
基于LwIP的协议栈设计
设计通信协议栈程序,需要具备内存管理、任务管理、进程间通信、信号量、时钟、定时处理等功能,从头开始难度巨大,而且容易出错。因此在一个已有成熟的代码体系中做升级比较合适,LwIP框架体系就十分满足要求,正所谓站在巨人的肩膀上看得远。
LwIP已经在arp.c中实现了数据链路层数据包的分发,因此只需在该文件中增加PROFIENT实时报文类型和LLDP报文类型的帧处理,保证实时数据优先处理,也就不需要另外设计一层映射协议机(LMPM)。
小结
一个基于嵌入式OS的LwIP协议栈采用分层架构,作为一款轻量级的TCPIP协议栈,不仅包括IP、UDP、ARP等协议,还实现了内存管理、数据包管理、时钟、定时等功能,简直就说居家旅行,开发新协议栈的第一选择。
posted on 2023-09-27 09:31 MichaelChen-99 阅读(780) 评论(0) 编辑 收藏 举报