PLC通讯MODBUS协议的应用及编程
叙述:现为大家讲解一下MODBUS的应用,现在工业控制上位机和下位机通信大部分采用通信协议为MODBUS.可想而知机器与机器通信的重要性。
一:MODBUS系统框架图
二:MODBUS运用
MODBUS 通讯的底层为 RS485 信号采用双绞线进行联接就可以了,因 此传输距离较远,可达 1000 米,抗干扰性能比较好,且成本低,在工业控制设备的通讯中被 广泛使用,现在众多厂家的变频器、控制器都采用了该协议
传送数据格式有 HEX 码数据和 ASCII 码两种,分别称为 MODBUS-RTU 和 MODBUS-ASCII 协 议,前者为数据直接传送,而后者需将数据变换为 ASCII 码后传送,因此 MODBUS-RTU 协议的 通讯效率较高,处理简单,使用得更多
MODBUS 为单主多从通讯方式,采用的是主问从答方式,每次通讯都是由主站首先发起, 从站被动应答。因此,如变频器之类的被控设备,一般内置的是从站协议,而 PLC 之类的控 制设备,则需具有主站协议、从站协议
现在以 MODBUS-RTU 协议为例,说明通讯帧的典型格式: 请求帧格式:从机地址+0x03+寄存器起始地址+寄存器数量+CRC 检验
正常响应帧格式:从机地址+0x03+字节数+寄存器值+CRC 检验
三:PLC 编程时应该注意以下信息:
从机地址:主站发送帧中,该地址表示目标接收从机的地址;从机应答帧中,表示本机 地址;从机地址的设定范围为 1~247,0 为广播通信地址。
操作类型:表示读或写操作;0x1=读线圈操作;0x03=读寄存器操作;0x05=改写线圈 操作;0x06=改写寄存器操作。
对于变频器而言,只支持 0x03 读、0x06 写的操作。 寄存器起始地址:表示对从机中要访问的寄存器地址,对于 MD280、MD320 系列变频器的 访问时,对应的就是"功能码号"、"命令地址"、"运行参数地址"; 数据个数:即从"寄存器起始地址"开始要连续访问的数据个数,对于寄存器变量,以 word 为单位。
寄存器参数(数据):要改写的数据(主机改写),或读取的数据(从机应答);
四: 程序编程编写及讲解
结论:以上是对PLC通信举得例子,只要设置这几个特殊寄存器就可以通信了,特别是要对RS通信指令的应用和对PLC通信中所用到的特殊寄存器等等。谢谢大家的阅读与支持,您的支持就是我创作的动力。
西门子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。
相关问答
西门子modbus通讯协议编程实例?
西门子的PLC(可编程逻辑控制器)支持Modbus通讯协议,通过Modbus通信可以与其他设备(如传感器、仪表、HMI等)进行数据交换。以下是一个基本的西门子PLC通过Mod...
plc1200怎么设置modbus485通讯?
要设置PLC1200的Modbus485通讯,首先需要确保PLC1200具备Modbus485通讯模块。然后,进入PLC1200的编程软件中,选择通讯设置,配置Modbus485通讯参数,包括波特....
PLC怎么和485modbus通讯?
第一plc自身带485通讯模块或者是plc可以添加485模块,这需要你知道你自己的plc品牌型号,查看手册是否支持扩展485通讯。例如三菱的fx系列plcfx1s系列是不支持...
LabVIEW与PLC如何进行Modbus通信?
使用屏蔽双绞线,最后一个从站加120欧电阻。RS232方式不要超15米,RS485方式长度不要超过一千米。再确认二者谁做主站,谁做从站。三,确定二者的通信波特率,...
三菱plcmodbus通讯协议详解?
D8126值为H20时表示为MODBUSRTU主站,H02时为RTU从站,H03时为ASCII从站,为H0时表示为三菱协议。RS指令在D8126设为MODBUS模式时,指令格式和D8126设为...
西门子200smart和三菱FX3U走modbus通讯程序需要怎么编写?
你这个问题是PLC与PLC通讯你可以采用专用协议的方式来联接把X元件转为M也就是传给M元件就可以进行读与写入了PLC与PLC通讯配制方法也可以自己通讯MODBUS协...
plc1200怎么设置modbustcp通讯?
需要进行一定的设置才能进行modbustcp通讯首先需要设置PLC的网络连接和配置IP地址和子网掩码等网络参数,然后在TIAPortal中添加连接模块并进行参数设置,包括...
怎样用西门子300plcCPU自带接口实现MODBUS通讯?
s7-300自带的mpi口,不支持modbus通讯协议。如果要进行modbus通讯,需要添加cp341串行通讯模块s7-300自带的mpi口,不支持modbus通讯协议。如果要进行modbus通讯....
西门子plcmodbustcp通讯实例解析?
通过网络连接PLC,进行网络初始化;配置MODBUS功能块,并设置通讯参数;确定MODBUS功能块的数据类型,并设置读写偏移量;定义软元件的读写功能码,以及相关的...
西门子S200的modbus通讯怎么编写?
西门子S200系列的PLC可以通过MODBUS协议进行通讯。在编写MODBUS通讯程序时,需要考虑以下几个方面:确定通讯方式:MODBUS协议支持串行通讯和以太网通讯两种方式...