一、试验前准备
◆ 试验环境:
Windows XP,安装SIMATIC STEP_7−MicroWIN_V4_SP3软件(版本不得低于V3.2)
◆ 试验部件及工具:
SIEMENS S7−200 PLC一款,本例为CPU 226 CN 版本02.01,若CPU不一样,注意修改CPU类型;
西门子编程线缆PPI一根;
蓝海华腾变频器1台,也可多台组网试验;
连接导线若干;
电机1台(可选,如果没有,可通过变频器操作面板观察通讯效果)。
◆ 试验系统连线图:
图 1
◆ Modbus线缆制作:
图 2
◆ PPI线缆端口的设置:
首先确定PPI线所占据的串口号如果您希望更改串口号,可以点鼠标右键−>属性−>端口设置点击高级,选择COM端口号即可修改串口分配,即使已经使用也可以重新调配,该串口选择要和西门子STEP7软件:设置PG/PC接口的COM口号一致。
图 3
西门子软件PPI配置,点击设置PG/PC接口,点击属性:
图 4
设置PPI参数。地址默认为0,传输率选19.2Kbps。再转到本地连接栏,如下图:
图 5
本地连接“连接到(C):”的COM5和PPI串口号要一致,否则无法建立连接,提示连接错误。
改SIMATIC Manager –>选项−>设置PG/PC接口−>属性−>连接到的串口与计算机一致后,再下载,则显示进度可以下载。
图 6
二、试验步骤
STEP1:按照试验前准备中的接线图,正确连接好所有连线,变频器的连接参考变频器用户手册。并检查测试连接正确性。
STEP2:双击桌面图标打开STEP 7−Micro/WIN SP3软件。
STEP3:打开例子程序
图 7
STEP4:上电,设置变频器通讯参数
功能码 | 参数 | 含义 | 功能码 | 参数 | 含义 |
P0.06 | 2 | 上位机控制启停 | PC.00 | 6 | 19200Bps/使用端子485通讯时 |
PC.01 | 0 | 数据格式1start−8data−1end | PC.02 | 1 | 变频器作为从机的通讯地址 |
PE.02 | 0~N | 端子485通讯应答延时 | PE.11 | 7 | 38400Bps/使用键盘口RJ45通讯时 |
PE.13 | 0~N | 变频器RJ45口通讯应答延时 | PC.02 | 1 | 变频器作为从机的通讯地址 |
N可以按需要设置,默认5ms。PE组参数需要输入密码0608才可修改,PE.00为PE组的密码输入和设置功能码。连续设置PE.00两次相同值为设置密码,设置为0时无密码。
STEP5:下载S7−200PLC程序:
图 8
连接正确时,可下载,否则检查PPI通讯串口设置。
STEP6:运行程序
首先确认已将S7−200 Modbus连线已接到蓝海华腾变频器的端子485+,485−上或连接到变频器键盘口上,键盘口连线的制作请参考变频器使用说明书,最简单的做法是取RJ45接口中间2条线一条是485+,一条是485−,如果通讯不上,对调一下这两根线
三、程序说明及其代码
◆ 功能介绍:
蓝海华腾变频器内置国际标准的MODBUS通信协议,程序运行时,作为从站接收来自CPU 226 CN的通信指令,完成变频器的正转开机、反转开机、停机、频率切换的功能。
◆ 程序结构说明:
主程序(OB1) //主程序,初始化及各功能的实现。
CRC //CRC检验子程序
MODBUS RTU //MODBUS发送子程序
◆ PLC内存使用说明:
I0.0 //正转
I0.1 //反转
I0.2 //停机
I0.3 //设置频率20Hz
I0.4 //设置频率40Hz
VB10 //发送频率和命令指针。1:频率2:命令
VW100 //设定频率
VW150 //命令控制字
VB800 //XMT指令要发送的字节个数
VB801 //变频器地址
VB802 //MODBUS功能
VB803 //频率或命令字。5:频率 8000:命令
◆ 程序代码:
主程序:OB1
西门子S7 200 PLC 与 蓝海华腾变频器通讯例程
// X0:正转开机
// X1:反转开机
// X2:停机
// X3:设置频率为20Hz
// X4:设置频率为40Hz
Network 1 // 初始频率30Hz,不发送启停控制命令
LD SM0.1
MOVB 16#0, VB10 //不发送控制命令
MOVW 3000, VW100 //设定频率30Hz
MOVW 0, VW150 //运行无效命令
S SM10.1, 1 //定时标志位
R SM10.0, 1
Network 2 // 100ms定时
LD SM10.1
TON T37, 1
Network 3 // 100ms定时到,发送一次modbus指令
LD T37
EU
R SM10.1, 1
CALL SBR2 //调用MODBUS发送子程序
Network 4 // 100ms定时
LDN SM10.1
TON T38, 1
Network 5 // 100ms定时到,发送一次modbus指令
LD T38
EU
S SM10.1, 1
CALL SBR2
Network 6 // X0 正转开机
LD I0.0
EU
MOVW 16#1, VW150 //正转运行命令有效
S SM10.0, 1
Network 7 // X1 反转开机
LD I0.1
EU
MOVW 16#03, VW150 //反转运行命令有效
S SM10.0, 1
Network 8 // X2 停机
LD I0.2
EU
MOVW 16#0, VW150 //停机
S SM10.0, 1
Network 9 // X3 设置频率20Hz
LD I0.3
EU
MOVW 2000, VW100
Network 10 // X4 设置频率40Hz
LD I0.4
EU
MOVW 4000, VW100
CRC校验:SBR1 // Modbus Crc16校验,CRC16高低字节取 反后存入帧尾
Network 1
LD SM0.0
MOVD &VB801, LD0
Network 2
LD SM0.0
MOVW 16#FFFF, LW6
Network 3
LD SM0.0
FOR LW10, +1, +8
Network 4
LD SM0.0
MOVB 16#0, LB8
MOVB *LD0, LB9
XORW LW8, LW6
Network 5
LD SM0.0
FOR LW12, +1, +8
Network 6
LD L7.0
= L14.0
Network 7
LD SM0.0
SRW LW6, 1
Network 8
LD L14.0
XORW 16#A001, LW6
Network 9
NEXT
Network 10
LD SM0.0
INCD LD0
Network 11
NEXT
Network 12
LD SM0.0
MOVB LB7, *LD0
INCD LD0
MOVB LB6, *LD0
ModbusRTU:SBR2 //Modbus RTU发送程序
Network 1 // 发送频率设定,VW100是设定频率
LDB= VB10, 1
LDB= VB10, 2
AN SM10.0
OLD
MOVW 16#05, VW803
MOVW VW100, VW805
Network 2 // 发送运行控制命令字,VW150是控制字
LDB= VB10, 2
A SM10.0
MOVW 16#8000, VW803
MOVW VW150, VW805
Network 3 // VB10 发送频率和命令指针,1:频率,2:命令;
// VW802赋值为16#06表示写1个word寄存器到变频器EEPROM,如果频繁修改,请用16#41只写1word 的RAM方式
LD SM0.0
MOVB 16#08, VB800
MOVB 16#1, VB801
MOVB 16#06, VB802
Network 4 // 对VB801到VB806内容进行CRC校验,校验和高低字节取反后存入VB807,VB808,然后发送8个字节出去
LD SM0.0
CALL SBR1
XMT VB800, 0
Network 5 // 发送运行控制命令字,VW150是控制字
LDB= VB10, 2
A SM10.0
R SM10.0, 1
Network 6 // 索引加1
LD SM0.0
INCB VB10
Network 7 // 索引超过2,重新从1开始
LDB> VB10, 2
MOVB 1, VB10