电子开发 | 基础入门 | 电路原理图 | 姊舰鍥惧疄渚� | PLC鍩虹   銆婂鏋滃枩娆㈡湰绔欙紝璇锋寜 Ctrl+D 鎵嬪姩鏀惰棌锛佹劅璋㈡偍鐨勬敮鎸併€�涓€璧峰涔犱竴璧疯繘姝ワ紝鐢靛瓙寮€鍙戠帇娆㈣繋鎮紒.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

鈽呯數璺叕寮忔墜鍐岋紝鏈€鏂扮増銆婄數瀛愮數璺叕寮忚绠楀櫒銆嬶紝鐢佃矾鍏紡鏌ヨ鎵嬪唽 鐢佃矾鍏紡璁$畻鍣ㄣ€愮數瀛愪粠涓氫汉鍛樺繀澶囨墜鍐屻€�
鈽嗗崄澶╁浼氬崟鐗囨満瀹炰緥100 c璇█ chm鏍煎紡銆傝祫鏂欏唴瀹硅缁嗭紝瑕嗙洊渚嬪瓙澶氾紝鍐呭骞裤€愮數瀛愪粠涓氫汉鍛樺繀澶囨墜鍐屻€�
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> PLC基础入门教程 >> 正文

分分钟玩转通讯!西门子plc的Modbus通讯MBUS_CTRL 、MBUS_MSG和MBUS_INIT、MBUS_SLAVE指令

作者:佚名    文章来源:本站原创    点击数:20193    更新时间:2023-01-18

Modbus通讯标准协议可以通过各种传输方式传播,如RS-232C、RS-485、光纤、无线电等。Modbus具有两种串行传输模式,ASC2和RTU模式。支持Modbus协议的一般都支持RTU模式,通信双方(主站和从站)必须同时支持上述模式中的一种。一般都使用RTU模式。

Modbus是一种单主站的主/从通信模式,Modbus网络上只能有一个主站存在(注意和PPI协议的区别),主站在Modbus网络上没有地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范围为1-247。

主站  

NO.1 初始化

使用MODBUS通讯协议,必须首先初始化程序,使用MBUS_CTRL可初始化、监视或禁用Modbus通讯,在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。指令完成后立即设定'完成'位,才能继续执行下一条指令。在每次扫描且 EN输入打开时执行该指令。

 

MBUS_CTRL指令必须在每次扫描时(包括首次扫描)被调用,


                    MBUS_CTRL指令        


Mode('模式')输入数值选择通讯协议。输入值1(可用SM0.0替代或者直接用数值1)将CPU端口分配给Modbus协议并启用该协议。输入值0将CPU端口分配给PPI系统协议并禁用Modbus协议。

Baud (波特率)一般选择9600。

Parity (奇偶校验) 参数被设为与Modbus从站奇偶校验相匹配。所有设置使用一个起始位和一个停止位。一般选择偶校验2.

Timeout('超时')参数设为等待来自从站应答的毫秒时间数。'超时'数值可以设置的范围为1毫秒到32767毫秒。典型值是1000毫秒(1秒)(一般都设定为1000)

。'超时'参数应该设置的足够大,以便从站有时间对所选的波特率作出应答。

'超时'参数用于确定Modbus从站是否对请求做出应答。'超时'值确定Modbus主设备在发送了请求的最后一个字符后,将要等待多长时间才会有应答的第一个字符。如果在'超时'规定的时间内至少收到应答的一个字符,Modbus主设备将从Modbus从站接收到整个应答。

Done(完成) MBUS_CTRL指令完成时,'完成'输出打开。

Error(错误) 输出包含执行该指令的结果。下表定义了在执行MBUS_CTRL指令时会产生的错误条件。指定一个字节来存放错误代码。

错误代码         说明

0       无错误

1       奇偶校验选择无效

2       波特率选择无效

3       超时选择无效

4       模式选择无效

初始化完成!

 

 

 

 NO.2 启动Modbus协议

读操作

MBUS_MSG(端口0使用)指令(或用于端口1的MBUS_MSG_P1)用于启动对Modbus从站的请求并处理应答。

当EN输入和'首次'输入打开时,BUS_MSG指令启动对Modbus从站的请求。发送请求、等待应答、并处理应答通常需要多次扫描。EN输入必须打开以启用请求的发送,并应该保持打开直到'完成'位(M10.1)被置位。


MBUS_MSG指令 


First(首次启动),在有新请求要发送时才打开以进行一次扫描,通过一个边沿检测元素(例如上升沿)打开,这将导致请求被传送一次。

Slave(从站地址) 从站的地址,允许的范围是0到247,地址0是广播地址,只能用于写请求。不存在对地址0的广播请求的应答。从站的实际地址范围为1-247(从站的地址(Slave)在1-247范围内任选一个数即可,但需要和从站程序中的地址对应,否则通讯失败)。主站在Modbus网络上没有地址。

RW('读写') 指定是用来读取还是写入该消息。'读写'参数允许使用下列两个值。

0  读

1        写

Addr (地址) 是指向读取或写入的起始Modbus地址,'地址'的指定取值范围基于Modbus从站支持的地址。一般都取40001。

Count (计数) 指定在该请求中读取或写入的数据元素的数目,MBUS_MSG指令将读取或写入最大120个字或1920个位(240字节的数据)。'计数'的实际限值将取决于Modbus从站中的限制。

DataPtr(地址指针) 指向S7-200 CPU的V存储器中与读取或写入请求相关的数据的间接地址指针。DataPtr值作为间接地址指针传递到MBUS_MSG。例如,如果要写入Modbus从站的数据从S7-200 CPU中的地址VW200开始,则DataPtr的数值将会是&VB200 (VB200的地址)。指针必须始终是VB类型,即使它们指向字数据。

 

Done(完成位) 输出在发送请求和接收应答时关闭。'完成'输出在应答完成或MBUS_MSG指令因错误而中止时打开。完成信息存入辅助寄存器中(如M10.1)

Error(错误) 输出仅当'完成'输出打开时有效,反馈错误代码,存入辅助位寄存器中(如MB6)

MBUS_MSG。

错误代码         说明

0       无错误

1       应答时奇偶校验错误:仅当使用偶校验或奇校验时才会发生。传输被干扰,可能会收到不正确的数据。该错误通常是由电气故障(例如错误接线或者影响通讯的电噪声)引起的。

2       未使用

3       接收超时:在'超时'时间内,没有来自从站的应答。可能有以下一些原因:与从站的电气连接有问题、主设备和从站设置为不同的波特率/奇偶校验设置,以及错误的从站地址。

4       请求参数出错:一个或多个输入参数(从站、读写、地址或计数)被设置为非法值。检查文档中输入参数的允许值。

5       Modbus主设备未启用:在调用MBUS_MSG前,每次扫描时都调用MBUS_CTRL。

6       Modbus忙于处理另一个请求:一次只能激活一条MBUS_MSG指令。

7       应答时出错: 收到的应答与请求不相关。这表示从站中出现了某些错误,或者错误的从站应答了请求。

8       应答时CRC错误: 传输被干扰,可能会收到不正确的数据。该错误通常是由电气故障(例如错误接线或者影响通讯的电噪声)引起的。

101  从站不支持在该地址处所请求的功能:请参阅'使用Modbus主设备指令'帮助主题中的所需Modbus从站功能支持表。

102  从站不支持数据地址:'地址'加上'计数'所要求的地址范围超出了从站所允许的地址范围。

103  从站不支持数据类型:该'地址'类型不被从站支持。

104  从站故障

105  从站已接受消息但应答延迟:这是MBUS_MSG的错误,用户程序应在稍后重新发送请求。

106  从站忙,因此拒绝消息:可以再次尝试相同的请求,以获得应答。

107  从站因未知原因而拒绝消息。

108  从站存储器奇偶校验错误:从站中有错误。

 

低位编号的错误代码(1到8)是由MBUS_MSG指令检测到的错误。这些错误代码通常指示与MBUS_MSG指令的输入参数有关的问题,或接收来自从站的应答时出现的问题。奇偶校验和CRC错误指示存在应答但是数据未正确接收。这通常是由电气故障(例如连接有问题或者电噪声)引起的。

高位编号的错误代码(从101开始)是由Modbus从站返回的错误。这些错误指示从站不支持所请求的功能,或者所请求的地址(或数据类型或地址范围)不被Modbus从站支持。

 

由于一次只能激活一条MBUS_MSG指令。所以在第一条MBUS_MSG指令完成后,启动第二条指令,同时必须复位第一条指令。如果启用了多条MBUS_MSG指令,则将处理所执行的第一条MBUS_MSG指令,之后的所有MBUS_MSG指令将中止并产生错误代码6。


 


写操作

M10.0动作之后启动第二条MBUS_MSG指令(写指令)(所谓通讯就是主/从的读、写或者读写的交互过程),将主站的数据写入到从站的处理器中。


MBUS_MSG指令 


Slave(从站地址) 同读操作不变,地址与从站相一致。

RW写1,启动“写”功能。

Addr 不能与“读”地址重合。

Count 同上。

DataPtr 同上,不能与读操作地址重复。

Done 同上,存储器不能重复。

Error 同上,位寄存器最好不要重复。

写操作完成后,置位读操作,复位写操作。


读写循环执行


 

数据传送,(进行对话)

MOV_B指令 



从站

MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令。指令完成后立即设定'完成'位,才能继续执行下一条指令。


MBUS_INIT指令 


Mode(模式) 为1,启用Modbus协议。

Addr(地址) 与主站的寻址对应一致。

Baud (波特率)一般选择9600。

Parity (奇偶校验) 参数被设为与Modbus从站奇偶校验相匹配。所有设置使用一个起始位和一个停止位。一般选择偶校验2.(和主站保持一致)

Delay('延时')参数通过将指定的毫秒数增加至标准Modbus信息超时的方法延长标准Modbus信息结束超时条件。该参数的典型数值在有线网络上应为0。

MaxIQ 参数将供Modbus地址0xxxx和1xxxx使用的I和Q点数设为0至128之间的数值。建议使用的MaxIQ数值是128,该数值可在S7-200中存取所有的I和Q点。

MaxAI参数将供Modbus地址3xxxx使用的字输入(AI)寄存器数目设为0至32之间的数值。

建议使用的MaxAI数值如下,这些数值可允许存取所有的S7-200模拟输入:(根据CPU型号选择数值)

0用于CPU 221

16用于CPU 222

32用于CPU 224、224XP、226和226XM。

MaxHold 参数设定供Modbus地址4xxxx使用的V存储器中的字保持寄存器数目。例如,为了允许主设备存取2000个字节的V存储器,将MaxHold 设为1000个字的数值(保持寄存器)。

HoldStart参数是V存储器中保持寄存器的起始地址,Modbus主设备可存取V内存MaxHold个字数,从HoldStart开始。

Done(完成)MBUS_INIT指令完成时,'完成'输出打开。

Error(错误)'错误'输出字节包含执行指令的结果。

错误代码         说明

0       无错误

1       内存范围错误

2       非法波特率或奇偶校验

3       非法从属地址

4       非法Modbus参数值

5       保持寄存器与Modbus从属符号重叠

6       收到奇偶校验错误

7       收到CRC错误

8       非法功能请求/功能不受支持

9       请求中的非法内存地址

10     从属功能未启用


MBUS_SLAVE指令被用于为Modbus主设备发出的请求服务。

如果'完成'关闭,错误参数不会改变。


MBUS_SLAVE从站指令 


 



40001至4xxxx是映射至V存储器的保持寄存器。

所有Modbus地址均以1为基位。

下表显示映射至S7-200地址的Modbus地址。

4xxxx        HoldStart+2 x (xxxx-1)。

40011   1000+2*(11-1)=1020 。


接收数据


 


Tags:modbus通讯,西门子plc,指令  
责任编辑:admin
相关文章列表
一篇文章彻底搞定西门子PLC存储器精华知识(图文并茂,良心整理)
西门子plc S7-200Smart_西门子S7-200 SMART编程实例,整数运算指
西门子plc smart软元件寄存器存储器_西门子PLC先从S7-200 SMART 
西门子plc smart模拟量常见问题_西门子S7-200SMART 模拟量等常见
西门子SMART PLC 常见问题,必备知识点!西门子plc smart常见问题
西门子plc smart选型_西门子Smart 200 PLC实际项目中的选型应用
西门子plc RS触发器指令的分类与用法 _ SR触发器用法
西门子plc S7-200  FOR语句循环问题_西门子FOR循环
西门子PLC 200Smart 编程中如何用FOR循环指令轻松实现多个数据按
西门子Plc计数器指令的程序代码示例_产品数量检测梯形图
西门子s7-200系列plc实例:抢答器控制程序,三路抢答器设计
西门子PLC模拟量转换scale模块公式代码分析S_ITR  模拟量子程序计
西门子PLC S7-200模拟量的线性化处理_ 4到20ma模拟量转换公式
西门子plc 读实时时钟READ_ RTC( Read real time clock 读实时时
西门子plc 指令SHRB 移位寄存器指令用法例子
用西门子PLC设计天塔之光控制系统梯形图实例
西门子PLC数据处理指令_循环左移、循环右移、寄存器移位SHRB
西门子plc S7-200系列PLC整数加减乘除指令入门教程_算术运算
西门子plc变量存储器知识_西门子S7-200的VB、VW和VD
西门子plc寄存器的vb vw vd 数据长度及关系
西门子plc变量存储器v0.0与VB0、VD0、VW0的关系
西门子200PLC中AIW0是什么意思_模拟量通道地址_模拟量地址
西门子plc S7-200PLC的地址分配_开关量地址模拟量输入输出地址分
西门子plc s7-200如何用模拟量编程_EM235模拟量编程梯形图
西门子plc程序梯形图实例:led数码管显示9-5控制系统
西门子S7-200系列PLC递增与递减指令用法
西门子plc指令和三菱plc指令大全_西门子、三菱指令大全
西门子PLC 200SMART型号大全,S7-200 SMART各个CPU 模块及输入输
学好西门子S7-200 smart PLC基础知识必备 映像区和数据类型,定时
西门子S7-200PLC传送数据MOV_B,MOV_W,MOV_DW,MOV_R指令详解
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
推荐文章
鐢靛瓙寮€鍙戠綉锛氭眹闆嗙患鍚堝悇绫荤數瀛愬埗浣滀笌鐢佃矾鍥剧殑缃戠珯锛宲lc宸ユ帶鎶€鏈�,妯$數鏁扮數鐭ヨ瘑,鍗曠墖鏈篍DA绛夌瓑锛佽崯钀冪數璺浘缃戠珯绮惧崕锛屼负宸ョ▼甯堝垱閫犱环鍊笺€傛杩庡叧娉ㄥ井淇″叕浼楀彿锛氱數瀛愬紑鍙戠綉锛�
最新推荐
璧勬枡鍖呬笅杞�
 [闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬螖閿曚焦纭堕柕鍫亰閺岋繝宕掗敂钘夘伓]闂備礁鎲¢妵鐐电矆娓氣偓婵″灚寰勭仦绋夸壕婵炴垵纾槐鎵磼閸欐ê宓嗙€规洩绻濆鎾偐瀹割喗姣堥梻浣告惈閻楀棝骞栭锔藉仾闁告洦鍓涢悷褰掓煥閻曞倹瀚�100 c闂佽崵濮村ù鍕箯閿燂拷
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]濠电偞鍨堕幐鎼佀囩€圭姰浜圭紒鈧悜鐫犻梺璇插閸愯崵绱撳鍗炲К闁告洦鍓涢々鐑芥偣閹帒濡介柛鈺佸€垮鍫曟倻閸℃浠у┑鐐叉-閺侇煝-TR
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]LM324闂佸搫顦弲婊堝礉閺嶎厼妫橀柨鐕傛嫹4~20mA闂佸搫顦遍崕鎴﹀箯閿燂拷1~5V闂備焦鐪归崹褰掓倶濮樿京鐭堥柨鐕傛嫹
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]LM386濠碉紕鍋涘﹢杈╁垝椤栫偞鍊垫い鎺嶇劍婵挳鏌熼幑鎰靛殭妞ゆ柨锕弻娑滅疀閹垮啫鍓跺銈冨劜閹瑰洤顕i妸鈺佺畾鐟滃绂嶉敐澶嬬厱闁挎繂鍟俊濂告偨椤栥倖瀚�
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]936闂備胶绮敮鎺楁晝閵堝牄浜归柟缁㈠枟閸嬨劌霉閿濆懎鏆熼柣鏂挎嚇閺屾稑螣閻撳孩鐏侀梺璇″枛閿曨亜鐣烽崼鏇熸櫢闁跨噦鎷�
 [闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬螖閿曚焦纭堕柕鍫亰閺岋繝宕掗敂钘夘伓]闂佺儵鍓濈敮鎺楀箠鎼淬劍鏅柟閭﹀厴閺嬫牠鏌曡箛銉х?闁靛牊鎸抽幃褰掓偖鐎涙ê顏�+婵犵數鍋為幐鎾疾濞戞埃鍋撻惂鍛婂+闂備胶顢婄紙浼村磿閹绢噮鏁嗛柣鏂垮悑閸庡秹鏌涢弴銊ヤ簻缂佲偓閿燂拷
 [闂傚倷绶¢崑鍛潩閵娾晛鏋侀柕鍫濐槹閸嬨劑姊婚崼鐔恒€掗柟钘夌Ч閹鎷呴悷鎵槰濡炪倖鎸搁幉鈥翅缚椤忓牜鏁嶆繛鍡樺姦閸嬶拷]S7-200PLC闂備焦鐪归崝宀€鈧凹浜為幐鎺楀閵堝棗鍓抽梺缁樻⒐濡叉帡骞忛鈷氬綊鎮崨顔碱伓 S7_2
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]S7-200闂佸湱鍘ч悺銊╁箰婵犳艾鍑犻柛鎰ㄦ櫇椤╃兘鎮规担鍛婅础缂佲偓閸曨垱鐓曢煫鍥风悼閸樻粎绱掗幉瀣,STEP7
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]ModbusPoll闂備礁鎲$划宀勵敆閻栧獛busSalve闂備胶枪妤犲繘骞忛敓锟�
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]STEP7婵犵妲呴崹顏堝礈濠靛牃鍋撳顓犳噰闁哄苯鐭佺粻娑㈠棘鐠恒劍鈻屽┑鐐差嚟婵即宕愰弴鐘哄С闁跨噦鎷� Smart_
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]Modbus闂佽崵濮撮鍛村疮閹惰姤鍎婃い鏍ㄧ矊閸ㄦ繈鏌涢幘妤€鍊荤憴锟� v1.024 缂傚倸鍊风欢銈夊箯閿燂拷
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]Modscan32闂備礁鎲$划宀勵敆閻栧獛sim32,modb
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]89c51闂備胶枪缁绘劙藝闁秵鍋熸繛鎴欏灩濡﹢姊洪锝囶灱闂傚棗缍婇弻锝夘敂閸℃鐝㈢紓浣介哺閻涱槝otues
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]濠电偞鍨堕幐绋棵洪妶澶婄濡わ絽鍟崒銊╂煕閻愭潙袨otues濠电偛顕慨鎯р枖閺囩儑鑰块柨娑樺閻瑩鎮楅敐搴濈敖缁炬澘绉电换婵婎槼闁告梹顨婇幃銉╂晸閿燂拷
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]51闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬鏌涘┑鍡楊仼闁秆冿功缁辨帞鈧綀鍩栫€氾拷 protues濠电偛顕慨鎯р枖閺囩儑鑰块柨鐕傛嫹
鏈€鏂版枃绔�
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询