用户工具

站点工具


icore4t_45

这是本文档旧的修订版!


实验四十五:Modbus TCP通信实验——电源监控 一、 实验目的与意义 1、 了解Modbus TCP通讯协议 2、 了解Modbus TCP与TCP协议的关系 3、 掌握Modbus Poll的使用方法 4、 掌握KEIL MDK 集成开发环境使用方法 二、 实验设备及平台 1、 iCore4T 双核心板及底板 2、 JLINK(或相同功能)仿真器 3、 以太网通讯线缆 4、 Keil MDK 开发平台 5、 装有WIN XP(及更高版本)系统的计算机 三、 实验原理 1. Modbus _TCP简介 Modbus通信协议由Modicon公司于1979年发明的,是全球最早用于工业现场的总线规约。它是一种主从通讯方式,采用服务器和客户机的模式记性通讯。Modbus通信协议具有多个变种,其具有支持串口(主要是RS-485总线),以太网多个版本,其中最著名的是Modbus RTU,Modbus ASCII和Modbus TCP三种。本实验主要针对Modbus TCP进行的一个数据通讯实验。 Modbus TCP协议基于TCP协议实现,其数据帧包含于TCP数据之中,本文以数据读取及其应答为例对Modbus TCP进行读取。数据读取请求报文格式如表1所示。 表1 Modbus TCP数据读取请求报文 事务处理标识 协议标识 报文长度 设备标识 功能码 起始地址 寄存器数量 2byte 2byte 2byte 1byte 1byte 2 byte 2 byte 事务处理标识符:两个字节,一般每次通讯后将加1,从而区别不同的通讯数据报文。 协议标识符:两个字节,Modbus TCP标识符为0x0000。 数据长度:两个字节,标识后面的数据量的大小,数据长度以字节为单位。 设备标识:用以标识连接在串行线或者网络上的远程服务端的地址。 功能码:一般为读取的寄存器的类型。 起始地址:寄存器的起始地址。 寄存器数量:要读取寄存器的数量。 数据读取应答报文格式如表2所示。 表2 Modbus TCP数据读取应答报文 事务处理标识 协议标识 报文长度 设备标识 功能码 数据长度 数据 2byte 2byte 2byte 1byte 1byte 1byte n byte 事务处理标识符:两个字节,与请求标识一致。 协议标识符:两个字节,与请求标识一致。 数据长度:两个字节,指示后面的数据量的大小,数据长度以字节为单位。 设备标识:用以标识连接在串行线或者网络上的远程服务端的地址。 功能码:一般为读取的寄存器的地址,与请求标识一致。 数据长度:传输的数据长度。 数据:寄存器的数据。 四、 实验程序 本实验主要基于TCP通讯和ADC电源监控两部分实现,本文对这两个方面不做过多描述。 1. 主函数

2. TCP数据发送函数 基于TCP中的服务器代码数据发送函数进行函数封装,设计一个发送指定数量数据的函数。

3. Modbus TCP协议处理 Modbus TCP的协议处理由多个子函数组成,函数代码如下。

五、 实验步骤 1、 把仿真器与iCore4T的SWD调试口相连(直接相连或者通过转接器相连); 2、 把iCore4T通过以太网线与计算机相连,为iCore4T供电; 3、 设置电脑IP地址(见附录1); 4、 打开Keil MDK 开发环境,并打开本实验工程; 5、 烧写程序到iCore4T上; 6、 打开Modbus Poll软件建立连接(见附录2),读取hold寄存器中的数据值,观察核心板返回的数据值。 六、 实验现象 Modbus Poll软件可看到核心板电源数据的检测值。

  附录1:电脑IP设置 打开控制面板→网络和 Internet→网络连接,选择对应的网卡,右键点击属性,设置IPV4的IP地址,如图所示、

  附录2:Modbus Poll软件建立连接 打开Modbus Poll,点击Connet,设置协议类型、IP地址和端口号,点击OK开始进行连接。

icore4t_45.1601120764.txt.gz · 最后更改: 2020/09/26 19:46 由 zgf