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 CPU 的 0 号通讯口间进行的(最好每个 CPU 都有两个通讯口)。在主站侧也可以用相应库文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通过1号通讯口通信。通讯口 1 用 Micro/WIN 与 PG 或 PC 建立连接,两个 CPU 的通讯口 0 通过 Profibus 缆进行连接(电缆的针脚 连接为3,3,8,8 -> 见图 01)。另外,需要确定逻辑地M相连 。
2. 参数匹配
对于 MODBUS 通讯,主站侧需要程序库 "MBUS_CTRL" 和 "MBUS_MSG",从站侧需要程序库 "MBUS_INIT" and "MBUS_SLAVE"。在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。必须要保证主站与从站的“Baud”和 “Parity” 的参数设置要一致,并且程序块 "MBUS_MSG" 中的 "Slave" 地址要与程序块 "MBUS_INIT" 中的 "Addr" 所设置的一致 (见图. 02)。在 Micro/WIN“系统块”中设置的通讯口 0 的波特率与 MODBUS 协议无关 ("Mode" = "1")。
下面的表格列出了程序块各个参数选项及其含义。 主站MBUS_CTRL
MBUS_MSG
从站MBUS_INIT
MBUS_SLAVE
3. 库的存储地址项目完成后必须要在 Micro/WIN 中定义库的存储地址,当定义完存储区后, 要保证在任何情况下不能再被其它程序所使用 (主站侧: "DataPtr" + "Count" 从站侧:"HoldStart" + "MaxHold")。
4. 保持寄存器值的传输将程序下载到相应的 CPU 后,可以在状态表中给主站侧的 V 存储区赋值,然后从站侧监视数值的变化。当主站的 I0.0 使能后,VW2 中的内容就被发送到从站并写入从站的 VW2 。保持寄存器值的传输见图. 04。指针 "DataPtr" 代表了被读的 V 区起始地址。参数 "Count" 指定了被写入地址 "Addr" = "4xxxx" (保持寄存器)字的个数。相应 V 存储区的变量将被写到保持寄存器启始地址 "Addr" = "40002" ("RW" = "1")中。保持寄存器是以字为单位传输的,它与从站的 V 区地址对应。指针 "HoldStart" 指定了与保持寄存器起始地址 40001 相对应的V存储区的初始地址。可以按下面公式计算从站的V区目标指针:2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2另外,要保证主站侧所要写入的数据区包含在 "MaxHold" 定义的数据区内 :MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2
相关问答
plc1200怎么设置modbus485通讯?
要设置PLC1200的Modbus485通讯,首先需要确保PLC1200具备Modbus485通讯模块。然后,进入PLC1200的编程软件中,选择通讯设置,配置Modbus485通讯参数,包括波特....
松下plcmodbusrtu通信程序详解?
松下PLCModbusRTU通信程序是一种用于实现PLC与其他设备之间数据交换的通信协议。它基于Modbus协议,使用串行通信方式进行数据传输。程序的详解包括设置PLC的...
在通信程序中,如何实现PLC与多台变频器的MODBUS/RTU通信?
如何实现PLC与多台变频器的MODBUS/RTU通信,首先不同的PLC、不同的变频器的设置方法和通信程序不一样,包括使用的通信指令、接线方法,MODBUS寄存器地址,需要我...
西门子PLC设置为自由口通讯方式,如果使用MODBUS通讯协议,要...
西门子PLC设置为自由口通讯方式,如果使用MODBUS通讯协议,要怎么弄?硬件要求和软件要求都有哪些?举报西门子4人讨论7148次围观关注问题写回答讨论回答...
ABBPLC与MODBUS如何通信?
ABBPLC和MODBUS可以通过串口通信或以太网通信实现相互交互。1.首先,ABBPLC和MODBUS设备之间需要建立物理连接,串口通信可以通过RS485或RS232接口进行连接,...
MODBUSRTU如何在PLC控制系统中应用?
MODBUS是一种通信协议,是电子设备通用的协议,我们可以通过它使控制器如PLC与其他设备进行通讯控制,不同的生产商的设备都可以通过线路连接组成工业网络。MODBU...
modbus和plc通讯不了?
关于这个问题,可能的原因有以下几点:1.通讯方式不一致:Modbus协议和PLC通讯协议不同,需要使用相应的通讯方式来进行通讯。如果使用的通讯方式不正确,则无...
1200plc不同项目如何通讯?
要实现1200PLC之间的通信,可以使用不同的通信协议和方法。一种常见的方法是使用以太网通信,通过以太网模块连接PLC,并使用TCP/IP协议进行数据传输。另一种方...
三菱plcmodbus通讯协议详解?
D8126值为H20时表示为MODBUSRTU主站,H02时为RTU从站,H03时为ASCII从站,为H0时表示为三菱协议。RS指令在D8126设为MODBUS模式时,指令格式和D8126设为...
plc1200怎么设置modbustcp通讯?
需要进行一定的设置才能进行modbustcp通讯首先需要设置PLC的网络连接和配置IP地址和子网掩码等网络参数,然后在TIAPortal中添加连接模块并进行参数设置,包括...