modbus poll是什么,怎么使用呢?不知道的小伙伴来看看小编今天的分享吧!
1、modbus poll介绍:
Modbus Poll是Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备,或者其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。
2、Modbus Poll使用:
安装注册:
安装完毕,在桌面能够看到ModbusPoll的快捷方式,双击该快捷方式,打开软件,打开后界面如下图所示。
单击Connection->Connect,弹出注册窗口;打开压缩包解压后的readme文件,复制ModbusPoll的序列号,粘贴到注册窗口的注册栏,如下图所示,点击OK,破解完毕。
程序主窗口:
按照上面破解流程,按“OK”按钮即可完成注册。然后直接进入主窗口,如下图所示:
其中:Tx = 4表示向主站发送数据帧次数,图中为4次; Error = 0表示通讯错误次数,图中为0次; ID = 1表示模拟的Modbus子设备的设备地址,图中地址为1;F = 03表示所使用的Modbus功能码,图中为03功能码; SR = 1000ms表示扫描周期。红字部分,表示当前的错误状态,“No Connection”表示未连接状态。
参数设置:
单击菜单【Setup】中【Read/Write Definition.. F8】进行参数设置,会弹出参数设置对话框。
其中:A. Slave为要访问的Modbus从站(从机)的地址,对应主窗口(主画面)中的ID值,默认为1。 B. Function 为寄存器功能码的选择,共四种,分别对应关系如下:
C. Address 为寄存器起始地址,默认从0开始。
D. Length为寄存器连续个数,默认为10个,对应组态软件的通道数量。
E. Scan Rate为读取数据周期,单位毫秒,默认为1000ms。
设置完成单击OK按钮,模拟窗口将显示定义的寄存器列表。
显示设置:
数据显示方式设置:
默认情况下,寄存器数据的显示方式为Signed方式(16进制无符号二进制),数据范围为-32768~32767。如果用户要以其他数值方式显示,可以通过菜单【Display】进行选择设置,如下图所示:
地址格式设置: Modbus Slave默认使用PLC地址,【Display】菜单中【PLC Addresses(Base 1)】为默认选中状态,默认寄存器的起始地址为1开始,此点与组态软件的Modbus串口和TCP数据转发驱动是相同的。如果测试时需要设置起始地址为0开始,可选择【Protocol Addresses(Base 0)】。一般情况下使用默认PLC地址即可。
使用工具栏的”Communication Traffic”按钮,可以显示出当前发送命令和接受的数据。
串口连接:
单击菜单【Connection】中【Connect.. F3】进行串口连接,如下图 :
其中:Port3,表示使用的串口(COM3),根据实际情况选择不同的串口或者TCP/IP进行连接。Mode,表示Modbus协议模式,使用串口时有效;使用TCP/IP时自动为TCP模式。Response Timeout,表示读取超时时间,从站在超时时间内没有返回数据,则认为通讯失败。Delay Between Polls,每次扫描的最小间隔时间,默认为10ms。Remote Server,表示TCP/IP模式时的终端从站设备的网络设置。IP Address,表示TCP/IP模式时从站IP地址。 Port,表示TCP模式时从站网络端口。用户可根据需要对参数进行设置,默认为:串口1、波特率9600、数据位8位、无校验位、1位停止位。确认设置后点击OK按钮即可。如果连接并读取正确,此时主窗口将显示读取寄存器的相关信息。
寄存器值改变:
在主窗口寄存器地址上双击鼠标,弹出修改对话框,如下图:
在Value输入框中输入值确认即可。范围为-32768——32767。
其中:Slave为要访问的Modbus从站的地址,对应主画面中的ID值,默认为1。 Address 为当前操作的寄存器的地址。图中为对寄存器40001操作。 Use Function为所使用的功能码,可以选择06或16功能码进行写入。
查看通讯数据帧:
单击【Display】菜单中的【Communication…】或者单击工具栏上【101】按钮,可以调出串口收发数据帧监视信息对话框“CommunicationTraffic”,用来查看分析收发的数据帧。如下图所示:
其中:前6位为数据帧的序号。 Rx表示接收的数据帧。 Tx表示发送的数据帧。
断开连接:
点击【Disconnect F4】即可断开连接结束测试,此时主窗口中出现红色的“No Connection”表示未连接状态。
以上就是小编今天的分享了,希望可以帮助到大家。
「技术课堂」S7 200 SMART Modbus RTU快速入门
一、硬件连线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短接为另一条线路。同一时间只能发送或者接受,此为半双工。多台设备可以挂载同一链路,可实现一台主站、多台从站之间进行通信。此应用场景最为多见。
图2 RS-485
S7 200 SMART串行接口为RS-485,引脚示意图如表3。
表3 S7 200 SMART DB9引脚定义
注意:RS-485的A\B信号线,通俗叫法有A\B;485 \485-。S7 200 SMART DB9引脚中的3号引脚,即RS-485 信号 B,为通俗叫法的A或485 ;8号引脚,即RS-485 信号 A,为通俗叫法的B或485-。
2.总线连接器
在复杂的工业现场或长距离通讯的情况下,建议选择优质的总线连接器和电缆。总线连接器自带终端电阻和偏置电阻,在此情况下,可提高通讯的稳定和抗干扰能力。
总线连接器和电缆,订货号如表4。
序号 | 品名 | 订货号 |
1 | PROFIBUS总线连接器 90度出线无编程口 | UN 972-0BA12-0XA0 |
2 | PROFIBUS总线连接器 90度出线有编程口 | UN 972-0BB12-0XA0 |
3 | PROFIBUS总线连接器 35度出线无编程口 | UN 972-0BA41-0XA0 |
4 | PROFIBUS总线连接器 35度出线有编程口 | UN 972-0BB41-0XA0 |
5 | PROFIBUS总线电缆 紫色两芯屏蔽双绞线 | UN 830-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。在SMART PLC中,地址表示为40001;
亿维HMI或常见组态软件中,地址表示为4x1;在变频器或仪表中,地址常表示为0000H。
S7 200 SMART做从站,地址对应如下:
Modbus地址通常被写为包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备将地址映射至正确的功能
Modbus从站指令支持下列地址:
00001至00128是映射至Q0.0 - Q15.7的离散输出
10001至10128是映射至I0.0 - I15.7的离散输入
30001至30032是映射至AIW0至AIW62的模拟输入寄存器
40001至4xxxx是映射至V存储器的保持寄存器。
所有Modbus地址均以1为基位。下表显示映射至S7-200地址的Modbus地址。
Modbus地址 S7-200地址
00001 Q0.0
00002 Q0.1
00003 Q0.2
... ...
00127 Q15.6
00128 Q15.7
10001 I0.0
10002 I0.1
10003 I0.2
... ...
10127 I15.6
10128 I15.7
30001 AIW0
30002 AIW2
30003 AIW4
... ...
30032 AIW62
40001 Hold Start
40002 HoldStart 2
40003 HoldStart 4
... ...
4xxxx HoldStart 2 x (xxxx-1)
对于亿维HMI,地址对应如表7:
表7 HMI modbus地址及功能码
三、报文
对不同的Modbus地址进行读或写操作,需要不同的功能码,如上表7。
常见用的功能码有FC03、FC06,在此以功能码03对报文进行说明。
功能码03,对寄存器006BH开始的三个寄存器进行读操作,主站报文示例如下:
从机地址 | 功能码 | 起始地址 高位 | 起始地址 低位 | 寄存器数量高位 | 寄存器数量低位 | CRC高位 | CRC低位 |
01 | 03 | 00 | 6B | 00 | 03 | 74 | 17 |
表8 主站03报文
从站报文响应报文如下:
表9 从站03报文
其他报文格式不再说明,有兴趣的可以到官网查询https://modbus.org/
四、S7 200 SMART Modbus RTU 从站编程图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 至 100 ms 之间的值。如果使用扩频无线通信,则将延时设置为 10 至 100 ms 之间的值。“延时”(Delay) 值可以是 0 至 32767 ms。
参数 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) 关闭,则错误参数不会改变。
五、S7 200 SMART Modbus RTU 主站编程上文讲到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个寄存器,存放在主站CPU VW100开始的5个字。
网络4程序功能:读取从站地址为2的40001开始的5个寄存器,存放在主站CPU VW110开始的5个字。
3.轮询模式二
图14 轮询2
程序功能:读取从站地址为1的40001开始的5个寄存器,存放在主站CPU VW100开始的5个字。
将CPU VW110开始的5个字写入从站地址为2的40001开始的5个寄存器。
也有习惯使用MSG指令的完成位置位一个内部继电器Mx.x,Mx.x触发下一条MSG指令,如此循环的;或固定时间的触发方式,等不同编程思路。不论哪种编程思路,都要确保同一时间只有一条MSG指令被触发。
六、注意事项A. Modbus主站或从站初始化指令初始化后,PPI协议不可用。
B.同一个串口,只能用作Modbus主站、从站、PPI等其中的一种(程序控制初始化外)。
C.CPU做主站时,同一时间只能有一条MSG指令被触发(重要的事说N遍)。
D.S7 200 SMART 的DB9 RS485的A、B有别于通俗说法的A、B。
E. 认清从站寄存器地址表示方式,是十进制还是十六进制。
F.通讯顺利的情况下,可用跳过前四个章节。
七、 问题排查通讯异常时,建议从以下几个方面排查:
A.确保通讯电缆连接正确。参考第一章节,重点关注1.1章节。
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倍的超时时间。
所以,在全员在线的情况下,通讯周期和语速,即波特率有关,人数,即从站数量有关;不在线,通讯周期不可控。
如此,要确保有优质的通讯链路和正常在线的从站,才能保证通讯周期的稳定。