【《基于Modbus协议的某水箱液位控制系统上位机开发设计分析案例》2800字】_第1页
【《基于Modbus协议的某水箱液位控制系统上位机开发设计分析案例》2800字】_第2页
【《基于Modbus协议的某水箱液位控制系统上位机开发设计分析案例》2800字】_第3页
【《基于Modbus协议的某水箱液位控制系统上位机开发设计分析案例》2800字】_第4页
【《基于Modbus协议的某水箱液位控制系统上位机开发设计分析案例》2800字】_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Modbus协议的某水箱液位控制系统上位机开发设计分析案例目录TOC\o"1-3"\h\u11268基于Modbus协议的某水箱液位控制系统上位机开发设计分析案例 119001.1Modbus传输方式选取 1125831.2Modbus通信协议格式 2325261.3LabwindowsCVI软件测试 3305331.4上位机软件设计 41.1Modbus传输方式选取Modbus协议传输模式的选择上有两种可以选择,这两种传输模式在与PC机通讯时的效率是相同的,其选择的主要参考因素应依据Modbus主机而决定,需要说明的是,每个Modbus系统只能选取一种传输模式,两种传输模式不能在同一套系统中混用,一种模式是ASCII,另一种模式是RTU[22]。用户选择何种的传输模式,就要配置相对用的串口通信参数。两种模式均应用于标准的Modbus网络,它对传输消息的消息段上的每一位做了相应的规定和定义,以及如需额将这些消息进行打包和按照何种规则解码。如果传输的消息在其他的Modbus网络上那么这些信息将不能被准确的传输,将会被转化为与串行通讯无关的相关内容[23]。在本次设计当中选取RTU作为Modbus的传输方式,其查询响应模式如图5-1所示。图5-1查询响应模式图1.2Modbus通信协议格式当通信协议的信息帧传递到终端的控制设备时,需要通过寻址的方式寻找一个通信协议的入口。然后终端控制设备的相关信息数据加入到已经取得的通信协议格式当中,将数据信息返回给发送着。返回的信息协议数据内容包含了以下格式,控制终端机重机的地址信息,被执行了何种命令,执行命令的生成程序和一个数据验证码,如果在传递过程中发生任何错误,整个命令都不会被通信协议控制终端所响应,ModBusRTU通信协议格式如图5-2所示图5-2RTU通信协议格式图Adu校验位,在其中的前三部分的,CRC16校验,是通过其高低字节进行交换生成的。[22]地址域:控制系统重机所在地址开机部分由一个字节所构成,十进制为0~255,在本次系统中索取的地址信息是1-247。这样的信息标注用户所设定的控制终端机的地址。与其对应的控制系统主机将发送该地址相应数据。通过寻址方式寻找的终端,当控制系统终端机返回一个响应时,仅仅会响应,只包含该主机的地址查询,功能域:功能域上的功能代码,决定了被寻找到的控制系统终端设备执行何种功能,相对应的被控设备就会有什么样的动作。如果应答功能与代码最高位被置位操作,则表示此功能代码不执行任何功能,若一致表示可以正确执行这次功能,则就会返回相对应的控制数据,响应的从机地址便通知主机正在进行通讯,其控制字为:0x0003读取多个功能码参数以及对应状态字0x0006改变单一功能代码值或控制相应参数0x0010改变多个功能代码值或控制相应参数数据域:数据域上的代码,所包含了控制终端所执行的特定功能所需要的相关数据,以及在控制终端所查询到的地址数据,这些数据有多种类型,可以是数值地址或者极限值。举例说明,如果功能区的代码执行阅读某一个寄存器的相应数据,那么数据域需要指明在哪一个寄存器的哪里进行读取数据,以及读取数据的个数,内部嵌套的地址和数据类型,主机判断并做出下一步的动作,需要特别指出的是,数据取长度为0,也可以传递某种情况下的特殊信息。校验域:该区域代码的作用是检查主机与重机之间的通讯是否有无差错,在实际的工业控制过程当中,会存在着白噪声,电流,信号等诸多干扰因素,一个设备向另一个设备传输过程当中,有可能会造成数据传输错误,会造成数据传输内容造成一定的改变。而校验区代码的作用,就是进行判别,用于保证主机或者其他终端,不去响应那些在传输过程中失真的错误信息,在校验域编码过程当中为一个16位的值,计划预约内容是通过16位循环冗余的方法进行检测的,CRC校验代码附加在传递信息的最后端,由低字节至高字节排序,所以CRC的高位字节,是整个信息传递过程当中最后一个字节。校验码用到8个数据位。数据代码中的起始位跟中止位,奇偶校验位,在计算中都不参与,生成一个CRC校验方式的步骤如下:设置一个16位寄存器,将其内容设为0ffffh。为其命名为CRC寄存器。将数据帧第1个8字节的数据,与CRC寄存器中,自己的数据进行异或计算,将计算的结果返回并保存在CRC寄存器中。将寄存器右移1位,空位置0。将最低位移出并不予检测,重复以上步骤中的第3步和第4步,直到完成8次移位操作,这样就处理完了一个完整的8位数据,此时最终停留在CRC寄存器中的值,就为CRC的值,用于接下来的校验操作。1.3LabwindowsCVI软件测试在本次设计中利用LabwindowsCVI进行上位机软件设计,在开始设计之前,对上位机软件的运行进行了测试。因为该型软件版本众多,容易发生缺少相关文件的现象,导致不可使用软件。为了防止这样的事情发生进行了LabwindowsCVI软件的例程测试。首先在软件中设置控件并对其进行编辑测试。如图5-6所示。图5-6进行控件编辑图控件编辑完毕后,单击Code生成程序代码。结合网络相关资料,导入示例程序,其最终的示例程序测试如图5-7所示。其返回结果正确,软件测试结束。图5-7示例程序测试图1.4上位机软件设计在本次设计过程当中,ModbusRTU为结构类型,其定义程序如图5-8所示,RTU结构类型的程序设计主要运用到了typedefstruct,这种命令的主要功能是对结构体进行定义。其操作方式与C语言类似。然后定义帧内部的字节数量,最后进行对帧信息组数的规定。图5-8RTU定义程序图帧变量的功能是用来存放发送帧的信息以及接收帧的信息,针对每个控制存在的不同类型,定义了不同类型的结构变量类型,用来表达从站的特征信息。[25]其定义程序如图5-9所示。继续利用typedefstruct语句进行相关的定义。需要定义的内容主要包括:帧变量的速度相关参数,编码器的对应数据,帧变量在传输过程中相关联的起始传输位置以及对应的终止传输位置。还需要定义两种状态,一种状态是控制子站是否在线的状态。另一种状态是控制子站的错误信息代码,用于在出现错误时进行相对应的异常状态响应。图5-9桢变量定义程序图本系统中选取的为RTU信息格式,其发送程序流程图,如图5-10所示,首先进行RTU信息帧的构建,按照一定的谷子则计算校验数值并将其加入发送队列,然后进行帧与帧之间的字符延时过程。并且结合具体要求进行串口发送程序的的调用。在之后等待一段时间的接收延迟。图5-10发送程序流程图接收程序流程图,如图5-11所示。首先调用串口参数一个字节一个字节的接收函数,此后等待一段时间。然后进行一步判断,若接受的数据为0时,此时发生超时错误,当其不为0时,就开始对接受帧进行解析。图5-11接收程序流程图帧解析程序流程图如图5-12所示,首先进行一步校验错误,若有错误则进行对应的错误显示。若无错误,首先先判断站的地址,接下来进行功能码的判断,最后对参数进行刷新。图5-12桢解析程序流程图其协议发送功能的实现,主要由以下C语言程序段进行如图5-13所示,首先判断sendflag的状态是否满足需求,若满足则进入循环。首先需要对发送桢进行相关的构建,其次需要对校验值进行计算并且调用发送信息的函数,接下来启动接收数据的线程,最后将sendflag置0,避免程序循环发送。图5-13发送程序图其协议接收功能的实现,主要由以下C语言程序段进行如图5-14所示。首先对sendflag的数值进行判断,满足需求后进入循环。然后需要对发送桢进行相关构建,以及

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论