西门子PLC编程中的Modbus通讯,你知道怎么用吗?详细教程
(1)Modbus通讯
S7-200的Modbus通讯:
S7-200只支持Modbus RTU协议,不支持Modbus ASCII协议;
Modbus是一种单主站的主/从通信模式。一条Modbus网络上同时只能有一台主站,从站可以有若干个(如下图所示)。从站的地址范围为1-247;
一个Modbus通讯的传输字符应包括一个起始位,8个数据位,1个或0个校验位(奇偶校验或无校验可选择),以及一个停止位。
在S7-200 CPU通信口上实现的是RS485半双工通信,使用的是S7-200的自由口功能。
上图是一个典型的主站和从站的网络结构,对于Modbus主站而言可以对从站进行读或者写的操作,其中它所支持的功能码(FC,Function Code)包括主站左侧表格中所述功能,例如功能码为'01'时表示读取单个/多个线圈(DO)状态或功能码为'04'时表示读取单个/多个输入寄存器(AI)状态。
而对于从站,我们只需要把Modbus的标准地址和从站的地址对应关系建立好就可以了,S7-200的从站与Modbus标准的对应关系如从站右侧表格所示。
表中左侧是Modbus标准地址码,其中1-128对应于S7-200的Q0.0-Q15.7,10001-10128对应于S7-200的I0.0-I15.7,30001-30032对应于AIW0-AIW62,40001-4xxx对应的是S7-200的保持寄存器(V区),它的范围是T-T+2*(xxxx-1),T表示的是V区的起始地址,这一点由Modbus从站的指令所决定的。
Modbus的主站指令叫做MBUS_MSG,通过这条指令可以将Modbus的标准报文发给从站,例如在上图例子当中从站的第一个字节是03,表示的是从站的地址,FC功能码为03,表示的是读取单个/多个保存寄存器,Modbus标准地址是40001,长度是10。随着功能码的不同,报文的格式会发生相应的变化,具体的报文格式需要去参阅Modbus的通讯手册。
从站的指令时MBUS _SLAVE,在接到主站发给它的报文后会根据报文的需求返回报文,比如在上图例子中返回的格式是第一个字节为从站的地址,第二个为功能码,第三个是数据返回给主站,这样就完成了一次Modbus通讯的请求与应答的过程。
(2)Modbus库文件的安装和调用
如果想要应用Modbus指令库,那么首先需要到因特网上或者向西门子的客服人员申请名称为'Toolbox_V32-STEP 7-Micro WIN' 的指令库,将它解压并且安装到Micro WIN当中就可以使用了,安装后会在Micro WIN的库文件当中出现上图标记的三个库,其中Port0和Port1都可以做Modbus Master,而Slave只有Port0口可以做。
(3)Modbus库文件的使用
使用方法很简单,打开Modbus主站指令库会有相应的指令块出现,直接把指令块拖拽到程序当中进行调用就可以了。
在调用Modbus库指令的时候,需要注意一定记得为Modbus库文件分配库存储区。具体的方法是右键单击库,然后选择库存储区,在弹出来的对话框当中可以选择建议地址,自动分配一个程序里面不会用到的地址区间,也可以人为地手动填写起始地址,这个区间在程序当中不可以和其他的数据区相冲突,否则Modbus功能将不正常。
所谓的库存储区其实就是Modbus指令库能够正常工作所必须的一部分背景数据,只要给它分配好区间并保证不与程序当中其他的地址相冲突就可以了。
(4)Modbus从站指令
从站指令一共有两条,第一条是从站的初始化指令(MBUS_INIT),另一条是MBUS_SLAVE从站指令,在Modbus从站的初始化指令当中涉及哪些内容呢?
首先,第一个引脚Mode表示等于1的时候是启动Modbus,等于0的时候是关闭Modbus,Addr表示的是这个从站的从站地址,Baud表示波特率,Parity是奇偶校验,0是无校验,1是奇校验,2是偶校验,Delay是附加字符之间的延迟,MaxIQ表示的是最大I/Q地址(默认128),MaxAI表示的是最大AI长度(默认32),MaxHold表示的是最大的V存储区(VW),最关键的是HoldStart,表示的是V区起始地址(对应40001),在之前已经提到过S7-200作为从站的时候,它的V区地址对应于Modbus标准地址的起始地址是可更改的,那么就在这里进行设定,在本例中如果HoldStart写的是VB0,那么40001对应的地址就是VW0,40002对应的地址是VW2,40003对应的地址是VW4,以此类推,每一个标准的Modbus地址码对应的是一个Word,以字为单位,同样如果这里设的是VB100,那么40001对应的就是VW100,40002对应的是VW102,以此类推。
这一条初始化指令只需要调用一次就可以了,所以在上图中用的是SM0.1在上电的时候执行一次就可以了。
MBUS_SLAVE这个功能块必须要用前面的条件必须是一直为1的,上图中用SM0.0。
PLC编程调试过程中如何对modbus总线调试
在工业自动化控制领域,采用总线的控制手段是非常常见的控制方法。相比较于接线方式,总线可以大大的减少连接电缆,简化控制系统。
在现目前工业现场使用的总线中,一些比较大的自动化产品生产商,都有一些自己的通信总线。如Profilbus、Profilnet、CAN、Modbus、CC-Link等等。总线的类型非常的多。而这其中,Modbus总线是现目前运用最为广泛的现场通信总线。其免费、开放故被各个第三方自动化器件生产厂商使用。这里就Modbus的调试方法分享如下:
调试工具
硬件: USB-RS485串口电缆、PLC、笔记本电脑;
软件: Modbus Poll/Modbus Slave(注意这是两个软件,一个是主站调试软件;一个是从站调试软件);
调试过程
Step1
确认硬件:PLC硬件接线,包括电源、通信线……
RS485:RS485总线一般选用两线制,但在某些情况下,亦有使用4线制的情况(极少);在使用2线制的场景中,两端接线一一对应即可;如器件1的485端口A线<—>器件2的485端口的A线,器件1的485端口B线<—>器件2的485端口的B线。常见的RS485总线接线方式如下图所示:
4线制RS485总线与2线制之间的接线:
2线制RS485总线的接线方法:注意,两个数据线不能交叉。
西门子PLC的DB9通信插头针脚定义:
RS232:modbus协议亦可运行在RS232之上。但因RS232总线本身特性,故用于短距离的点对点通信。RS232的接线方式如下图所示:
RJ45(插头):部分品牌的器件接口方式位RJ45。如施耐德PLC的部分型号PLC:
STEP2
将USB-RS485串口电缆连接到电脑,并在电脑的设备管理器中确认对应的串口端号。操作方法如下图所示:
在进行连接设备的时候,选择使用的端口号就必须与此端口号一致。
STEP3
在PC端安装调试测试软件。这里以主站调试的方法举例,安装Modbus Poll(从站调试,则安装Modbus Slave)。
软件安装完成后,打开软件。
点击菜单栏的“Connection”-“Connect…”。在弹出的对话框中设置通信的基本参数,如设备端口号、波特兰、数据位、停止位、校验位等。此参数必须与从站参数设置一致,否则无法读取到正确的参数 。
设置完成后点击“OK”按钮。软件会按照默认的方式对从站进行通信。为了使通信读取我们想要的地址的数值,则还需要进行进一步的设置。
点击菜单栏的“Setup”-“Read/Write Definition…”。在弹出的对话框中设置从站的号、功能码及通信读取地址。
以上设置完成后,一般均能读取到数据。若未读取到数据,则确认以下几点:
1、通信参数是否正确,主从站参数必须一致;
2、站号是否设置正确,读取站号与从站站号必须一致;
3、协议功能码设置是否正确;
4、协议地址设置是否正确;
通过以上方式,即可完成对modbus从站调试。
相关问答
plc1200怎么设置modbus485通讯?
要设置PLC1200的Modbus485通讯,首先需要确保PLC1200具备Modbus485通讯模块。然后,进入PLC1200的编程软件中,选择通讯设置,配置Modbus485通讯参数,包括波特....
三菱plcmodbusrtu编程实例?
三菱PLC的ModbusRTU编程实例如下:1.设置ModbusRTU网关:在三菱PLC中运行网关设置命令(F8),并在网关设置中将ModbusRS485配置成客户端模式,指定总线地址...
欧姆龙plcmodbus功能代码怎么用?
欧姆龙PLC使用Modbus通信协议可以实现与其他设备的数据交换。在使用Modbus功能代码之前,需要先确保你的PLC型号支持Modbus通信,并正确配置了通信参数。以下是...
如何用PC机通过modbus协议与PLC通信,并记录通信数据?
高级语言用串行通迅,MODBUS是最简单的总线对话协议,网上可搜到详细格式。PLC也要支持MODBUS的,可能在PLC还要编应答程序高级语言用串行通迅,MODBUS是最简单...
松下plcmodbusrtu通信程序详解?
松下PLCModbusRTU通信程序是一种用于实现PLC与其他设备之间数据交换的通信协议。它基于Modbus协议,使用串行通信方式进行数据传输。程序的详解包括设置PLC的...
modbusrtu,plc怎么控制变频器?
要使用PLC控制变频器,可以使用ModbusRTU通信协议。以下是一种可能的步骤:1.首先,你需要了解你的变频器支持的ModbusRTU地址和寄存器映射结构。这些信息通常...
三菱FX1N的PLC上位机通过MODBUS协议通讯,怎么操作呢?
看了下,DAM-3381只是作为DAM-37XX系列模块与三菱PLC通讯连接的桥梁,看着就一转换器,PLC端如果不需要编程的话应该是用的计算机链接功能,但这不是MODBUS协议的...
modbus和plc通讯不了?
关于这个问题,可能的原因有以下几点:1.通讯方式不一致:Modbus协议和PLC通讯协议不同,需要使用相应的通讯方式来进行通讯。如果使用的通讯方式不正确,则无...
两个plc做modbus通讯才用从站指令吗?
两个PLC进行Modbus通讯,不一定只用从站指令。具体实现方式取决于PLC的配置和功能需求。一般来说,两个PLC可以设置为主站和从站,也可以设置为两个主站进行通信...
200plc经modbus协议与组态王通讯必须关注哪些
[回答]控制柜中西门子PLC在和组态王建立通讯时,为了防止建立通讯失败一定要让CPU的开关处在RUN。西门子S7200PLC和通过modbus协议和组态王通讯时,CPU上的...