详细介绍一下MOBUS总线?

缂傚倸鍊搁崐鎼佸磹閹间礁纾圭憸鐗堝笚閸嬪鏌i幇顒備粵妞ゆ劘濮ら妵鍕箛閸洘顎嶉梺鍝勬媼閸撶喖寮婚妸鈺傚亞闁稿本绋戦锟�濠电姷鏁搁崑鐘诲箵椤忓棗绶ゅΔ锝呭暞閸ゅ苯螖閿濆懎鏆欑紒鐘崇墵閺屻劑鎮ら崒娑橆伓闂傚倸鍊风粈渚€骞夐敓鐘冲仭闁挎洖鍊搁崹鍌炴煟閵忋垺鏆╅柛妤佸哺閺岋綁骞嬮敐鍡╂缂備緡鍋勭粔褰掑蓟濞戙埄鏁冮柨婵嗘椤︺劑姊洪幐搴c€掗柛鐘崇墵瀵濡搁妷銏☆潔闂佹儳娴氶崑鍕敂閿燂拷2025/1/9
详细介绍一下MOBUS总线?
详细介绍一下MOBUS总线?

Mobus应该说一种通讯协议,最初为美国modicon公司为其PLC产品定义的一个基于RS232/422/485的串行通信协议,现在许多PLC、仪表等都支持这个协议。

你在baidu搜索“Mobus通讯协议”,就会出来很多这方面的内容了,一定有你需要的!!

1、奇偶校验

用户可以配置控制器是奇或偶校验,或无校验。这将决定了每个字符中的奇偶校验位是如何设置的。

如果指定了奇或偶校验,“1”的位数将算到每个字符的位数中(ASCII模式7个数据位,RTU中8个数据位)。例如RTU字符帧中包含以下8个数据位:

1 1 0 0 0 1 0 1

整个“1”的数目是4个。如果便用了偶校验,帧的奇偶校验位将是0,便得整个“1”的个数仍是4个。如果便用了奇校验,帧的奇偶校验位将是1,便得整个“1”的个数是5个。

如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。代替一附加的停止位填充至要传输的字符帧中。

两种传输模式中(ASCII或RTU),传输设备以将Modbus消息转为有起点和终点的帧,这就允许接收的设备在消息起始处开始工作,读地址分配信息,判断哪一个设备被选中(广播方式则传给所有设备),判知何时信息已完成。部分的消息也能侦测到并且错误能设置为返回结果。

1、ASCII帧

使用ASCII模式,消息以冒号(:)字符(ASCII码 3AH)开始,以回车换行符结束(ASCII码 0DH,0AH)。

其它域可以使用的传输字符是十六进制的0...9,A...F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。

消息中字符间发送的时间间隔最长不能超过1秒,否则接收的设备将认为传输错误。一个典型消息帧如下所示:

起始位 设备地址 功能代码 数据 LRC校验 结束符

1个字符 2个字符 2个字符 n个字符 2个字符 2个字符

图2 ASCII消息帧

2、RTU帧

使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。在网络波特率下多样的字符时间,这是最容易实现的(如下图的T1-T2-T3-T4所示)。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。

整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。一典型的消息帧如下所示:

起始位 设备地址 功能代码 数据 CRC校验 结束符

T1-T2-T3-T4 8Bit 8Bit n个8Bit 16Bit T1-T2-T3-T4

图3 RTU消息帧

3、地址域

消息帧的地址域包含两个字符(ASCII)或8Bit(RTU)。可能的从设备地址是0...247 (十进制)。单个设备的地址范围是1...247。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。

地址0是用作广播地址,以使所有的从设备都能认识。当Modbus协议用于更高水准的网络,广播可能不允许或以其它方式代替。

4、如何处理功能域

消息帧中的功能代码域包含了两个字符(ASCII)或8Bits(RTU)。可能的代码范围是十进制的1...255。当然,有些代码是适用于所有控制器,有此是应用于某种控制器,还有些保留以备后用。

当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。例如去读取输入的开关状态,读一组寄存器的数据内容,读从设备的诊断状态,允许调入、记录、校验在从设备中的程序等。

当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备仅回应相应的功能代码。对异议回应,从设备返回一等同于正常代码的代码,但最重要的位置为逻辑1。

例如:一从主设备发往从设备的消息要求读一组保持寄存器,将产生如下功能代码:

0 0 0 0 0 0 1 1 (十六进制03H)

对正常回应,从设备仅回应同样的功能代码。对异议回应,它返回:

1 0 0 0 0 0 1 1 (十六进制83H)

除功能代码因异议错误作了修改外,从设备将一独特的代码放到回应消息的数据域中,这能告诉主设备发生了什么错误。

主设备应用程序得到异议的回应后,典型的处理过程是重发消息,或者诊断发给从设备的消息并报告给操作员。

5、数据域

数据域是由两个十六进制数集合构成的,范围00...FF。根据网络传输模式,这可以是由一对ASCII字符组成或由一RTU字符组成。

从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代码所定义的所为。这包括了象不连续的寄存器地址,要处理项的数目,域中实际数据字节数。

例如,如果主设备需要从设备读取一组保持寄存器(功能代码03),数据域指定了起始寄存器以及要读的寄存器数量。如果主设备写一组从设备的寄存器(功能代码10十六进制),数据域则指明了要写的起始寄存器以及要写的寄存器数量,数据域的数据字节数,要写入寄存器的数据。

如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。

在某种消息中数据域可以是不存在的(0长度)。例如,主设备要求从设备回应通信事件记录(功能代码0B十六进制),从设备不需任何附加的信息。

6、错误检测域

标准的Modbus网络有两种错误检测方法。错误检测域的内容视所选的检测方法而定。

ASCII

当选用ASCII模式作字符帧,错误检测域包含两个ASCII字符。这是使用LRC(纵向冗长检测)方法对消息内容计算得出的,不包括开始的冒号符及回车换行符。LRC字符附加在回车换行符前面。

RTU

当选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC的高位字节是发送消息的最后一个字节。

闂傚倸鍊峰ù鍥儍椤愶箑绀嬫い鎺戭槹閸嬨儲绻濋悽闈涗沪婵炲吋鐟ョ叅闁靛牆顧€缂嶆牠鏌曡箛瀣偓鏇炴纯闂備胶纭堕崜婵嗙幓閸ф鐒垫い鎺戭槸濞呭秹鏌$仦鍓р槈闁宠楠歌灒闁革富鍙€閸忔帡姊洪懡銈呅i柛鏃€顨婂畷浼村冀椤撶姴绁﹂梺瑙勫礃椤曆呯不濞戞瑣浜滈煫鍥ㄦ尰椤ワ紕绱掔紒妯虹仸缂佺粯鐩弫鎰板川椤旂虎妲洪梻浣告啞閹歌崵鎹㈤崘顏佸亾闂堟稏鍋㈢€规洏鍔戝鍫曞箣閻橀潧骞€闂傚倷鑳舵灙闁哄牜鍓涚紓鎾淬偅閸愩劎锛涢梺瑙勫礃椤曆呯矆閸愵喗鍋i柟顓熷笒婵℃寧銇勯敂璇叉灈閾绘牠鏌e鈧ḿ褎绂掗敂鐣岀瘈闁逞屽墴瀹曠兘顢橀悩鐢垫殽濠电姰鍨奸崺鏍礉閺嶎厼纾婚柕濞炬櫆閻撳繐鈹戦悙鑼虎闁逞屽墯椤ㄥ﹪骞婂┑瀣畾妞ゎ兘鈧磭绉洪柟顔规櫆缁楃喖顢涘顓熸瘜缂傚倸鍊搁崐鍝ョ矓鐎靛摜鐭撻柣鐔稿閺嗭附銇勯弽顐粶妤犵偑鍨介弻锟犲炊閳轰絿銉╂煙閾忣偆绠炴慨濠冩そ閹粓鍩¢崒娑氬綗闂備礁鎽滄慨鐢告嚌妤e啫鐓濋柟鎹愵嚙缁狅綁鏌ㄩ弴妤€浜鹃弶鈺傜箞濮婅櫣绮欓幐搴㈡嫳闂佸憡鍨归幊鎾跺弲闂侀潧鐗嗛ˇ浼存偂濞戙垺鐓曟い鎰剁悼缁犮儲淇婇懠顒€鍘存慨濠傤煼閸┾偓妞ゆ巻鍋撴顏冨嵆瀹曠厧鈹戦崼銉у礈闂傚倷绀侀幉锟犲礉濡 鏋栭柡鍥╁Х閻棗顭块懜闈涘闁稿缍侀弻娑㈠Ψ閹存繂鏆炴禍娑㈡煟鎼淬埄鍟忛柛鐘冲哺瀹曟螣娓氼垰娈ㄥ銈嗘磵閸嬫挻顨ラ悙鍙夘棡闁挎稒鍔栭幏鍛存惞閸︻厼甯ㄧ紓鍌氬€搁崐椋庢閿熺姴鍨傜€规洖娲ら崹婵囥亜閺嶎偄浠滈柛銊ュ€圭换婵囩節閸屾凹浼€濡炪倐鏅犻弨閬嶅Φ閸曨垰绠抽柟鎼灠婵稓绱撴担鐟板妞わ絿顭�688cp688@163.com

闂傚倸鍊烽懗鍫曞磿閻㈢ǹ鐤炬繝闈涙川娴犳岸姊绘担鍛婂暈妞ゅ繑鎮傚畷鍫曞Ω閵忊€崇槯闂傚倷绀侀幉锟犳儎椤栫偛纾诲┑鐘叉搐閸氬綊鏌ㄩ悤鍌涘
闂傚倸鍊烽懗鍫曞磿閻㈢ǹ鐤炬繝闈涙川娴犳岸姊绘担鍛婂暈妞ゅ繑鎮傚畷鍫曞Ω閵忊€崇槯闂傚倷绀侀幉锟犳儎椤栫偛纾诲┑鐘叉搐閸氬綊鏌ㄩ悤鍌涘: