焊台厂家
免费服务热线

Free service

hotline

010-00000000
焊台厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

图modbus协议ModBus协议在工业控制系统中的叶绿386金手指应用-【xinwen】

发布时间:2021-10-12 11:42:13 阅读: 来源:焊台厂家

一、ModBus协议简介

当今世界,工业控制已从单机控制走向集中监控、集散控制。在进入网络时代的今天,工业控制器连网也为网络管理提供了方便。ModBus协议就是工业控制器的网络协议中的一种。ModBus协议是Modicon公司于1978年发明的一种用于电子控制器进行控制和通讯的通讯协议。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以进行通信。它的开放性、可扩充性和标准化使它成为一个通用工业标准。有了它,不同厂商生产的控制设备可以简单可靠地连成工业网络,进行系统的集中监控,从而使它成为最流行的协议之一。

ModBus协议包括ASCII, RTU, PLUS, TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的ModBus 是使用RS-232C 兼容串行接口, RS-232C规定了连接器针脚、接线、信号电平、波特率、奇偶校验等信息,ModBus的ASCII,RTU协议则在此基础上规定了消息、数据的结构、命令和应答的方式。ModBus控制器的数据通信采用Master/Slave方式,即Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

ModBus可以应用在支持ModBus协议的PLC和PLC之间、PLC和个人计算机之间、计算机和计算机之间、远程PLC和计算机之间以及远程计算机之间,可见ModBus的应用是相当广泛的。由于ModBus是一个事实上的工业标准,许多厂家的PLC,HMI、组态软件都支持ModBus,而且ModBus是一个开放标准,其协议内容可以免费获得,一些小型厂商甚至个人都可根据协议标准开发出支持ModBus的产品或软件,从而使其产品联入到ModBus的数据网络中。因此,ModBus有着广泛的应用基础。在实际应用中,可以使用RS232,RS 485/422 ,Modem加电话线、甚至TCP/IP来联网。所以,ModBus的传输介质种类较多,可以根据传输距离来选择。

二、ModBus协议的通讯格式

ModBus可分为两种传输模式:ASCII模式和RTU模式。使用何种模式由用户自行选择,包括串口通信参数。在配置每个控制器的时候,同一个ModBus网络上的所有设备都必须选择相同的传输模式和串口参数。

2.1 ASCII模式

当控制器设为在ModBus网络上以ASCII模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。

字符作为起始位,以回车换行符作为结束符。传输过程中,网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备就解码下个位的地址域,来判断是否发给自己的。与地址域一致的设备继续接受其它域,直至接受到回车换行符。除起始位和结束符外,其他域可以使用的传输字符是十六进制的0…9,A…F,当然也要用ASCII码表示字符。当选用ASCII模式时,消息帧使用LRC进行错误检测。

2.2 RTU模式

当控制器设为RTU模式时,消息帧中的每个8 Bit字节包含两个4Bit的十六进制字符。

表2 RTU模式的消息帧

图3 接收程序流程图

如图3所示,在一个帧开始接收时判断接收的第一个字节是否为本机地址,如果是则保存到接收缓冲区中,不是则继续等待下一帧报文的到来,这样节省了保存数据的时间,接收中断服务程序只是保存数据而不处理数据,只是在一帧新的报文接收结束后,通知系统;ModBus协议还规定了从方接收报文不正确时发问的出错帧。考虑到装置内部通信的过程不是很复杂,在实际应用中如果从方收到的报文校验不正确,采取不作应答的方式。主方若在规定时间内未收到从方的应答报文时,将重发请求报文;若多次末收到从方应答报文,则报通讯故障。上面的措施大大缩短了中断服务程序的执行时间,防止了系统资源的无谓浪费。

在数据处理方面设计了一个环形的缓冲区,用来存放接收到的数据,这个缓冲区是一个两维数组。假设一个帧不超过12个字节,可以定义了一个5*12的二维数组。数组的第一个元素是标志位,前四位用来表示数据是否已经处理,后四位存放接收的数据的个数;每接收一个帧的数据,数组下移一个。当接收的数据要覆盖未处理数据时系统报警,这种情况一般不会发生,因为数据处理程序在本系统中被设成优先级最高。

在ModBus协议中另外一个问题就是CRC校验和的计算问题,一般情况下它是由硬件电路直接产生的,这样速度比较快,系统负载小;但是在本文中介绍的单片机中没有这种专用电路,而且一般的中低端的单片机一般也不具有这种专用电路。这里我们只有充分利用现有的资源,如果直接计算的话,单片机负载很大,而且浪费了大量的系统时间,影响系统的实时性,考虑到我所使用的MCU的Flash ROM比较大,可以存储大量的常量线性表数据,利用查表方式可以非常方便的计算出CRC校验码。

四、结束语

在本文中比较详细地介绍了ModBus总线协议,并最终设计了一个实现多点温度测量和控制的使用系统,希望本系统对类似的通讯应用有所帮助。

301医院胃癌免疫疗法

一般免疫治疗要做几次

北联nk免疫细胞疗法

干细胞可治不孕不育吗