最近老是遇上Smart走通讯的项目,做得也比较累。闲下来一点时间,作下记录。省得老是从头开始。网上大多只讲读没讲写的居多。
如果是子站多了可以在主站处加一个子站的循环处理,同以下两篇文章的原理进行处理。 以前有做过Smart 200与ACS880 510 550还有施耐德变频器通讯的文章 主从站之间的通讯原理跟变频器之间的通讯差不多。 进入正题:以下项目为主站读写从站的数据,从站是远程站用于控制主站设备的启停及监控设备状态。从站控制由屏写入从站PLC在通过串口发送出去给主站。 硬件接线框架图 西门子的官方文档上写着可以带32个子站,这个没测试过。以往最多与26台变频器通讯过。读写不会太慢,波特率设置到19200。因为这个项目的距离比较远,担心不稳定所以波特率设置为9600 。19200也有测试过,能通讯得上。但还是担心不稳定所以就设置为9600了。 通讯配置表如下图所示:
|
|
|
| 总字数 |
| AC2从站地址 |
|
| AC2 485实际写入 地址(基本不管) | 53 | AC3主站 接收地址 | VW510 | 格栅井潜污泵1号状态 |
| 40001 | 1 | VW510 | VW512 | 格栅井潜污泵2号状态 |
| 40002 | 1 | VW512 | VW514 | 格栅井潜污泵3号状态 |
| 40003 | 1 | VW514 | VW516 | 格栅井潜污泵4号状态 |
| 40004 | 1 | VW516 | VW518 | 生活污水池潜污泵1号状态 |
| 40005 | 1 | VW518 | VW520 | 生活污水池潜污泵2号状态 |
| 40006 | 1 | VW520 | VW522 | 搅拌器状态 |
| 40007 | 1 | VW522 | VW524 | 生活污水池潜污泵停时间段1 |
| 40008 | 1 | VW524 | VW526 | 生活污水池潜污泵停时间段2 |
| 40009 | 1 | VW526 | VW528 | 生活污水池潜污泵停时间段3 |
| 40010 | 1 | VW528 | VW530 | 生活污水池潜污泵停时间段4 |
| 40011 | 1 | VW530 | VW532 | 生活污水池潜污泵停时间段5 |
| 40012 | 1 | VW532 | VW534 | 生活污水池潜污泵停时间段6 |
| 40013 | 1 | VW534 | VW536 | 生活污水池潜污泵停时间段7 |
| 40014 | 1 | VW536 | VW538 | 生活污水池潜污泵停时间段8 |
| 40015 | 1 | VW538 | VD540 | 格栅井液位 |
| 40016 | 2 | VD540 | VD544 | 格栅井液位高量程 |
| 40018 | 2 | VD544 | VD548 | 格栅井液位低量程 |
| 40020 | 2 | VD548 | VD552 | 生活污水池液位 |
| 40022 | 2 | VD552 | VD556 | 生活污水池液位高量程 |
| 40024 | 2 | VD556 | VD560 | 生活污水池液位低量程 |
| 40026 | 2 | VD560 | VD564 | 格栅井启动小泵液位 |
| 40028 | 2 | VD564 | VD568 | 格栅井启动大泵液位 |
| 40030 | 2 | VD568 | VD572 | 格栅井全关泵液位 |
| 40032 | 2 | VD572 | VD576 | 生活污水池启动泵液位 |
| 40034 | 2 | VD576 | VD580 | 生活污水池停止泵液位 |
| 40036 | 2 | VD580 | VD584 | 搅拌器启动液位 |
| 40038 | 2 | VD584 | VD588 | 搅拌器停止液位 |
| 40040 | 2 | VD588 | VD592 | 格栅井液位高报警 |
| 40042 | 2 | VD592 | VD596 | 生活污水池液位高报警 |
| 40044 | 2 | VD596 | VD600 | 用于清除标志格栅井=1时 |
| 40046 | 2 | VD600 | VD604 | 用于清除标志生活污水池 |
| 40048 | 2 | VD604 | VD608 | 控制位 |
| 40050 | 2 | VD608 |
40050位操作 |
|
|
|
|
| AC2读 |
|
|
|
| AC3写入AC2 | V608.0 | 格栅井潜污泵1号启动(AC3) |
| 40050.0 |
| V608.0 | V608.1 | 格栅井潜污泵2号启动(AC3) |
| 40050.1 |
| V608.1 | V608.2 | 格栅井潜污泵3号启动(AC3) |
| 40050.2 |
| V608.2 | V608.3 | 格栅井潜污泵4号启动(AC3) |
| 40050.3 |
| V608.3 | V608.4 | 生活污水池潜污泵1号启动(AC3) |
| 40050.4 |
| V608.4 | V608.5 | 生活污水池潜污泵2号启动(AC3) |
| 40050.5 |
| V608.5 | V608.6 | 搅拌器启动(AC3) |
| 40050.6 |
| V608.6 | V608.7 | 格栅井潜污泵AC3启动允许 |
| 40050.7 |
| V608.7 | V609.0 | 生活污水池潜污泵AC3启动允许 |
| 40050.8 |
| V609.0 | V609.1 | 搅拌器启动AC3允许 |
| 40050.9 |
| V609.1 | V609.2 | 格栅井潜污泵1号停止(AC3) |
| 40050.10 |
| V609.2 | V609.3 | 格栅井潜污泵2号停止(AC3) |
| 40050.11 |
| V609.3 | V609.4 | 格栅井潜污泵3号停止(AC3) |
| 40050.12 |
| V609.4 | V609.5 | 格栅井潜污泵4号停止(AC3) |
| 40050.13 |
| V609.5 | V609.6 | 生活污水池潜污泵1号停止(AC3) |
| 40050.14 |
| V609.6 | V609.7 | 生活污水池潜污泵2号停止(AC3) |
| 40050.15 |
| V609.7 | V610.0 | 搅拌器停止(AC3) |
| 40051.0 |
| V610.0 | V610.1 | 综合污水池水位非高时=0,高=1 |
| 40051.1 |
| V610.1 | V610.2 |
|
| 40051.2 |
| V610.2 | V610.3 |
|
| 40051.3 |
| V610.3 | V610.4 |
|
| 40051.4 |
| V610.4 | V610.5 |
|
| 40051.5 |
| V610.5 | V610.6 |
|
| 40051.6 |
| V610.6 | V610.7 |
|
| 40051.7 |
| V610.7 | V611.0 |
|
| 40051.8 |
| V611.0 | V611.1 |
|
| 40051.9 |
| V611.1 | V611.2 |
|
| 40051.10 |
| V611.2 | V611.3 |
|
| 40051.11 |
| V611.3 | V611.4 |
|
| 40051.12 |
| V611.4 | V611.5 |
|
| 40051.13 |
| V611.5 | V611.6 |
|
| 40051.14 |
| V611.6 | V611.7 |
|
| 40051.15 |
| V611.7 | VD612 | 综合池液位 |
| 40052 | 2 | VD612 |
以下为程序: 配置从站的地址为3 以下为从站的程序段 从站程序比较简单,因为只是作为远程操作站来处理。人不用跑到主站那边去操作,在从站的屏上直接可以远控主站设备。所以那些控制位都是在屏上的按钮给的。采用的是按下为1,放开为0的形式。注意这里的初始化地址为从站自己的地址,等会在系统配置上能看到。这个跟主站程序上读写的站地址对应上了。 主站的系统块配置 从站的系统块配置 本文只是对485的读写寄存器进行操作。如果要操作其它的比如只读寄存器,只写寄存器等就得对通讯两端进行其它配置。
|