西门子PLC通信板CB1241使用MODBUS RTU协议与变频器RS485通信

西门子PLC通信板CB1241与变频器RS485通信

一、设备组态

硬件目录–通信板–点到点–CB 1241(RS485)
在这里插入图片描述

二、硬件接线

TA和T/RA短接,然后接到变频器 485- 端针脚,TB和T/RB短接,然后接到变频器 485+ 端针脚。
在这里插入图片描述

三、通信板参数设置

IO-LINK设置波特率,奇偶校验,数据位,停止位。
我这里波特率:9.6kbps
奇偶校验:无
数据位:8
停止位:1
与变频器那边相对应即可。其他参数都是使用的默认值。
在这里插入图片描述

四、程序编写

1、组态端口

Modbus Comm Load :组态modbus端口
Modbus Master:作为modbus主站通信
我这里plc是作为主站,变频器作为从站。
在这里插入图片描述
REQ:第一次上电扫描完成组态初始化
PORT:CB1241通信板的硬件标识符
MB_DB:对 Modbus_Master或 Modbus_slave 指令的背具数据块的引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、变频器端设置

主频率输入通道选择,设置为4:通讯给定。
在这里插入图片描述
运行命令通道选择,设置成2:通讯运行命令控制
在这里插入图片描述
通讯参数我这里直接使用的默认值。
协议选择:modbus协议,
波特率配置:9600bps,
数据格式:无奇偶校验,8位数据位,1位停止位,
本机地址使用的默认地址:1。
在这里插入图片描述
在这里插入图片描述

3、写入1个数据到变频器

在这里插入图片描述
REQ:引脚为true时,请求向 Modbus 从站发送数据。
MB_ADDR:从站的通信地址,上面变频器设置的为1。
MODE:0是读取数据,1是写入数据。
DATA_ADDR:从站中的起始地址,我这里是47682。1E01H是主频率地址,换成十进制是7681,PLC端地址从40001开始,40001+7681=47862,所以此处填写为47862。
DATA_LEN:需要写入或者读取的数据长度,我这里只是对一个地址写入数据。
DATA_PTR:存放需要写入的数据地址。

操作命令字的地址为1E00H,换算算法与上面主频率地址算法一样。
命令执行成功会将存在地址中的数据写入到变频器的地址之中。
在这里插入图片描述

4、从变频器读取1个数据到PLC

REQ:引脚为true时,请求向 Modbus 从站发送数据。
MB_ADDR:从站的通信地址,上面变频器设置的为1。
MODE:0是读取数据,1是写入数据。
DATA_ADDR:从站中的起始地址,我这里是41311。F05.30是同步频率地址,高位是05,低位是30,都是十进制,不能合起来算530,高位换成十六进制是05H,低位换成十六进制是1EH,高低位合起来就是051EH,换成十进制就是1310,PLC端地址从40001开始,40001+1310=41311,所以此处填写为41311。
DATA_LEN:需要写入或者读取的数据长度,我这里只是对一个地址读取数据。
DATA_PTR:存放需要写入的数据地址。

变频器状态地址为1E02H,换算算法与上面主频率地址算法一样。

命令执行成功会将变频器的数据读取存入到所指定的地址之中。
在这里插入图片描述
在这里插入图片描述

5、从变频器读取多个数据到PLC

REQ:引脚为true时,请求向 Modbus 从站发送数据。
MB_ADDR:从站的通信地址,上面变频器设置的为1。
MODE:0是读取数据,1是写入数据。
DATA_ADDR:从站中的起始地址,我这里是41309。F05.28是设定频率地址,高位是05,低位是28,都是十进制,不能合起来算528,高位换成十六进制是05H,低位换成十六进制是1CH,高低位合起来就是051CH,换成十进制就是1308,PLC端地址从40001开始,40001+1308=41309,所以此处填写为41309。
DATA_LEN:需要写入或者读取的数据长度,我这里对5个连续地址读取数据。
DATA_PTR:存放需要写入的数据地址,我这里是用的数组存放。
可以看到单独一个一个读取数据和一次性读取5个数据,读取到的数据是一致的。
在这里插入图片描述
在这里插入图片描述

此测试创建的数据块,最上面两个是写入数据的变量,其他的都是读取数据的变量。
在这里插入图片描述

<think>嗯,用户让我介绍一下1200PLC和V20变频器Modbus RTU通信。首先,我需要确认这两个设备的具体型号和品牌。1200PLC通常指的是西门子的S7-1200系列PLC,而V20变频器应该也是西门子的SINAMICS V20系列。Modbus RTU是一种常见的串行通信协议,常用于工业自动化中的设备通信。 接下来,我需要回忆Modbus RTU的基本知识。Modbus RTU使用RS-485物理层,数据格式包括波特率、数据位、停止位和校验位。通信时需要一个主站和多个从站,这里PLC是主站,变频器是从站。每个从站需要有唯一的地址。 然后,关于S7-1200的配置部分。需要知道S7-1200如何支持Modbus RTU通信。通常,需要添加通信模块,比如CM 1241 RS485模块,或者使用CB 1241通信板。然后使用TIA Portal软件进行硬件组态,安装相应的模块,并配置通信参数,比如波特率、奇偶校验等。同时需要调用Modbus库指令,比如MB_COMM_LOAD和MB_MASTER,来初始化和执行通信功能。 对于V20变频器的设置,需要进入参数设置模式,设置通信地址、波特率、数据位、停止位、校验方式等。可能还需要设置允许远程控制,比如P0700参数设为5,表示由通信控制启停,P1000设为5,表示频率由通信给定。还要确保物理接线正确,RS-485的A、B线对应连接,可能需要终端电阻和屏蔽接地。 然后,编程部分需要考虑如何发送Modbus命令。比如读取变频器的状态字(地址2001H)和输出频率(2005H),或者写入控制字(地址2000H)和设定频率(2000H)。需要处理数据格式转换,比如将整数转换为浮点数,或者处理高低字节顺序。 可能需要注意的问题包括通信超时、地址偏移(有些设备从0开始,有些从1开始)、数据格式是否正确,以及干扰问题导致通信不稳定。建议用户参考官方文档,确认参数设置,使用屏蔽电缆,并正确接线。 用户可能的实际应用场景是工业自动化中的电机控制,比如通过PLC控制变频器的启停和调速。用户可能需要了解如何配置硬件、设置参数、编写程序以及调试通信问题。可能遇到的困难包括地址错误、通信参数不匹配、接线错误等,需要逐步排查。</think>以下为西门子 S7-1200 PLC SINAMICS V20 变频器通过 **Modbus RTU 协议通信**的简要说明: --- ### **1. 硬件准备** - **S7-1200 PLC** 需配备 **RS485 通信模块**(如 CM 1241 RS485CB 1241)。 - **V20 变频器** 使用自带的 **RS485 接口**(端子 14/15 为 P+/N-,对应 RS485 的 A/B 线)。 - **接线** - PLCRS485 接口(A/B) V20 的 RS485 端子连接。 - 确保终端电阻(V20 的 DIP 开关)在总线末端开启(仅首尾设备启用)。 --- ### **2. 参数配置** #### **V20 变频器设置** 通过操作面板设置以下参数: | 参数 | 说明 | 典型值 | |--| | P0700 | 控制源选择 | 5 (Modbus) | | P1000 | 频率源选择 | 5 (Modbus) | | P2023 | Modbus 地址 | 1~247 | | P2020 | 波特率 | 9600/19200 | | P2021 | 校验方式 | 0:无校验, 1:奇校验, 2:偶校验 | #### **S7-1200 PLC 配置** 1. **硬件组态** 在 TIA Portal 中配置 RS485 模块,设置 V20 一致的波特率、校验位、数据位(通常 8 数据位、1 停止位)。 2. **程序编写** - 使用 `MB_COMM_LOAD` 初始化通信模块。 - 调用 `MB_MASTER` 功能块发送 Modbus 命令。 --- ### **3. Modbus 通信地址映射** V20 的 Modbus 寄存器地址(基于 **4xxxx 格式,地址从 0 开始**): - 写入频率值(单位:0.01Hz,如 50Hz → 写入 5000)。 - **状态字**:40003 (地址 0x0002) - 读取运行状态(如运行中、故障)。 - **实际频率**:40006 (地址 0x0005) - 读取当前输出频率。 --- ### **4. PLC 编程示例** ```STL // 初始化 Modbus 通信 MB_COMM_LOAD( REQ := TRUE, // 触发初始化 PORT := RS485_Module, // 通信模块硬件标识符 BAUD := 9600, // 波特率 PARITY := 2, // 偶校验 MB_DB := "Modbus_DB"); // 数据块 // 发送 Modbus 命令 MB_MASTER( REQ := Start_Trigger, // 触发信号(上升沿) MB_ADDR := 1, // 变频器地址(1~247) MODE := 0, // 0:读写单个寄存器 DATA_ADDR := 16#0000, // 控制字地址 40001 DATA_LEN := 1, // 数据长度 DATA_PTR := #Write_Data, // 写入数据(如 16#047F 启动) DONE => Done_Signal, // 完成标志 ERROR => Error_Flag); // 错误状态 ``` --- ### **5. 调试要点** 1. **接线检查** - 确保 A/B 线无接反,屏蔽层单端接地。 - 多设备时使用总线拓扑,避免星形连接。 2. **通信诊断** - 使用 `MB_MASTER` 的错误代码排查故障(如超时、校验错误)。 - 通过 V20 的 r2029 参数查看通信状态(0=正常,非0=错误码)。 3. **数据格式** - 注意高低字节顺序(西门子通常为大端格式)。 --- ### **6. 常见问题** - **通信失败** 检查地址、波特率、校验是否一致,终端电阻是否启用。 - **控制无响应** 确认 P0700 和 P1000 设为 Modbus 控制模式。 - **数据错误** 确认写入频率值格式(单位 0.01Hz),控制字是否正确。 --- 通过以上配置,S7-1200 可实现通过 Modbus RTU 对 V20 的启停、调速及状态监控。具体细节需参考 V20 手册(参数列表)和 S7-1200 系统手册。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yongshao8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值