当前位置: 首页>房源搜索> 正文

「技术课堂」S7 200 SMART Modbus RTU快速入门

2024-12-05193

一、硬件连线

1串口接口

Modbus通讯原理:Modbus通讯为主从通讯,即一问一答的方式进行通讯。主站发送响应的数据给某个从站,从站响应;主站没有数据发送时,从站不响应。

这个通讯机制,贯彻到编程思路,后文编程章节中会讲到。

Modbus协议是运行在串口接口上,常见的串口接口有RS-232,RS-485,RS-422。Modbus常用RS-485接口。

一般RS-232三条通讯线即可完成通讯链路。如图1所示,RS232的设备1的txd接到设备2的rxd,rxd接到txd,可以同时接受或发送,这是全双工模式。因RS-232特性限制,只能一对一连接,即一个主站连接一个从站。因此在Modbus通讯上RS-232接口不多见。

图一RS-232

RS-485两条通讯线即可完成通讯链路。如图2所示,多台设备的A短接为一条线路,B短接为另一条线路。同一时间只能发送或者接受,此为半双工。多台设备可以挂载同一链路,可实现一台主站、多台从站之间进行通信。此应用场景最为多见。

图2RS-485

S7200SMART串行接口为RS-485,引脚示意图如表3。

表3S7200SMARTDB9引脚定义

注意:RS-485的A\B信号线,通俗叫法有A\B;485+\485-。S7200SMARTDB9引脚中的3号引脚,即RS-485信号B,为通俗叫法的A或485+;8号引脚,即RS-485信号A,为通俗叫法的B或485-。

2.总线连接器

在复杂的工业现场或长距离通讯的情况下,建议选择优质的总线连接器和电缆。总线连接器自带终端电阻和偏置电阻,在此情况下,可提高通讯的稳定和抗干扰能力。

总线连接器和电缆,订货号如表4。

序号

品名

订货号

1

PROFIBUS总线连接器90度出线无编程口

UN972-0BA12-0XA0

2

PROFIBUS总线连接器90度出线有编程口

UN972-0BB12-0XA0

3

PROFIBUS总线连接器35度出线无编程口

UN972-0BA41-0XA0

4

PROFIBUS总线连接器35度出线有编程口

UN972-0BB41-0XA0

5

PROFIBUS总线电缆紫色两芯屏蔽双绞线

UN830-0EH10

表4总线链接器电缆

3.为什么选择总线连接器和总线电缆

众所周知,网线有超五类和超六类之分,超五类传输带宽可高达1000Mb/s,但一般只应用在100Mb/s的网络中;超六类主要应用在千兆网络中,在传输性能上远远高于超五类网线标准。超五类,超六类的电缆直观区别就是电缆铜芯线径不同,超六类铜芯明显粗于超五类。

同理推测,总线电缆,回路阻抗:150R/KM,优于一般通讯电缆。线阻小,通讯距离长,抗干扰能力强。

总线连接器,自带终端电阻和偏置电阻,同样可以提高通讯的质量。

建议组网方式如图5:

图5总线接头

终端和偏置电阻如图6:

图6终端和偏置电阻

4.通讯距离

通讯波特率越高,通讯距离越短。在长距离通讯下,适当降低通讯速率。9600波特率的最长距离建议在1200米。

二.、Modbus地址

通讯的目的是对寄存器进行读写操作,因此需要了解Modbus地址的表示方式。

Modbus地址表示有多种方式,如40001,4x0001,0000H,此三个地址实为同一个地址。地址中有4标识的,为十进制表示方式,起始地址为1,即实际起始地址为40001;地址标识中有H的,为十六进制表示方式,起始地址为0。在SMARTPLC中,地址表示为40001;

亿维HMI或常见组态软件中,地址表示为4x1;在变频器或仪表中,地址常表示为0000H。

S7200SMART做从站,地址对应如下:

Modbus地址通常被写为包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备将地址映射至正确的功能

Modbus从站指令支持下列地址:

00001至00128是映射至的离散输出

10001至10128是映射至的离散输入

30001至30032是映射至AIW0至AIW62的模拟输入寄存器

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

所有Modbus地址均以1为基位。下表显示映射至S7-200地址的Modbus地址。

Modbus地址S7-200地址

00001

00002

00003

00127

00128

10001

10002

10003

10127

10128

30001AIW0

30002AIW2

30003AIW4

30032AIW62

40001HoldStart

40002HoldStart+2

40003HoldStart+4

4xxxxHoldStart+2x(xxxx-1)

对于亿维HMI,地址对应如表7:

表7HMImodbus地址及功能码

三、报文

对不同的Modbus地址进行读或写操作,需要不同的功能码,如上表7。

常见用的功能码有FC03、FC06,在此以功能码03对报文进行说明。

功能码03,对寄存器006BH开始的三个寄存器进行读操作,主站报文示例如下:

从机地址

功能码

起始地址

高位

起始地址

低位

寄存器数量高位

寄存器数量低位

CRC高位

CRC低位

01

03

00

6B

00

03

74

17

表8主站03报文

从站报文响应报文如下:

表9从站03报文

其他报文格式不再说明,有兴趣的可以到官网查询

四、S7200SMARTModbusRTU从站编程

图10从站程序

上面程序实现的功能:将CPU的0口设置为从站地址为1,波特率9600,偶校验的Modbus从站。

允许主站操作的IO数量为128个,模拟量32个,以VW0开始的1000个寄存器。CPU的VW0为Modbus地址40001,VW2为40002,依次类推。

参数说明:
“模式”(Mode)输入的值用于选择通信协议:输入值为1时,分配Modbus协议并启用该协议;输入值为0时,分配PPI协议并禁用Modbus协议。

参数“地址”(Addr)将地址设置为1至247之间(包括边界)的值。

参数“波特”(Baud)将波特率设置为1200、2400、4800、9600、19200、38400、57600或115200。

参数“奇偶校验”(Parity)应设置为与Modbus主站的奇偶验校相匹配。所有设置使用一个停止位。接受的值如下:0(无奇偶校验)、1(奇校验)和2(偶校验)。

参数“端口”(Port)设置物理通信端口(0=CPU中集成的RS-485,1=可选信号板上的RS-485或RS-232)。

参数“延时”(Delay)通过使标准Modbus信息超时时间增加分配的毫秒数来延迟标准Modbus信息结束超时条件。在有线网络上运行时,该参数的典型值应为0。如果使用具有纠错功能的调制解调器,则将延时设置为50至100ms之间的值。如果使用扩频无线通信,则将延时设置为10至100ms之间的值。“延时”(Delay)值可以是0至32767ms。

参数MaxIQ用于设置Modbus地址0xxxx和1xxxx可用的I和Q点数,取值范围是0至256。值为0时,将禁用所有对输入和输出的读写操作。建议将MaxIQ值设置为256。

参数MaxAI用于设置Modbus地址3xxxx可用的字输入(AI)寄存器数,取值范围是0至56。值为0时,将禁止读取模拟量输入。

参数MaxHold用于设置Modbus地址4xxxx或4yyyyy可访问的V存储器中的字保持寄存器数。例如,如果要允许Modbus主站访问2000个字节的V存储器,请将MaxHold的值设置为1000个字(保持寄存器)。

参数HoldStart是V存储器中保持寄存器的起始地址。该值通常设置为VB0,因此参数HoldStart设置为VB0(地址VB0)。也可将其它V存储器地址指定为保持寄存器的起始地址,以便在项目中的其它位置使用VB0。Modbus主站可访问起始地址为HoldStart,字数为MaxHold的V存储器。

MBUS_INIT指令完成时,“完成”(Done)输出接通。

Error输出字节包含指令的执行结果。仅当“完成”(Done)接通时,该输出才有效。如果“完成”(Done)关闭,则错误参数不会改变。

五、S7200SMARTModbusRTU主站编程

上文讲到Modbus通讯机制,主站设备同一时间或当前时间只允许发送或接受,对于多个从站,或多次对寄存器进行操作,建议采用轮询机制,即同一时间只允许触发一次MSG指令。按照此编程思路,推荐两种轮询操作。

1.主站初始化

将Modbus通讯波特率设为9600,偶校验,超时时间1000ms,使用本体DB9通讯。

图11主站初始化

2.轮询模式一

思路:用C0寄存器的数值变化,触发MSG指令,确保同一时间只有一个MSG在执行。

图12轮询1-1

程序功能:上电C0清零;主站初始完成后,C0为1;每MSG指令完成后,C0自加1;第三次完成后,再执行第一个MSG指令

轮询:

图13轮询1-2

网络3程序功能:读取从站地址为1的412345开始的5个寄存器,存放在主站CPUVW100开始的5个字。

网络4程序功能:读取从站地址为2的40001开始的5个寄存器,存放在主站CPUVW110开始的5个字。

3.轮询模式二

图14轮询2

程序功能:读取从站地址为1的40001开始的5个寄存器,存放在主站CPUVW100开始的5个字。

将CPUVW110开始的5个字写入从站地址为2的40001开始的5个寄存器。

也有习惯使用MSG指令的完成位置位一个内部继电器,触发下一条MSG指令,如此循环的;或固定时间的触发方式,等不同编程思路。不论哪种编程思路,都要确保同一时间只有一条MSG指令被触发。

六、注意事项

主站或从站初始化指令初始化后,PPI协议不可用。

B.同一个串口,只能用作Modbus主站、从站、PPI等其中的一种(程序控制初始化外)。

做主站时,同一时间只能有一条MSG指令被触发(重要的事说N遍)。

的DB9RS485的A、B有别于通俗说法的A、B。

E.认清从站寄存器地址表示方式,是十进制还是十六进制。

F.通讯顺利的情况下,可用跳过前四个章节。

七、问题排查

通讯异常时,建议从以下几个方面排查:

B.确保主从通讯参数一致。

C.确认从站的寄存器能被主站进行读写操作。某些变频器或仪表的寄存器只读或只写,或可读可写。某些变频器一次可读或可写的数据长度有限。

D.以上正常,监控PLC程序,检测某一个MSG指令是否一直触发,而没有跳转动作。

E.用电脑串口助手软件,监控通讯报文,定位是主站没有发出数据,还是从站没有响应数据,还是从站响应的报文有误。参考第三章节。

监控通讯报文:将电脑485的A、B并联在通讯链路上。

图15电脑监听

八、通讯时效

从站数量越多,操作寄存器的次数越多,通讯周期越长。为快速通讯,批量读取或写入寄存器、或提高通讯波特率。若有从站不在线或异常,通讯周期不可控。

以远程会议为例,说明Modbus通讯机制:

5个人远程会议,5个人同时说话,大家都听不清,实现不了信息交流。

引入主持人机制,主持人即主站,主持人把另外4个人都排上序号,1、2、3、4,即4个从站。

主持人说话,即主站发送报文,该报文有固定格式,第一个字节为从站地址,即人员编号。

主持人不说话,其他四人不准说话,即便是说话也会被主持人屏蔽。即从站任意发送报文,主站接受的也认为是无效信息。

只有主持人点到谁,谁才能说话,且按照主持人规定的格式发言,即报文格式固定。

主持人说:1号xxxx。4个人都能听到,但只有1号可以响应,且要以正确的方式响应。响应错误,主持人也会将信息视为无效信息。

主持人在叫1号的时候,1号开小差,没有及时响应,超过预定的超时时间,主持人再叫一次,如此三次。

三次以后,1号仍没有响应,主持人放弃1号,继续叫2号、3号、4号,如此即为轮询机制。

正常情况下,一问一答,响应很快。如有一人开小差,通讯周期延长3倍的超时时间。

所以,在全员在线的情况下,通讯周期和语速,即波特率有关,人数,即从站数量有关;不在线,通讯周期不可控。

如此,要确保有优质的通讯链路和正常在线的从站,才能保证通讯周期的稳定。

版权所有©Copyright © 2022-2030 宜居易览网

备案号:粤ICP备13047055号

网站地图