基于UDP和MODBUS协议的数据通信系统

合集下载

基于udp的协议

基于udp的协议

基于udp的协议UDP(User Datagram Protocol)是一种无连接的传输层协议,它不同于TCP (Transmission Control Protocol)的可靠性和有序性,而是注重实时性和效率。

基于UDP的协议在网络通信中具有重要的作用,本文将对基于UDP的协议进行详细介绍。

首先,基于UDP的协议在网络通信中具有快速的传输速度。

由于UDP不需要建立连接和维护状态,因此在数据传输过程中能够减少了许多额外的开销,使得数据能够更快速地传输到目的地。

这使得基于UDP的协议在对实时性要求较高的场景中具有明显的优势,比如音视频传输、在线游戏等。

其次,基于UDP的协议能够支持广播和多播。

UDP协议能够将数据一次性发送给多个接收者,这在一些需要向多个终端发送相同数据的场景中非常有用,比如视频直播、实时监控等。

而且,UDP的广播和多播功能也能够减少网络流量和服务器负担,提高了网络的整体性能。

另外,基于UDP的协议还具有较小的数据包头部开销。

相比于TCP协议的数据包头部较大,UDP的数据包头部更加简洁,这使得UDP在传输小数据量时更加高效。

因此,在一些对网络负载要求较高的场景中,比如物联网设备通信、传感器数据传输等,基于UDP的协议能够更好地满足需求。

此外,基于UDP的协议也存在一些缺点。

由于UDP不提供可靠性保证,因此在数据传输过程中可能会出现丢包现象。

而且,UDP也不支持数据的重传和流量控制,这使得在网络环境较差或者对数据完整性要求较高的场景中,UDP的可靠性和稳定性就显得不足。

综上所述,基于UDP的协议在网络通信中具有快速传输速度、支持广播和多播、较小的数据包头部开销等优点,但也存在可靠性较差的缺点。

因此,在实际应用中,需要根据具体场景的需求来选择合适的协议。

对于对实时性要求较高,且能容忍一定数据丢失的场景,基于UDP的协议是一个不错的选择。

但对于对数据完整性和可靠性要求较高的场景,则需要考虑使用其他协议,或者在UDP的基础上增加一些额外的机制来保证数据的可靠传输。

基于Modbus UDP协议的STM32与PC实时通信的实现

基于Modbus UDP协议的STM32与PC实时通信的实现

㊀2020年㊀第7期仪表技术与传感器Instrument㊀Technique㊀and㊀Sensor2020㊀No.7㊀基金项目:国家重点研发计划项目(2016YFD0400301)收稿日期:2019-06-10基于ModbusUDP协议的STM32与PC实时通信的实现汪钦臣,方益民(江南大学物联网工程学院,江苏无锡㊀214122)㊀㊀摘要:针对PC主站与智能从站采用常规Modbus通讯实时性较差的问题,设计一种基于ModbusUDP的实时通讯系统,以运行远程控制程序的PC作为Modbus主站,以STM32嵌入式微处理器为核心㊁基于实时操作系统FreeRTOS进行开发的控制器作为远程从站,主站与从站通过网络连接,通过优化主站㊁从站通讯程序,提高系统ModbusUDP通信的可靠性和实时性㊂实验结果表明,系统通信稳定可靠,主站平均读写周期约0.3ms,实时性较常规Modbus有明显提高㊂关键词:ModbusUDP;PC;STM32;实时通信中图分类号:TP39㊀㊀㊀文献标识码:A㊀㊀㊀文章编号:1002-1841(2020)07-0067-04RealizationofReal⁃timeCommunicationBetweenSTM32andPCBasedonModbusUDPProtocolWANGQin⁃chen,FANGYi⁃ming(SchoolofInternetofThingsEngineering,JiangnanUniversity,Wuxi214122,China)Abstract:Aimingattheproblemofpoorreal⁃timecommunicationbetweenPCmasterstationandintelligentslavestationu⁃singconventionalModbuscommunication,thispaperdesignedareal⁃timecommunicationsystembasedonModbusUDP.ThePCrunningtheremotecontrolprogramwasusedastheModbusmasterstation,andthecontrollerbasedontheSTM32embeddedmi⁃croprocessorwasdevelopedbasedonthereal⁃timeoperatingsystemFreeRTOSastheremoteslavestation.Themasterstationandtheslavestationwereconnectedthroughthenetwork.Improvethereliabilityandreal⁃timeperformanceofthesystemModbusUDPcommunicationbyoptimizingthecommunicationproceduresofthemasterstationandtheslavestation.Theexperimentalresultsshowthatthesystemcommunicationwasstableandreliable,theaverageread/writeperiodofthemainstationwasabout0.3ms,andthereal⁃timeperformancewassignificantlyimprovedcomparedwiththeconventionalModbus.Keywords:ModbusUDP;PC;STM32;real⁃timecommunication0㊀引言工业以太网作为一种高效的局域网络是现代工厂信息化的基础,也是工业4.0的核心㊂目前工业以太网标准种类繁多,大多数工业以太网标准需要专用的集成电路实现,实现成本较高,如PROFINET㊁Ether⁃CAT等[1]㊂Modbus作为一种应用于工业现场总线的通信协议,具有无版权要求㊁易于维护等优点被广泛接受㊂将UDP协议作为传输层协议应用于Modbus通信[2],减少TCP协议数据传输过程中的3次连接握手等不必要的时间开销,优化应用层通信程序,提升Modbus通讯的实时性㊂本文基于ModbusUDP通讯设计,介绍了一种工业远程实时主从通信设计方案,并对设计有关技术参数进行了实验验证㊂1㊀ModbusUDP协议ModbusTCP由MBAP报文头㊁功能码和地址/长度/数据组成,MBAP报文头包含有事务元标识符㊁协议标识符㊁长度㊁单元标识符[1],与ModbusRTU相比,RTU的地址码由IP取代,CRC功能由TCP/IP和链路层(以太网)校验和机制取代㊂ModbusUDP相比ModbusTCP缺少对应的校验机制,因此保留了RTU的CRC校验,ModbusRTU/TCP/UDP报文格式如图1所示㊂图1㊀Modbus报文格式Modbus串行连接时通讯速率一般不超过115.2kbit/s,按8数据位㊁1停止位发送长度为256个字节的报文,㊀㊀㊀㊀㊀68㊀InstrumentTechniqueandSensorJul.2020㊀每s最多发送约50帧,且串行连接方式传输速率受通讯距离影响较大,因此ModbusRTU不适合实时性要求高的远距离通讯;以太网连接方式的ModbusTCP通讯速度可运行在100M/1000M等速率下,传输速率相比串行方式显著提高,根据现场调试经验:采用ModbusRTU通讯方式的PC主站(Windows系统)与工业现场从站设备完成一次读写最短时间T大概在40 60ms;采用ModbusTCP通讯的一次读写最短时间T在15 30ms㊂当网络中有n个从站时,主站对各个从站进行轮询遍历读写控制的时间约为n㊃T,实时性较差㊂ModbusTCP在传递数据之前会有3次握手来建立连接[1],在数据传递时有确认㊁重传㊁拥塞控制等复杂的机制来确保数据的可靠稳定,因此传输效率低,同时还存在占用系统较多的资源,不适合高速数据传输㊂UDP协议是一个无状态的传输协议,没有TCP那些可靠的机制,传输速率快,如ProfiNet㊁Powerlink等工业实时以太网通讯均基于UDP协议传输数据㊂将UDP作为传输层协议的ModbusUDP用于工业以太网通讯,有利于通讯实时性的提高,而UDP是一种不可靠传输,主要存在报文过长和数据集中传送超过带宽时容易出现丢包㊁丢包缺少数据重传等问题,要实现工业应用中稳定可靠的传输,可以通过应用层协议进行解决㊂(1)数据长度㊂以太网数据帧的长度不能超过1500字节,发送方IP层会将数据报进行分片传输,In⁃ternet上的标准MTU值为576字节,而ModbusTCP的ADU最大长度为256个字节(包含ADU249个字节,MBAP长度7个字节),ModbusUDP的ADU最大长度采用256个字节,不到MTU的一半,ModbusUDP在网络传输中将不会被分片传输,有利于减小数据丢包概率,提高通讯的可靠性和稳定性㊂(2)数据集中传送㊂ModbusUDP采用严格的请求/应答模式,上位机通过对各个从站进行轮询读写,数据错时传输,因此不存在数据集中蜂窝传输的情况㊂(3)丢包重传㊂上位机发送的写入命令在规定时间内没有收到从站的上行报文,将对该写入命令进行重新发送,防止对从站写入的数据丢失㊂将TCP协议中的重传机制在高运算速度的PC端进行实现,简化通讯协议,提高通讯速度㊂另外,通过主站和从站程序开启UDP发送数据校验和功能[3],有助于提高通讯的可靠性㊂综上,ModbusUDP可以实现可靠传输㊂2㊀系统设计系统以PC作为Modbus主站,主站程序基于VS2013开发环境采用C#开发,PC主站在Windows平台下可以设计制作出友好的人机交互软件,同时还有丰富的各类工具软件和各类函数库开发资源,显著降低了系统开发周期和系统维护成本㊂主站与多个从站通过网络连接,主站通过遍历每一个远程从站,实现对从站的控制㊂在工业远程控制系统中,主站实时读取从站的状态信息,当连续多次获取从站数据失败,表明主站同该从站断开了连接㊂系统结构图如图2所示㊂图2㊀系统结构图ModbusUDP远程从站主控芯片采用基于CortexM7内核的STM32F767控制器,该处理器采用6级流水线,最高运行频率为216MHz,自带双精度浮点单元,具有丰富的外设接口㊂在STM32F765上自带以太网模块,该模块包括带有专用DMA控制器的MAC802.3控制器,通过配置相关寄存器即可设置MAC控制器和DMA控制器工作模式和功能[4]㊂系统选用低功耗的10/100M全双工通讯LAN8720A作为外部PHY芯片,通过LAN8720A的MII接口与STM32F767控制器的MAC接口连接,实现以太网数据链路层的数据传输,如图3所示㊂图3㊀从站硬件结构示意图3㊀主站软件的设计Windows是基于消息机制的非实时操作系统,不能得到稳定的精密定时中断,通过调用Windows的Api函数settimer得到的最小定时中断时间一般为40 70ms(由计算机性能和运行状况决定),要实现定时20ms以内的定时,主要有以下方法:(1)通过阻塞线程,实现定时㊂该方法使用一个线程一直占用CPU资源,效率太低,并且定时精度随系统软件运行状况波动较大㊂㊀㊀㊀㊀㊀第7期汪钦臣等:基于ModbusUDP协议的STM32与PC实时通信的实现69㊀㊀(2)采用多媒体定时器实现ms精度的定时,该方法是由一个独立的线程通过预置回调函数实现的高精度定时器,可以实现精度为1ms定时中断㊂本方案选用上述第二种方法,基于VS2013开发环境采用C#开发的WPF应用程序作为主站,主站Modbus通讯程序设计思路如下:(1)程序使用多媒体定时器作为通讯的基准时钟,在使用多媒体定时器时需要引用有关dll㊂通过设置多媒体定时器周期调用时间5ms,当距上一次发送时间T大于10ms时,产生超时事件㊂(2)创建ModbusUDP发送线程,采用事件触发的方式调用ModbusUDP发送命令,当对从站有写入命令,即发送队列不为空时,执行写入命令;当发送队列为空时,执行固定的读取命令,用于获取设备的运行数据和连接状态;发送完成后,计数器T开始计时㊂(3)创建ModbusUDP接收线程,接收到UDP报文后,首先进行CRC校验,校验成功后执行接收报文数据的对应操作,对于写入命令除了发送上行数据帧之外,同时删除发送队列中对应的写命令,产生接收完成事件,触发发送线程执行㊂主站ModbusUDP通讯线程及程序流程图如图4所示㊂图4㊀主站Modbus通讯流程图分布式控制系统往往需要执行不间断的设备状态获取,为了提高通讯效率,可以将需要获取从站状态信息放置在连续的寄存器上方便一次读取,提高实时性㊂4㊀从站软件的设计FreeRTOS是一个实时多任务操作系统,包括任务管理㊁消息队列㊁信号量㊁时间管理㊁软件定时器等功能,具有完全免费㊁源码公开㊁可移植等优点,基本满足较小型嵌入式系统的开发需要,应用十分广泛[5]㊂远程控制从站基于轻量级嵌入式操作系统FreeRTOS开发,缩短嵌入式软件开发时间,有效地利用CPU的资源,从而确保程序任务的实时性和可靠性㊂ModbusUDP是基于UDP协议的一种应用层协议,FreeRTOS并不包含UDP协议和ModbusUDP协议,因此要在FreeRTOS系统上实现ModbusUDP协议,首先移值UDP协议㊂LwIP协议栈是一个小型开源的TCP/IP协议栈[6],同时支持UDP协议,适用于资源有限的小型平台,例如嵌入式系统㊂在FreeRTOS系统上移值LwIP协议栈,在UDP协议的基础上实现Modbus协议,ModbusUDP移植如图5所示[7]㊂图5㊀ModbusUDP移植开发示意图远程从站作为ModbusUDP客户端,从站程序需要开启一个单独的任务对UDP端口进行监控,任务优先级为2,当接收到外部的命令后首先进行CRC校验,对校验正确的数据帧按照ModbusUDP协议进行回复,通讯任务流程图如图6所示㊂5㊀系统测试选用处理器Interi5-7300HQ,主频为2.5GHz,内㊀㊀㊀㊀㊀70㊀InstrumentTechniqueandSensorJul.2020㊀图6㊀从站Modbus通讯流程图存为8GB的笔记本电脑运行主站控制程序,与一个从站直接相连,主站实时获取从站100个字数据,其中第一个字数据的值为随时间变化的三角波函数,主站获取从站数据并显示,如图7所示,三角波不失真,证明通讯稳定㊂图7㊀主站运行界面通过wireshark(V3.0.1)监控运行过程中一段时间内的数据包,如图8所示,wireshark能够自动识别通讯协议为ModbusUDP,监控通讯时间为100.9505s,共获取685133个数据包,即每s完成3393.4次通讯,主站平均读写周期为0.2947ms㊂6㊀结束语ModbusUDP除了具备ModbusTCP的易于扩展㊁方便与企业EMS等信息化系统连接的优点外,还具有更好的实时通讯能力㊂针对当前自动化厂商对分布式远程控制模块越来越高的实时性通讯要求,本文设计一套基于ModbusUDP的实时通信系统,主站㊁从站图8㊀数据包分析采用多线程(或多任务)进行开发,优化通信流程,以事件的方式触发Modbus报文的发送和接收,从而提高了通讯效率㊂实验结果表明,PC主站与从站平均通信周期约0.3ms,较常规ModbusRTU和ModbusTCP方式有较大提高,能满足系统响应要求较高的工业应用场合㊂参考文献:[1]㊀刘振华,朱明富.UDP/IP协议下Modbus协议的研究与实现[J].微计算机应用,2010,31(12):20-27.[2]㊀许洪华,刘科.基于MODBUS/UDP的控制系统开发[J].微计算机信息,2008(31):20-21.[3]㊀赵伯阳,杨建武.一种简单有效的实时以太网研发[J].计算机测量与控制,2012,20(11):3021-3024.[4]㊀刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2013.[5]㊀王祖云,杨思国,王建伟,等.嵌入式LwIP协议栈的移植与测试研究[J].计算机与数字工程,2014,42(02):272-275.[6]㊀张文亮,田沛,刘晖,等.基于FreeRTOS的lwip协议栈的移植与测试[J].自动化技术与应用,2015,34(11):25-29.[7]㊀龙雪飞,陈涛,张磊.嵌入式测试系统中UDP/IP协议栈的移植与实现[J].航天控制,2015,33(3):83-87.作者简介:汪钦臣(1988 ),硕士研究生,主要从事工业自动化和电力电子方面的研究㊂E⁃mail:wqc4211@163.com方益民(1962 ),副教授,博士研究生,主要从事单片机㊁DSP㊁嵌入式系统㊁智能控制系统的研究与教学工作㊂E⁃mail:fang_yi_min@jiangnan.edu.cn(上接第66页)[6]㊀谢虎成,李洋,高成耀,等.基于无线网络的便携式水质重金属检测系统的研究[J].仪表技术与传感器,2018(12):54-57.[7]㊀吕杨华.基于分光光度法的多参数在线水质监测仪的研究与设计[D].杭州:浙江大学,2012.[8]㊀金海龙,王玉田.基于荧光发射光谱的活体海藻识别方法研究[J].传感器技术学报,2006(1):97-99.作者简介:钟涛(1993 ),硕士研究生,研究方向为测试仪器与电路设计㊂E⁃mail:tzhong2017@sinano.ac.cn金宁(1967 ),教授,主要研究方向为电子信息技术与信号处理㊂E⁃mail:jinning1117@cjlu.edu.cn。

modbus_tk execute参数

modbus_tk execute参数

modbus_tk execute参数摘要:1.Modbus TK简介2.Modbus TK的execute参数概述3.execute参数的常用功能和应用4.execute参数的设置与使用方法5.注意事项与实用技巧正文:Modbus TK是一款功能强大的Modbus协议开发工具,广泛应用于工业自动化、数据采集与监控等领域。

本文将重点介绍Modbus TK中的execute 参数,包括其功能、应用、设置与使用方法等方面,帮助读者更好地掌握这一工具。

一、Modbus TK简介Modbus TK是一款基于Python的Modbus协议实现库,支持Modbus TCP、UDP、Serial等多种通信方式。

Modbus TK具有丰富的功能,可以方便地实现Modbus协议的读写、解析、监控等操作。

二、Modbus TK的execute参数概述在Modbus TK中,execute参数是用于执行Modbus命令的关键参数。

通过设置execute参数,可以实现对Modbus设备的读写操作,获取设备的数据、状态等信息。

execute参数主要包括以下几种类型:1.读取命令(Read):用于读取设备的数据,如离线值、输入值等。

2.写入命令(Write):用于向设备写入数据,如离线值、控制字等。

3.读写命令(Read-Write):用于读写设备的数据,同时支持读取和写入操作。

4.批量读写命令(Batch Read-Write):用于批量读写多个数据点,提高操作效率。

三、execute参数的常用功能和应用1.读取设备数据:通过设置read命令,可以实现对单个或多个数据点的读取操作。

例如,读取离线值、输入值、寄存器值等。

2.写入设备数据:通过设置write命令,可以实现对单个或多个数据点的写入操作。

例如,写入离线值、控制字等。

3.读写设备数据:通过设置read-write命令,可以实现对单个或多个数据点的读写操作,同时进行读取和写入。

一种基于UDP协议的数据传输方法及系统[发明专利]

一种基于UDP协议的数据传输方法及系统[发明专利]

专利名称:一种基于UDP协议的数据传输方法及系统专利类型:发明专利
发明人:韦青,李斌,王彬
申请号:CN201610366312.3
申请日:20160527
公开号:CN106209764A
公开日:
20161207
专利内容由知识产权出版社提供
摘要:本发明公开一种基于UDP协议的数据传输方法,所述方法包括:发送方与接收方通过UDP 协议建立连接,发送方将具有同一有序标识的数据包放入第一发包队列中,具有同一有序标识的数据包分别携带表示发送顺序的序列号,第一发包队列存放具有有序标识的数据包;发送第一发包队列中的数据包;接收方在接收到具有有序标识的数据包后,将数据包放入第一收包队列中,第一收包队列用于存放具有有序标识的数据包;根据第一收包队列中具有同一有序标识的数据包携带的序列号,确定具有同一有序标识的数据包是否全部成功接收。

本发明设置有数据包有序发送策略,接收方根据数据包的序列号确定数据包是否接收成功,一定程度上能够保证基于UDP协议进行数据传输的可靠性。

申请人:北京畅游天下网络技术有限公司
地址:100043 北京市石景山区八大处高科技园区西井路3号3号楼1210室
国籍:CN
代理机构:北京集佳知识产权代理有限公司
更多信息请下载全文后查看。

基于UDP协议网络实时通讯系统的设计与实现

基于UDP协议网络实时通讯系统的设计与实现
启动该线程监听接收响应功能。
void CDSClientDlg::OnBtnSet() 邀 …… addrTo.sin_addr.S_un.S_addr=htonl(m_IPSe- erver); …… sprintf(tempbuf, ″1 %s\\%s\\\\″, m_strname, inet_ntoa(addrself.sin_addr)); // ″1″start sendto(m_socket, strtemp, strtemp.GetLength ()+1, 0, (SOCKADDR觹)&addrTo, sizeof (SOCKADDR)); RecvParam觹 pRp=new RecvParam(m_sock- et, m_hWnd, m_IPServer); HANDLE hThread=CreateThread(NULL, 0, RecvProc, (LPVOID)pRp, 0, NULL); CloseHandle(hThread); 妖
(6)设 计 UM_DOWITHSERVER 消息响应功能。将服务器发出的在线客 户机信息 (客户机名称和 IP 地址)动 态存储在 m_obArray 之中,便于动态存 储或删除信息。 void CDSClientDlg::OnDowithServer(WPAR- AM wParam, LPARAM lParam) 邀 …… int m=m_obArray.GetSize(); if(m选=0) 邀 m_obArray.RemoveAll(); 妖 …… m_list.AddString(tempname); Storage觹 pStore =new Storage (tempname, tempIP); m_obArray.Add((CObject觹)pStore); …… 妖

基于MODBUS协议的通讯系统

基于MODBUS协议的通讯系统

基于MODBUS协议的通讯系统【摘要】本设计研究如何通过MODBUS通讯协议,设计利用单片机,结合NRF24L01无线收发芯片,实现了温度实时采集与主机(PC机)显示。

用STC89C52单片机与DS18B20对温度采集显示于数码管,在通过无线模块发送到另一块单片机系统里通过1602液晶显示,成后,基于MODBUS通讯协议通过RS-485的物理层实现串口通信,发送实时数据给主机。

经过一系列的处理后,温度得以实时在两个单片机系统中显示并准确显示在主机串口调试软件中。

经检测,作品实现了基于MODBUS协议的通讯。

【关键词】MODBUS NRF24L01 STC89C52 PC机[Abstract] This design to study how through the MODBUS communicationprotocol designed to use microcontroller, to combine NRF24L01 wireless transceiver chip temperature real-time acquisition with the host (PC) display. The STC89C52 SCM and DS18B20 temperature acquisition and display digital control, the 1602 LCD, after the completion of a microcontroller system via RS-485 physical layer communication protocol based on MODBUS serial communication through a wireless module to send to send real-time data to the host. After a series of treatments, the temperature can be shown in the two single-chip system in real time and accurately displayed on the host serial port debugging software. After testing, the works based on MODBUS protocol communication.[Key words] The MODBUS nRF24L01 STC89C52 host computer目录第1章绪论 (1)1.1 Modbus 协议简介 (1)1.2 Modbus 协议的应用 (1)1.3、本论文的主要内容 (1)第2章设计总思路和法案选择 (2)2.1、设计总体思路基本原理和框图 (2)2.2 MODBUS方案选择 (2)2.3通讯接口选择 (3)2.4无线模块的选择 (4)2.5 本章小结 (4)第3章通讯系统实现的理论原理 (5)3.1 MODBUS-RTU通讯协议内容简介 (5)3.2 RS-485接口简介 (7)3.3 NRF24L01无线模块内容简介 (8)3.4 本章小结 (9)第4章通讯系统实现的硬件设计 (10)4.1硬件系统结构 (10)4.2 单片机最小系统模块 (10)4.3温度采集、独立按键、液晶和数码管显示模块 (10)4.4无线收发单元模块 (11)4.5 RS-232转RS-485通讯接口模块 (11)4.6 本章小结 (12)第5章通讯系统实现的软件设计 (13)5.1 基于MODBUS协议处理报文的软件设计: (13)5.2 A机流程图和说明 (16)5.3 B机流程图和说明 (17)5.4 本章小结 (18)第6章通讯系统的实现 (19)6.1 实物整体外观 (19)6.2串口主机(PC机)显示 (20)6.3 结果评价 (21)6.4 不足和展望 (22)参考文献 (23)致谢 (24)附录一:系统总原理图和PCB图 (25)附录二:单片机A机程序 (27)附录三:单片机B机程序 (40)第1章绪论1.1 Modbus 协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。

基于UDP协议网络实时通讯系统的设计与实现

基于UDP协议网络实时通讯系统的设计与实现

基于UDP协议网络实时通讯系统的设计与实现
王道守;王正超
【期刊名称】《智能计算机与应用》
【年(卷),期】2009(000)003
【摘要】利用Socket API函数.在vc++语言MFC环境下主皇写了基于UDP协议的服务器/客户机的实时通信系统,实现了客户机之间的实时通信.
【总页数】3页(P33-35)
【作者】王道守;王正超
【作者单位】苏州经贸职业技术学院信息系,苏州,215021;(Missing)
【正文语种】中文
【中图分类】TP393.1
【相关文献】
1.基于 UDP协议的利率衍生产品报价系统设计与实现 [J], 姚毓才
2.基于UDP协议的网络监控系统设计与实现 [J], 黄杰;吕玉鹏;郭书杰
3.一个基于UDP协议的局域网授时系统设计与实现 [J], 邢业伟
4.基于扩展UDP协议的远程图像采集传输系统设计与实现 [J], 刘明华;任志考;汪传生;王宪伦
5.ERP系统中基于websocket协议的实时通讯机制的设计与实现 [J], 李翔
因版权原因,仅展示原文概要,查看原文内容请购买。

基于UDP协议的实时数据传输技术研究

基于UDP协议的实时数据传输技术研究

基于UDP协议的实时数据传输技术研究随着物联网技术的日益发展,实时数据传输已成为网络技术领域中的一个重要问题。

流媒体传输、传感器数据发送等应用场景中,要求数据快速传输并且时间敏感,就需要使用UDP协议。

本文将深入探讨基于UDP协议的实时数据传输技术研究。

UDP协议概述UDP(User Datagram Protocol),即用户数据报协议,是一个轻量级的传输层协议。

与TCP不同的是,UDP不保证数据传输的可靠性,同时也不保证数据的顺序。

但是UDP具有数据传输快速、没有拥塞控制和可广播等服务优势。

UDP协议的特点UDP协议传输速度快、传输的数据少,因此数据包的头部信息相对较短。

头部数据只有8个字节,其中源端口和目的端口各占用2个字节、长度字段占用2个字节。

与TCP的20个字节的头部相比,UDP的头部更短,更加轻便。

UDP协议设计理念是快速传输数据,因此UDP不包含拥塞控制和流量控制的机制。

相比之下,TCP是一种可靠的协议,需要在数据传输过程中进行拥塞控制和流量控制,来保证数据传输的可靠性和顺序性。

UDP协议是一个无连接的协议,因此不需要在服务之前进行链接。

同时,UDP 允许在广播数据时使用一个IP地址和端口发送数据给多台设备,这一点TCP不可做到。

基于UDP协议的实时数据传输技术实时数据传输涉及到网络带宽、传输速度、传输的质量等多个方面,因此实时数据传输是一项复杂的技术。

基于UDP协议的实时数据传输技术是目前最常用的实时数据传输技术。

基于UDP协议的实时数据传输技术通过UDP协议传输数据,因此具有传输速度快的优势。

但是UDP协议不做数据包的可靠性保证,因此需要使用应用层协议进行相关的控制。

首先,需要采用一些机制来保证数据的完整性。

最常见的做法就是采用CRC校验码来检查数据包是否正确。

CRC校验码就是将数据包中的所有数据进行校验和计算,将结果与数据包中的校验和比较,判断是否一致,以此来保证数据的完整性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于UDP和MODBUS协议的数据通信系统[摘要] 本文介绍了vc编程使用udp协议从电力工业实时网采集数据,并转换
为工业标准modbus协议上传数据。

文中分析了udp套接字编程和modbus协议,并给出了部分代码。

[关键词] 集散控制系统套接字循环冗余码设计流程
1、前言
集散控制系统(DCS)是一个实时控制系统,完成电力工业生产过程实时数据采集、过程控制、顺序控制、高级控制、报警检测、监视、操作,对数据进行记录、统计、显示、打印等处理。

基于安全的考虑实时网络是封闭的,数据在实时网内部信息交换。

在工业中有很多场合需要采集集散控制系统实时网络中的数据,例如:实时监控信息系统(SIS)、环境检测、电力调度等。

为解决从封闭的工业实时网中提取数据的问题,同时保证工业实时网络的安全避免受到外界数据干扰,这里基于udp、modbus协议设计开发了一种安全可靠数据通信系统。

系统使用udp套接字接口实时从工业实时网接受数据,转换为modbus协议格式的数据帧,通过串口上传数据。

2、udp套接字编程
windows平台套接字有三种类型:流式套接字,数据报套接字及原始套接字。

udp套接字是数据报套接字。

数据报套接口定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。

套接字类型在创建套接字时确定。

2.1 加载winsock库
使用windows套接字必须加载winsock dll的相应版本。

WSADATA wsd;
WSAStartup(MAKEWORD(2,2),&wsd);
加载版本为2.2的winsock库
2.2 创建udp套接字
SOCKETsock = socket(AF_INET, SOCK_DGRAM, 0);
使用参数SOCK_DGRAM确定创建数据报套接字。

2.3 定址
winsock中使用SOCKADDR_IN结构指定IP地址和接口。

SOCKADDR_IN local;
local.sin_family = AF_INET;
local.sin_port = htons((short)3316);
local.sin_addr.s_addr = htonl(*addr);
sin_family字段使用AF_INET定义IP地址簇,sin_port字段使用3316端口号,sin_addr.s_addr字段使用htonl()函数转换后网络字节顺序的地址。

2.4 套接字绑定地址
bind(sock, (SOCKADDR *)&local, sizeof(local));
将创建好的套接字sock绑定地址和端口,绑定出错时bind返回SOCK_ERROR。

2.5 接受数据
数据通信系统作为接收端接受工业实时网中的实时数据。

while(cycleflag)
{
FD_ZERO(&readfds);
FD_SET(sock,&readfds);
int ii = select(0, &readfds, NULL, NULL, &timeout);
if(ii>0)
{
ret = recvfrom(sock, (char *)&SXPBuffer, sizeof(SXPBuffer), 0,
(SOCKADDR *)&from, &fromSize);
}//if
}//while
select函数判断套接字集合中是否有可读数据报,然后recvfrom函数接受数据报。

接受udp数据功能块作为一个独立的线程不断接受实时数据。

2.6 释放资源
在线程终止时需要释放套接字资源。

closesocket(sock);
WSACleanup();
3 modbus协议
MODBUS是工业领域通用协议。

此协议支持传统的RS-232、RS-422、RS-485和以太网设备。

许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

MODBUS系统采用主从方式通信。

数据通信系统作为从站响应符合MODBUS功能码03(读数据查询帧)的数据帧,采用循环冗余校验作错误检测。

程序设计定时器,不断扫描RS232接口,发现为功能码03的数据帧,则把当前的实时数据附加上循环冗余校验码,发送到RS232接口作为响应。

读数据查询帧(功能码03)数据结构
地址功能码高位
地址低位
地址高位
数据低位数据CRC16 CRC16
11H 03H 00H 00H 00H 03H 07H 5BH
地址字段表示从机的地址;功能码字段03H表示读数据查询帧;高位地址和低位地址表示寄存器的开始地址;高位数据和低位数据表示读取多少个寄存器数据;CRC16是附加的循环冗余校验码。

从机响应帧数据结构
地址功能码字节数高位
数据低位
数据…CRC16 CRC16
11H 03H 06H 00H 00H …07H 5BH
地址和功能码字段同数据查询帧;字节数表示数据占用多少字节;响应信息中每个寄存器对应2个字节,第一个字节为高位数据,第二个字节为低位数据;CRC16是附加的循环冗余校验码。

4 程序设计流程图
5 小结
本系统使用windows网络编程技术和多线程技术,以成熟的工业modbus协议作为串口通信协议,用于工业实时数据的传输。

简单、可靠、安全,避免了工业实时网内部系统受到干扰。

参考文献:
[1] W.Richard.Stevens. 范建华译TCP/IP 详解(卷1:协议) 2000.4.1.
[2] MODBUS规约.
[3] Anthony Jones,Jim Ohlund.WINDOWS网络编程技术2000.3.1.。

相关文档
最新文档