LwIP之数据包管理

先看一下数据包结构体pbuf /* 数据包结构体 */ struct pbuf { struct pbuf *next; /* 下一个pbuf指针 */ void *payload; /* pbuf数据指针 */ u16_t tot_len; ...

2019-08-22 00:03:16

阅读数 14

评论数 1

LwIP之动态内存池

从动态内存池的API,我们发现一个特别的变量类型memp_t void memp_init(void); void *memp_malloc(memp_t type); void memp_free(memp_t type, void *mem); 关于memp_t定义很有趣,在枚举体里...

2019-08-11 23:38:31

阅读数 15

评论数 0

LwIP之动态内存堆

下面这段宏定义了内存堆 #ifndef LWIP_RAM_HEAP_POINTER LWIP_DECLARE_MEMORY_ALIGNED(ram_heap, MEM_SIZE_ALIGNED + (2U * SIZEOF_STRUCT_MEM)); #define LWIP_RAM_HEAP...

2019-08-11 22:26:50

阅读数 28

评论数 0

Modbus寄存器地址规则

Modbus协议定义的寄存器地址是5位十进制地址,即: 线圈(DO)地址:00000~09999 触点(DI)地址:10000~19999 输入寄存器(AI)地址:30000~39999 输出寄存器(AO)地址:40000~49999 由于上述各类地址是唯一对应的,因此有些资料就以其...

2019-08-09 00:32:31

阅读数 38

评论数 0

FreeModbus TCP传输初始化

先看一下初始化函数,参数只有端口。 /* modbus协议栈初始化 */ eMBErrorCode eMBTCPInit(USHORT ucTCPPort); 在网络通信过程中,502端口是专门为modbus保留的,其它应用不得占用该端口。在缺省配置的情况下,强制使用502端口。 ...

2019-08-07 23:50:36

阅读数 31

评论数 0

FreeModbus TCP传输

首先,在使能modbus协议栈的时候,会调用pvMBFrameStartCur函数 /* 使能modbus */ eMBErrorCode eMBEnable(void) { eMBErrorCode eStatus = MB_ENOERR; /* modbus还未使能 */ if(...

2019-08-07 23:47:59

阅读数 30

评论数 0

FreeModbus移植到STM32F107(以太网传输方式)

1.创建工程 配置好之后生成工程 2.将FreeModbus源码,拷贝到工程目录 3.将FreeModbus文件添加进工程 打开mbtcp.c文件发现,受MB_TCP_ENABLED宏定义的影响,所有代码都是灰的 因此跳...

2019-08-07 23:42:52

阅读数 48

评论数 0

Modbus以太网传输方式

通信结构 MODBUS TCP/IP 的通信系统可以包括不同类型的设备: 502端口是为MODBUS通信保留的,在缺省状态下,强制侦听这个口。 连接至TCP/IP 网络的MODBUS TCP/IP 客户机和服务器设备 互连设备,例如:在TCP/IP网络和串行链路子网之间互连的网桥、路由器或...

2019-08-06 23:38:26

阅读数 54

评论数 0

Modbus节点地址规则

Modbus 寻址空间有256 个不同地址。 地址 0 为广播地址。所有的子节点必须识别广播地址。 Modbus 主节点没有地址, 只有子节点必须有一个地址。该地址必须在Modbus 串行总线上唯一。 ...

2019-08-06 23:10:25

阅读数 40

评论数 0

CanFestival应用

1.初始化协议栈 2.在lifegrd.c中添加如下代码,用于将在预运行态的从节点切换到运行态。 3.修改bug,打开dcf.c文件修改原程序 4.SDO报文运用,下面举例读写SDO 5.PDO报文运用,异步传输模式下数据变化则要进行传输,因此需要实时扫...

2019-06-20 16:11:38

阅读数 106

评论数 0

CanFestival字典生成

主节点 1.打开objdictedit软件 2.新建工程,文件->新建 3.配置心跳报文,编辑->DS-301Profile 添加0x1016,删除0x1017,点击确认 设置节点1,定时1s。其中,bit0-15:倒计时时间ms、bit16-24:从...

2019-06-19 20:01:32

阅读数 82

评论数 0

FreeModbus线圈

线圈的访问属性为读写 对线圈的操作包括:读线圈(0x01)、写单个线圈(0x05)、写多个线圈(0x0F) 读线圈(0x01) 在一个远程设备中,使用该功能码读取线圈的1 至2000 连续状态。请求PDU 详细说明了起始地址,即指定的第一个线圈地址和线圈编号。从零开始寻址线圈。因此寻...

2019-04-08 21:55:08

阅读数 132

评论数 0

FreeModbus离散量输入

离散量输入的访问属性为只读 对离散量输入的操作包括:读离散量输入(0x02) 在一个远程设备中,使用该功能码读取离散量输入的1 至2000 连续状态。请求PDU 详细说明了起始地址,即指定的第一个输入地址和输入编号。从零开始寻址输入。因此寻址输入1-16 为0-15。根据数据域的每个比...

2019-04-08 21:44:25

阅读数 136

评论数 0

FreeModbus保持寄存器

保持寄存器的访问属性为读写 对保持寄存器的操作包括:读保持寄存器(0x03)、写单个保持寄存器(0x06)、写多个保持寄存器(0x10)、读写多个保持寄存器(0x17) 读保持寄存器(0x03) 在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求PDU说明了起始寄存器地址...

2019-04-08 21:39:22

阅读数 236

评论数 0

FreeModbus输入寄存器

输入寄存器的访问属性为只读 对输入寄存器的操作包括:读输入寄存器(0x04) 在一个远程设备中,使用该功能码读取1 至大约125 的连续输入寄存器。请求PDU 说明了起始地址和寄存器数量。从零开始寻址寄存器。因此,寻址输入寄存器1-16 为0-15。 将响应报文中的寄存器数据分成每个寄...

2019-04-08 21:22:32

阅读数 156

评论数 0

FreeModbus ASCII传输

首先,在使能modbus协议栈的时候,会调用pvMBFrameStartCur函数 /* 使能modbus */ eMBErrorCode eMBEnable(void) { eMBErrorCode eStatus = MB_ENOERR; /* modbus还未使能 */ if(e...

2019-04-08 13:39:22

阅读数 112

评论数 0

FreeModbus RTU传输

首先,在使能modbus协议栈的时候,会调用pvMBFrameStartCur函数 /* 使能modbus */ eMBErrorCode eMBEnable(void) { eMBErrorCode eStatus = MB_ENOERR; /* modbus还未使能 */ if(e...

2019-04-08 11:14:06

阅读数 170

评论数 0

FreeModbus串行传输初始化

先看一下初始化函数,参数包括传输模式、从机地址、端口号、波特率和奇偶校验。从函数大概能够猜到,初始化内容:选择传输模式,设置从机地址,配置串口。 /* 初始化Modbus协议栈 */ eMBErrorCode eMBInit(eMBMode eMode, UCHAR ucSlaveAddres...

2019-04-08 10:12:59

阅读数 70

评论数 0

FreeModbus移植到STM32F103(串行传输方式)

1.创建工程 2.将FreeModbus源码,拷贝到工程目录 3.将FreeModbus文件添加进工程 添加好之后,编译出现错误 4.移植底层接口 先看第一个错误,缺少port.h 借鉴AVR架构的程序,将demo里面AVR中的port文...

2019-04-07 22:32:20

阅读数 202

评论数 0

FreeModbus源码获取

1.进入官网:https://www.embedded-solutions.at/en/freemodbus/ 2.进入下载页面 3.下载源码 4.解压源码 5.查看FreeRTOS源码

2019-04-07 21:34:21

阅读数 261

评论数 0

提示
确定要删除当前文章?
取消 删除