目录
前言
掌握W5500网络模块的特点,参在此基础上,实现应用层modbus、httpd(web服务)协议编程。考模块厂商配套资料,完成TCP数据通信、DHCP自动获取IP的程序设计。
一.Modbus/TCP协议
1. Modbus/TCP报文格式
起始字符组:于前面再多加6个字符,以定义一些TCP/IP的需要 系数。说明如下:
Byte0:本次通信Message的编号以2 bytes整数(Byte 0、1)表示,此 byte为上字符,一般是由Master编号之,以区分每次Message。如果是Slave则将Master传来的Query Message照转至Response Message。
Byte1:本次通信Message的编号下字符。
Byte2:通信协议识别号码以2 bytes整数(Byte 2、3)表示,此 byte 为上字符,于此处为零。
Byte3:通信协议识别号码下字符,于此处为零。
Byte4:Message长度以2 bytes整数(Byte 4、5)表示,此 byte 为上字符(由Device Address至Data为止),因为长度不能超过256位,所以此位永远为零。
Byte5:Message长度下字符(由Device Address至Data为止)。
由Device Address至Data等资料,都是将 8 bits原始值转换为两码的十六进制ASCII码,所以其实际传送的字符数约为RTU格式的两倍。Data:数个字符是表示每个Function Code有不同数目的详细资料规定。
Modbus规定IP Port No. 为 502。
2.功能码
Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网线路上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。
启动Modbus事务处理的客户机创建Modbus应用数据单元。功能码向服务器指示将执行哪种操作。
Modbus协议建立了客户机启动的请求格式。
用一个字节编码Modbus数据单元的功能码域。有效范围是十制制1-255(128-255为异常响应保留)。当从客户机向服务器发送报文时,功能码域通过服务器执行哪种操作。
从客户机向服务器发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。这个域还包括离散项目和寄存器地址、处理项目的数量以及域中的实际数据字节数。
在某种请求中,数据域可以是不存在的,在此情况下服务器不需要任何附加信息。功能码仅说明操作。
功能码的类型
功能码主要分为有效功能码、异常功能码和错误功能码。
如果在一个正确接收Modbus ADU中,不出现与请求Modbus功能有关的差错,那么服务器至客户机的响应数据会包含请求中的正常功能码。如果出现与请求Modbus功能有关的差错,那么响应数据会包含一个异常码和错误码。
二.W5500以太网模块
1.简介
Niren_W5500模块是一款基于WIZnet W5500芯片的以太网模块,是泥人电子继 Niren_W5100模块后设计的一块性能更好、性价比更高的以太网模块。模块集成硬件化TCP/IP协议:内部32K字节存储器作TX/RX
缓存:支持10/100Mbps的传输速率;支持8个独立端口同时运行;同时模块还支持3.3V或5V电源供电,5V供电时还可以输出3.3V电源,方便用户在不同的单片机系统中使用;模块与单片机系统的通讯方式是简单、方便的SPI通信。
2.模块排针功能表
排针标识 功能说明 排针标识 功能说明
3.3V 3.3V电源输入引脚 5V 5V电源输入引脚
MISO SPI主机输入从机输出引脚 GND 电源地引脚
MOSI SPI主机输出从机输入引脚 RST W5500硬件初始化引脚(低电平有效)
SCS SPI SLAVE选择引脚&#