一种基于Modbus协议的从设备的制作方法

文档序号:7819459阅读:698来源:国知局
一种基于Modbus协议的从设备的制作方法
【专利摘要】本发明涉及工业现场总线控制【技术领域】,提供了一种基于Modbus协议的从设备,包括:电源单元、485通信单元、单片机和执行单元:电源单元用于为485通信单元、单片机和执行单元供电;485通信单元用于接收Modbus总线上数据帧和转发单片机生成的数据接收响应帧;单片机用于判断485通信单元接收的数据帧是否为符合Modbus协议的有效数据,如果是有效数据,则生成数据接收响应帧和执行信号,并将数据接收响应帧和执行信号分别发送给485通信单元和执行单元;执行单元用于根据执行信号进行相应操作。本发明提供的从设备,实现了数据帧的收发和有效性判断功能,具有成本低、容易生产和应用广泛的特点,提高了从设备通信的可靠性。
【专利说明】一种基于Modbus协议的从设备

【技术领域】
[0001]本发明涉及工业现场总线控制【技术领域】,具体涉及一种基于Modbus协议的从设备,可以作为远程自动控制仪表或传感器等远程终端,用于通过Modbus总线收发数据并执行控制功能。

【背景技术】
[0002]工业现场总线是未来工业控制的发展趋势,以数字通信替代了传统4mA至20mA模拟信号和普通开关量信号,能够连接智能现场设备和自动化系统,具有全数字、双向和多站的特点。工业现场总线实现了工业现场的智能化仪表、控制器和执行机构等现场设备之间的数字通信,以及这些现场设备和控制系统之间的消息传递。
[0003]Modbus协议是Modbus串行链路协议的简称,最初由Modicon公司开发出来,现在已经是工业领域全球最流行的通用工业现场总线标准协议之一。相应的,我国颁布了 GB/T19582.1-2008《基于Modbus协议的工业自动化网络规范》。
[0004]Modbus通信系统包括:一个主设备,用于初始化传输(查询);一个或多个从设备,用于根据主设备通过查询提供的数据做出相应反应。主设备可和从设备单独通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一个消息作为回应,如果是以广播方式通信,从设备则不做出任何回应。
[0005]Modbus协议是一个开放标准,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权,而其他国际流行的总线协议都不公开或都要求许可。目前Modbus通信系统普遍采用标准RS-485通讯接口作为物理层传送方式,工作模式为主从半双工模式。
[0006]鉴于工业现场总线的巨大优势和Modbus协议开放的特点,迫切需要针对单片机,提供具有研制简单、应用广泛和成本低廉特点的Modbus从设备。现有的从设备不具有数据有效性判断功能,影响从设备工作可靠性。


【发明内容】

[0007]本发明解决现有基于Modbus协议的从设备不具备数据有效性判断功能,导致通信可靠性低的问题。同时完成了从设备输入、输出和控制其他设备的功能。
[0008]为解决上述技术问题,本发明提供如下的技术方案:
一种基于Modbus协议的从设备,包括:电源单元、485通信单元、单片机和执行单元:
电源单元用于为485通信单元、单片机和执行单元供电;
485通信单元用于接收和发送Modbus总线上的数据帧,单片机用于判断485通信单元接收的数据帧是否为符合Modbus协议的有效数据,如果是有效数据,则生成数据接收响应帧和执行信号,并将数据接收响应帧和执行信号分别发送给485通信单元和执行单元;
执行单元用于根据执行信号进行相应操作。
[0009]其中,数据帧包括:地址域、功能码域、数据域和差错校验域。
[0010]在优选的方案中,单片机判断485通信单元接收的数据帧是否为符合Modbus协议的有效数据具体包括:
步骤101,单片机判断从设备是否处于串口中断状态,如果从设备未处于串口中断状态,则执行步骤102 ;
步骤102,判断485通信单元接收的数据帧的地址域中存储的地址代码是否与单片机中存储的地址代码相同,如果相同则执行步骤103,如果不相同则所接收的数据帧不是有效数据;
步骤103,根据单片机中存储的差错校验规则判断数据帧的差错校验域中存储的校验码值是否正确,如果正确则执行步骤104,如果不正确则所接收的数据帧不是有效数据;步骤104,判断数据帧的功能码域中存储的功能码是否与单片机中存储的功能码是否一致,如果一致则判断出所接收的数据帧为有效数据并执行步骤105,否则判断出所接收的数据帧不是有效数据并且生成例外响应帧,并且通过485通信单元转发例外响应帧;
步骤105,在单片机控制下执行数据帧的功能码域中功能码对应的功能,接下来执行步骤 106 ;
步骤106,执行完对应的功能后由单片机通过485通信单元发送数据接收响应帧,以向主设备回应对应的功能已经执行完毕。
[0011]本发明提供的基于Modbus协议的从设备,实现Modbus总线上数据帧的收发和有效性判断功能,具有成本低、容易生产和应用广泛的特点,提高了主、从设备之间通信的可靠性。

【专利附图】

【附图说明】
[0012]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0013]图1为本发明实施例的从设备的结构示意图;
图2所示Modbus总线上数据帧的结构示意图
图3为图1所示从设备执行数据有效性判断的流程图。

【具体实施方式】
[0014]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0015]参见图1所示从设备的结构示意图,本实施例提供了基于Modbus协议的从设备,包括:电源单元、485通信单元、单片机和执行单元:电源单元用于为485通信单元、单片机和执行单元供电;485通信单元用于接收Modbus总线上的数据帧和转发单片机生成的数据接收响应帧;单片机用于判断485通信单元接收的数据帧是否为符合Modbus协议的有效数据,如果是有效数据,则生成数据接收响应帧和执行信号,并将数据接收响应帧和执行信号分别发送给485通信单元和执行单元;执行单元用于根据执行信号进行相应操作;如果不是有效数据,则串口中断响应结束,单片机重新处于接受数据准备状态。
[0016]参见图2所示数据帧的结构示意图,数据帧包括:地址域、功能码域、数据域和差错校验域。数据接收响应帧符合Modbus协议。
[0017]其中,单片机可以是51单片机,也可以为微控制器。485通信单元为RS-485通讯接口,可以是通用异步收发器(UART,Universal Asynchronous Receiver/Transmitter)或通用同步 / 异步串行接收发送器(USART,Universal Synchronous/Asynchronous Receiver/Transmitter),用于完成与从设备连接的主设备之间的数据收发功能。
[0018]采用本实施例的从设备可以在接收数据帧后进行数据进行了多层有效性判断,接受了无效的数据帧后不进行相应操作,例如控制继电器开闭操作,并且能向主设备回送例外响应帧,表明传送错误。而现有从设备接收到无效数据帧也可能会执行操作,因此本发明的从设备可以防止从设备误操作,提高了通信的可靠性。
[0019]图2所示数据帧中,起始位和结束符中的Tl至T4分别指一个脉冲时间,或称为字符时间;地址域占8bit,地址域中地址代码与接收数据帧的从设备中的地址代码应当相同;功能码域占8bit,功能码用于指示从设备执行哪些操作,从设备中也应存储有相应的功能码,或相同的功能码;数据域占用NXSbit,N为自然数,用于传输数据;差错校验域占用16 bit,校验码采用循环冗余校验码(CRC,Cyclic Redundancy Check)。
[0020]其中,地址域中可能的从设备地址代码值是O?247 (十进制),单个从设备的地址范围是I?247,地址代码值O用作广播地址。数据帧必须作为一连续的流传输。例如,在一个数据帧传输过程中有超过1.5个字符时间的停顿时间,从设备将刷新出不完整的数据帧并假定1.5个字符时间后的一个字节是一个新数据帧的地址域。同样地,如果一个数据帧在小于3.5个字符时间内接着前个数据帧传输,从设备将认为后一个数据帧是前一数据帧的延续,这将导致一个错误,于是校验码值判断结果为校验码值错误。字符时间规定在了在Modbus协议中。
[0021]参见图3所示数据有效性判断的流程图,单片机判断485通信单元接收的数据帧是否为符合Modbus协议的有效数据具体包括:
步骤101,单片机判断从设备是否处于中断状态,如果从设备未处于串口中断状态,则执行步骤102 ;例如串口中断为USART_RXC中断。
[0022]步骤102,判断485通信单元接收的数据帧的地址域中存储的地址代码是否与单片机中存储的地址代码相同,如果相同则执行步骤103,如果不相同则所接收的数据帧不是有效数据;
步骤103,根据单片机中存储的差错校验规则判断数据帧的差错校验域中存储的校验码值是否正确,如果正确则执行步骤104,如果不正确则所接收的数据帧不是有效数据,此时串口中断响应结束,单片机重新处于接受数据准备状态;
步骤104,判断数据帧的功能码域中存储的功能码是否与单片机中存储的功能码是否一致,即功能码是否有效,如果一致则判断出所接收的数据帧为有效数据并执行步骤105,否则判断出所接收的数据帧不是有效数据并且生成例外响应帧,并且通过485通信单元转发例外响应帧。这里的一致是指从设备中也存储有相应的功能码。
[0023]步骤105,在单片机控制下由执行按原执行数据帧的功能码域中功能码对应的功能,接下来执行步骤106 ;
步骤106,执行完对应的功能后由单片机通过485通信单元发送数据接收响应帧,以向主设备回应对应的功能已经执行完毕。
[0024]上述流程还包括:单片机监控数据帧的传输状态,在每个字节接收完毕后启动定时器,并且记录从定时器启动时刻到接收到非空字节时刻之间的时间间隔,判断时间间隔是否小于3.5个脉冲时间,如果是则判断出校验码值不正确,即:485通信单元接收的数据帧不是有效数据,此时串口中断响应结束,单片机重新处于接受数据准备状态。
[0025]图2所示流程主要完成利用Modbus协议解析与处理数据帧的功能,在判断出接收到的数据帧是有效数据后,可以生成电平信号等执行信号通知执行单元执行相应操作。例如,执行单元是继电器,则通过电信号使继电器断开或闭合。
[0026]另外,单片机还可以与传感器等输入/输出(I/O)单元连接,为执行单元的操作提供参数,I/o单元可以用于向另一设备发送信息以便控制这一设备。
[0027]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种基于Modbus协议的从设备,其特征在于,包括:电源单元、485通信单元、单片机和执行单元: 电源单元用于为485通信单元、单片机和执行单元供电; 485通信单元用于接收Modbus总线上的数据帧和转发单片机生成的数据接收响应帧; 单片机用于判断485通信单元接收的数据帧是否为符合Modbus协议的有效数据,如果是有效数据,则生成数据接收响应帧和执行信号,并将数据接收响应帧和执行信号分别发送给485通信单元和执行单元; 执行单元用于根据执行信号进行相应操作; 其中,数据帧包括:地址域、功能码域、数据域和差错校验域。
2.根据权利要求1所述的基于Modbus协议的从设备,其特征在于,单片机判断485通信单元接收的数据帧是否为符合Modbus协议的有效数据具体包括: 步骤101,单片机判断从设备是否处于串口中断状态,如果从设备未处于串口中断状态,则执行步骤102 ; 步骤102,判断485通信单元接收的数据帧的地址域中存储的地址代码是否与单片机中存储的地址代码相同,如果相同则执行步骤103,如果不相同则所接收的数据帧不是有效数据; 步骤103,根据单片机中存储的差错校验规则判断数据帧的差错校验域中存储的校验码值是否正确,如果正确则执行步骤104,如果不正确则所接收的数据帧不是有效数据; 步骤104,判断数据帧的功能码域中存储的功能码是否与单片机中存储的功能码是否一致,如果一致则判断出所接收的数据帧为有效数据并执行步骤105,否则判断出所接收的数据帧不是有效数据并且生成例外响应帧,并且通过485通信单元转发例外响应帧; 步骤105,在单片机控制下执行数据帧的功能码域中功能码对应的功能,接下来执行步骤 106 ; 步骤106,执行完对应的功能后由单片机通过485通信单元发送数据接收响应帧,以向主设备回应对应的功能已经执行完毕。
【文档编号】H04L12/40GK104486181SQ201410638452
【公开日】2015年4月1日 申请日期:2014年11月13日 优先权日:2014年11月13日
【发明者】孟凡智, 李婷婷, 徐峰, 司进华, 张骞, 王子彬, 杨晓光, 孟娇, 张迎杰, 赫立远 申请人:华晨汽车集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1