找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
你这个问题很好,好的,您的问题描述得非常清晰。这是一个典型的西门子S7-200 SMART PLC通过Modbus RTU协议与台达VFD-M系列变频器通信的案例,同时结合了模拟量控制。
下面我将为您提供详细的程序步骤和说明。
### 系统架构和原理
1. **通信部分 (Modbus RTU)**:
* **主站**: S7-200 SMART PLC (通过扩展的RS485端口,即Port 1)。
* **从站**: 台达VFD004M21A变频器。
* **协议**: Modbus RTU。
* **功能码**: 使用 `03` 功能码读取保持寄存器。变频器的参数(如2103H)在Modbus映射中属于保持寄存器。
2. **控制部分 (模拟量输出)**:
* **PLC**: 使用集成模拟量输出点 `AQW16` (即AQ0) 输出4-20mA信号。
* **变频器**: 将频率指令来源设置为“模拟量电流信号输入”(通常对应参数00-17 = 1)。
---
### 第一步:硬件接线与变频器参数设置
#### 1. 硬件接线
* **通信线**: 将PLC RS485端口的 `3+` (RS485 B/Y) 连接到变频器RS485端子的 `485+`,将 `8-` (RS485 A/Z) 连接到变频器RS485端子的 `485-`。务必连接好信号地 `GND`。
* **模拟量控制线**: 将PLC的 `AQ0` (正极) 连接到变频器的 `AVI` (模拟量电压/电流输入) 端子,将 `M` (负极/公共端) 连接到变频器的 `ACM` (模拟量公共地) 端子。您可能需要在变频器端或PLC端通过跳线将AVI设置为电流输入模式(4-20mA)。
#### 2. 变频器关键参数设置
在启动前,请先通过变频器面板设置以下参数。**设置前请记录原始值,以便恢复。**
| 参数代号 | 参数名称 | 设定值 | 说明 |
| :--- | :--- | :--- | :--- |
| **P00-17** | **频率指令来源** | **1** | **关键!设定为模拟量信号(ACI)输入。** |
| P00-18 | 运转指令来源 | 1 | 设定为外部端子控制。这样可以通过PLC的DO点控制启停,或者像您这样只用模拟量给定频率,启停也用通信控制。如果启停也用通信,则设为2。 |
| **P09-00** | **通信位址** | **1** | 设定变频器在Modbus网络中的站号,例如1。 |
| **P09-01** | **通信传输速率** | **3** | 对应9600 bps (常见,请与PLC程序一致) |
| P09-02 | **通信资料格式** | **1** | 对应 8, N, 1 (无校验,1停止位) 或根据PLC设置调整。**必须与PLC端MBUS_MSG指令的`Parity`参数匹配。** |
| P09-04 | 通信协议选择 | 0 | Modbus RTU模式 |
**Modbus地址映射 (来自台达VFD-M手册):**
* 输出频率 (2103H): 实际Modbus地址为 `2103 Hex` = `8451 Decimal`。但S7-200 SMART的MBUS_MSG指令使用从1开始的地址,所以通常填写 `8452`。
* 输出电流 (2104H): `2104 Hex` = `8452 Decimal` -> 填写 `8453`。
* 输出电压 (2106H): `2106 Hex` = `8454 Decimal` -> 填写 `8455`。
**公式:PLC中填写的地址 = 十六进制地址转十进制 + 1**
---
### 第二步:S7-200 SMART 程序设计
程序主要分为两部分:
1. **Modbus通信**: 使用`MBUS_CTRL`和`MBUS_MSG`指令轮询读取变频器的数据。
2. **模拟量输出**: 将给定的频率值(如0-50.0Hz)线性转换为对应的数字量(0-27648或5530-27648)并写入`AQW16`。
#### 程序结构说明
**1. 初始化Modbus主站协议 (MBUS_CTRL)**
只需在第一个扫描周期或一个始终接通的条件下执行一次。
* `Mode`: 始终为 `1` (Modbus RTU模式)。
* `Baud`: `9600` (必须与变频器P09-01一致)。
* `Parity`: `0` (无校验),必须与变频器P09-02一致。
* `Port`: `1` (使用扩展的RS485口)。
* `Done` / `Error`: 用于监控状态。
**2. 轮询读取数据 (MBUS_MSG)**
由于需要读取3个不同的参数,最好分时轮询,即一个读完再读下一个,避免通信冲突。可以使用一个状态机或定时器来循环触发。
* `First`: 使用一个上升沿触发,每次只接通一个扫描周期。
* `Slave`: `1` (变频器站号,与P09-00一致)。
* `RW`: `0` (读请求)。
* `Addr`: 起始地址 (如 `8452` 对应频率)。
* `Count`: `1` (每次读1个寄存器)。
* `DataPtr`: 指向存储数据的V区地址 (如 `&VB1000`)。
* `Done` / `Error`: 用于触发下一个读取或处理错误。
**3. 模拟量输出控制**
将期望的频率值(单位:0.1Hz)转换为模拟量输出的数字值。
* 假设频率范围:0.0 Hz 到 50.0 Hz。
* 模拟量输出范围:4 mA 到 20 mA。
* PLC数字量范围:4mA对应5530,20mA对应27648。
**转换公式:**
`Output_Value = (设定频率值 / 50.0) * (27648 - 5530) + 5530`
在程序中,我们使用实数运算,然后将结果取整并传送到`AQW16`。
---程序超字数了。。没法给你看了。。
希望可以帮到你,记得给个好评。。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城