怎么制作网站应用,wordpress页眉显示购物车,文旅网站界面设计,佛山网站建设改版文章目录 1 前言2 简介2 .1 什么是Modbus TCP#xff1f;2.2 Modbus TCP指令介绍2.3 请求数据过程2.4 Modbus TCP协议优点2.5 Modbus TCP应用场景 3 WIZnet以太网芯片4 Modbus TCP示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意… 文章目录 1 前言2 简介2 .1 什么是Modbus TCP2.2 Modbus TCP指令介绍2.3 请求数据过程2.4 Modbus TCP协议优点2.5 Modbus TCP应用场景 3 WIZnet以太网芯片4 Modbus TCP示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 Modbus TCP协议是一种广泛应用于工业自动化、楼宇自控、能源管理等领域的数据通信协议。它基于TCP/IP网络将Modbus协议封装在TCP/IP协议栈中使用以太网作为物理层通过TCP连接来实现设备之间的通信。 W5100S/W5500是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器同时也是一颗工业级以太网控制芯片。本教程将介绍W5100S/W5500以太网FTP应用的基本原理、使用步骤、应用实例以及注意事项帮助读者更好地掌握这一技术。
2 简介
2 .1 什么是Modbus TCP Modbus TCP实质上是Modbus协议或Modbus RTU在以太网TCP/IP网络上的运行。像Modbus RTU一样Modbus TCP也采用客户端/服务器原理但在这种情况下客户端主设备会启动来自服务器从设备的请求和响应。任何设备都可以成为客户端或服务器。 Modbus TCP不需要计算校验和因为较低层已经提供了校验和保护。它使用10 Mbps的以太网标准来传输Modbus消息的整个结构。Modbus TCP协议提供了在单个网络中的许多设备之间的快速通信。 2.2 Modbus TCP指令介绍
Modbus TCP协议的数据帧可以分为两部分MBAP和PDU。
MBAPModbus应用协议报文头 事务处理标识一个递增的数字每次发送消息递增一下尽量不重复因为占用2个字节所以范围是0~65535。 协议标识固定值0表示Modbus TCP协议。 长度等于后面字段的长度。 单元标识符从机地址也就是slave id。 PDU协议数据单元 功能码Modbus规定了多个功能每个功能都设定一个功能码。你要对从机做什么操作那么就在这里设定好从机读取到这个数据就知道要做什么。 数据对于主机来说就是想要操作从机寄存器里的哪些数据。 Modbus TCP协议中定义了多种功能码包括 0x01读线圈 0x05写单个线圈 0x0F写多个线圈 0x02读离散量输入 0x04读输入寄存器 0x03读保持寄存器 0x06写单个保持寄存器 0x10写多个保持寄存器 每种功能码对应的操作和数据格式都有所不同。
例如功能码0x01用于读取线圈请求格式为“MBAP 功能码 起始地址H 起始地址L 数量H 数量L”
响应格式为“MBAP 功能码 数据长度 数据”。
2.3 请求数据过程
在典型的Modbus TCP通信过程中
Modbus TCP客户端也称为主设备向Modbus TCP服务器也称为从设备发送请求。这个请求包含功能码指示要执行的操作类型并且可能还包括数据地址和值具体取决于功能码。收到请求后Modbus TCP服务器根据功能码处理它。例如如果功能码指示读取操作服务器将访问其内存中的指定数据地址并准备相应的数据以进行响应。然后Modbus TCP服务器向客户端发送响应。这个响应包含功能码和请求的数据对于读取操作或对执行的操作的确认对于写入操作。Modbus TCP客户端接收到服务器的响应并根据需要处理数据。 2.4 Modbus TCP协议优点
MODBUS TCP协议的优点包括
灵活的网络拓扑结构MODBUS TCP基于以太网通信因此其网络拓扑结构更为灵活。从串行链路上一主多从的构造演变为多客户端/多服务器端的构造模型。易于寻址使用MODBUS TCP主站设备客户端可以通过IP地址找到MODBUS从设备服务器并通过MODBUS网关连接到另一个MODBUS RTU网络。主从模式MODBUS协议的工作原理是基于主从模式。在一个网络中MODBUS协议通过主设备客户端和从设备服务器之间的请求-应答机制来交换信息。这种模式使得通信过程清晰且易于理解。开放性MODBUS是一种开放的协议这意味着它可以被任何厂商的设备所支持从而提高了设备间的互操作性。简单性MODBUS协议简单易懂易于实现和维护。高效性MODBUS TCP协议在TCP/IP网络上运行利用了TCP/IP协议的优点如高效的数据传输、错误检测和修复等。
2.5 Modbus TCP应用场景
Modbus TCP协议的应用场景广泛以下是一些主要的领域
工业自动化Modbus TCP协议在工业自动化领域被广泛应用特别是在智能制造和工业物联网中。它允许设备之间进行可靠的通信以实现生产过程的自动化和控制。楼宇自动化在楼宇自动化领域Modbus TCP协议可以用于连接楼宇设备如温度控制器、照明系统、安全系统等以实现节能和舒适的室内环境。能源管理在能源管理领域Modbus TCP协议可以用于监测和控制系统中的能源使用。通过连接能源测量设备和控制系统可以实现实时能源监测和优化控制降低能源消耗并提高能源效率。过程控制在过程控制领域Modbus TCP协议可以用于连接传感器和执行器以实现实时监控和控制。它可以应用于各种工业过程如化工、制药、食品加工等。智能家居在智能家居领域Modbus TCP协议可以用于连接智能家居设备如智能灯泡、智能插座、智能安防等以实现家庭自动化和智能控制。
3 WIZnet以太网芯片
WIZnet 主流硬件协议栈以太网芯片参数对比
ModelEmbedded CoreHost I/FTX/RX BufferHW SocketNetwork PerformanceW5100STCP/IPv4 MAC PHY8bit BUS, SPI16KB4Max.25MbpsW6100TCP/IPv4/IPv6, MAC PHY8bit BUS, Fast SPI32KB8Max.25MbpsW5500TCP/IPv4, MAC PHYFast SPI32KB8Max 15Mbps
W5100S/W6100 支持 8bit数据总线接口网络传输速度会优于W5500。W6100 支持IPV6与W5100S 硬件兼容若已使用W5100S的用户需要支持IPv6可以Pin to Pin兼容。W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存。
4 Modbus TCP示例概述以及使用
4.1 流程图 程序的运行框图如下所示 4.2 准备工作核心
软件
Visual Studio CodeWIZnet UartToolModbus Poll
硬件
W5100S IO模块 RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板Micro USB 接口的数据线TTL 转 USB网线
4.3 连接方式 通过数据线连接PC的USB口主要用于烧录程序也可以虚拟出串口使用 通过TTL串口转USB连接UART0 的默认引脚 RP2040 GPIO0UART0 TX ---- USB_TTL_RXRP2040 GPIO1UART0 RX ---- USB_TTL_TX 使用模块连接RP2040 进行接线时 RP2040 GPIO16 ---- W5100S MISORP2040 GPIO17 ---- W5100S CSRP2040 GPIO18 ---- W5100S SCKRP2040 GPIO19 ---- W5100S MOSIRP2040 GPIO20 ---- W5100S RST 通过PC和设备都通过网线连接路由器LAN口
4.4 主要代码概述 我们使用的是WIZnet官方的ioLibrary_Driver库。该库支持的协议丰富操作简单芯片在硬件上集成了TCP/IP协议栈该库又封装好了TCP/IP层之上的协议我们只需简单调用相应函数即可完成协议的应用。
第一步在modbus_tcp.c文件中引用对应的库文件。
第二步宏定义常量和定义全局变量。
第三步定义两个函数包括一个1秒定时器回调函数用于处理DHCP超时处理一个设置网络地址函数。
第四步主函数首先是对串口和SPI进行初始化以及链路检测。然后是设置W5100S的网络地址首先使用DHCP的方式进行获取失败后使用预设的静态IP地址。然后将LED GPIO的初始化。最后则是在主循环里面跑Modbus TCP状态机程序。
第五步在状态机中首先是打开一个TCP Server模式的socket然后等待客户端连接。在连接成功之后会等待客户端的请求信息接收到请求信息之后会对包内容解析并作出响应的操作以及回复。
/* main function */
int main()
{struct repeating_timer timer; // Define the timer structure/*mcu init*/stdio_init_all(); // Initialize the main control peripherawizchip_initialize(); // spi initializationwizchip_setnetinfo(net_info); // Configure once first/*dhcp init*/DHCP_init(SOCKET_ID, ethernet_buf); // DHCP initializationadd_repeating_timer_ms(1000, repeating_timer_callback, NULL, timer); // Add DHCP 1s Tick Timer handlerprintf(wiznet chip modbus tcp server example.\r\n);network_init(net_info); // Configuring Network Informationprint_network_information(get_info); // Read back the configuration information and print it/* LED gpio init */gpio_init(PICO_DEFAULT_LED_PIN);gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);while (true){do_Modbus(SOCKET_ID);}
}/* Do_Modubs function */
void do_Modbus(uint8_t sn)
{uint8_t state 0;uint16_t len;getSIPR(lip);state getSn_SR(sn);switch (state){case SOCK_SYNSENT:break;case SOCK_INIT:listen(sn);if (!b_listening_printed){b_listening_printed 1;printf(Listening on %d.%d.%d.%d:%d\r\n,lip[0], lip[1], lip[2], lip[3], local_port);}break;case SOCK_LISTEN:break;case SOCK_ESTABLISHED:if (getSn_IR(sn) Sn_IR_CON){setSn_IR(sn, Sn_IR_CON);printf(Connected\r\n);getSn_DIPR(sn, rip);port getSn_DPORT(sn);printf(RemoteIP:%d.%d.%d.%d Port:%d\r\n, rip[0], rip[1], rip[2], rip[3], port);if (b_listening_printed)b_listening_printed 0;}len getSn_RX_RSR(sn);if (len 0){mbTCPtoEVB(sn);}break;case SOCK_CLOSE_WAIT:disconnect(sn);break;case SOCK_CLOSED:case SOCK_FIN_WAIT:close(sn);socket(sn, Sn_MR_TCP, local_port, Sn_MR_ND); // Sn_MR_NDbreak;default:break;}
}/* mbTCPtoEVB function */
void mbTCPtoEVB(uint8_t sn)
{int32_t ret;if (MBtcp2evbFrame() ! 0) // Frame received complete{uint16_t maxsize 0;if (pucASCIIBufferCur[0] 0x01)//Check whether the device address is 0x01{if ((uint8_t)pucASCIIBufferCur[1] 0x05)//Write to a single device{if ((uint8_t)pucASCIIBufferCur[4] 0xff){gpio_put(PICO_DEFAULT_LED_PIN, 1);printf(LED ON\r\n);}else if ((uint8_t)pucASCIIBufferCur[4] 0x00){printf(LED OFF\r\n);gpio_put(PICO_DEFAULT_LED_PIN, 0);}send(sn, recv_data, recv_len);}else if ((uint8_t)pucASCIIBufferCur[1] 0x01)//Read Write to a single device{if (recv_data[recv_len - 1] ! 0x01){printf(len error!\r\n);}else{printf(Read OK!\r\n);send_data[0] recv_data[0];send_data[1] recv_data[1];send_data[2] recv_data[2];send_data[3] recv_data[3];send_data[4] 0x00;send_data[5] 0x04;send_data[6] 0x01;send_data[7] 0x01;send_data[8] 0x01;send_data[9] gpio_get(PICO_DEFAULT_LED_PIN);send_len 10;send(sn, (uint8_t *)send_data, send_len);memset(send_data, 0, send_len);}}else{printf(error code!\r\n);}}else{printf(address error!\r\n);}}
}
4.5 结果演示
1.用Modbus Poll连接到W5100S上 2.发送写指令打开LED灯 3.设置读指令为0x01读取个数为1 4.发送读取一次指令 5.读取成功并在Modbus Poll上显示出LED的状态 5 注意事项
设置和读取的地址必须为1并且读取个数必须为1否则无法写入或读取信息。如需修改请修改app/MODBUS_TCP_SERVER目录下的mb.c文件中的mbTCPtoEVB函数。如果想用WIZnet的W5500来实现本章的示例我们只需修改两个地方即可
(1)在library/ioLibrary_Driver/Ethernet/下找到wizchip_conf.h这个头文件将_WIZCHIP_ 宏定义修改为W5500。
(2)在library下找到CMakeLists.txt文件将COMPILE_SEL设置为ON即可OFF为W5100SON为W5500。
6 相关链接
WIZnet官网
WIZnet官方库链接
本章例程链接
想了解更多评论留言哦 文章转载自: http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn http://www.morning.qjmnl.cn.gov.cn.qjmnl.cn http://www.morning.kczkq.cn.gov.cn.kczkq.cn http://www.morning.qfths.cn.gov.cn.qfths.cn http://www.morning.ldspj.cn.gov.cn.ldspj.cn http://www.morning.dzqr.cn.gov.cn.dzqr.cn http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn http://www.morning.nlryq.cn.gov.cn.nlryq.cn http://www.morning.xdhcr.cn.gov.cn.xdhcr.cn http://www.morning.mpngp.cn.gov.cn.mpngp.cn http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn http://www.morning.kcbml.cn.gov.cn.kcbml.cn http://www.morning.hfnbr.cn.gov.cn.hfnbr.cn http://www.morning.yfnjk.cn.gov.cn.yfnjk.cn http://www.morning.rszt.cn.gov.cn.rszt.cn http://www.morning.ngcbd.cn.gov.cn.ngcbd.cn http://www.morning.dwwlg.cn.gov.cn.dwwlg.cn http://www.morning.qnypp.cn.gov.cn.qnypp.cn http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.gsksm.cn.gov.cn.gsksm.cn http://www.morning.qmmfr.cn.gov.cn.qmmfr.cn http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn http://www.morning.wschl.cn.gov.cn.wschl.cn http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn http://www.morning.dnmgr.cn.gov.cn.dnmgr.cn http://www.morning.rzbgn.cn.gov.cn.rzbgn.cn http://www.morning.zztkt.cn.gov.cn.zztkt.cn http://www.morning.yllym.cn.gov.cn.yllym.cn http://www.morning.qkdcb.cn.gov.cn.qkdcb.cn http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn http://www.morning.skdhm.cn.gov.cn.skdhm.cn http://www.morning.qqpg.cn.gov.cn.qqpg.cn http://www.morning.zwyuan.com.gov.cn.zwyuan.com http://www.morning.lbfgq.cn.gov.cn.lbfgq.cn http://www.morning.llyqm.cn.gov.cn.llyqm.cn http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn http://www.morning.jpfpc.cn.gov.cn.jpfpc.cn http://www.morning.nfks.cn.gov.cn.nfks.cn http://www.morning.bwznl.cn.gov.cn.bwznl.cn http://www.morning.ssjtr.cn.gov.cn.ssjtr.cn http://www.morning.mcndn.cn.gov.cn.mcndn.cn http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn http://www.morning.ghwdm.cn.gov.cn.ghwdm.cn http://www.morning.knjj.cn.gov.cn.knjj.cn http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn http://www.morning.jrrqs.cn.gov.cn.jrrqs.cn http://www.morning.kpxnz.cn.gov.cn.kpxnz.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn http://www.morning.lmyq.cn.gov.cn.lmyq.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.a3e2r.com.gov.cn.a3e2r.com http://www.morning.gydth.cn.gov.cn.gydth.cn http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn http://www.morning.tpnxj.cn.gov.cn.tpnxj.cn http://www.morning.lffgs.cn.gov.cn.lffgs.cn http://www.morning.bchfp.cn.gov.cn.bchfp.cn http://www.morning.sgrdp.cn.gov.cn.sgrdp.cn http://www.morning.hnkkm.cn.gov.cn.hnkkm.cn http://www.morning.rfbt.cn.gov.cn.rfbt.cn http://www.morning.gbxxh.cn.gov.cn.gbxxh.cn http://www.morning.zlhcw.cn.gov.cn.zlhcw.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.nbybb.cn.gov.cn.nbybb.cn http://www.morning.plqhb.cn.gov.cn.plqhb.cn http://www.morning.wpmqq.cn.gov.cn.wpmqq.cn http://www.morning.nzzws.cn.gov.cn.nzzws.cn http://www.morning.znmwb.cn.gov.cn.znmwb.cn http://www.morning.nspbj.cn.gov.cn.nspbj.cn http://www.morning.qmfhh.cn.gov.cn.qmfhh.cn http://www.morning.bysey.com.gov.cn.bysey.com http://www.morning.lbssg.cn.gov.cn.lbssg.cn http://www.morning.fwqgy.cn.gov.cn.fwqgy.cn http://www.morning.gsqw.cn.gov.cn.gsqw.cn http://www.morning.bwjws.cn.gov.cn.bwjws.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn