用户登陆 用户注册
您的位置:首页>
技术文章>内容正文
西门子PLC与英威腾CHV系列变频器通信
[正文]:导读: 以西门子s7-200系列plc为例,介绍plc与chv矢量变频器建立通讯并实现对变频器起停、频率给定、监控等功能的控制。
一.功能介绍 英威腾chv系列矢量变频器内置国际标准的modbus(从站)通信协议,配合chv系列变频器专用通讯卡,可非常方便的实现远程通讯控制功能。
通讯卡上提供rs232及rs485两种物理通讯端口,用户可通过设置卡上的跳线选择。
下面以西门子s7-200系列plc为例,介绍plc与chv矢量变频器建立通讯并实现对变频器起停、频率给定、监控等功能的控制。
变频器作为modbus协议从站接收来自cpu224 plc的通信指令,。
chv系列矢量变频器在与cpu224通信前须做好以下准备工作: 1.确认已安装好chv系列矢量变频器的通讯卡,并将卡上的端口跳线置于rs485端; 2.用一根带9针阳性插头的串口通信电缆连接在cpu224 plc的自由通信口端,电缆另一端的第5、3、8线分别接在chv变频器rs485通讯卡的gnd、485+、485-端子上,其余线屏蔽不用; 3.预先设置变频器以下参数: pc0.0=1 //变频器通讯地址为1 pc0.1=3 //通讯波特率9.6k pc0.2=1 //通讯数据偶校验 p0.01=2 //变频器的运行指令采用通讯方式 p0.03=7 //变频器的a频率设定采用通讯方式二.plc内存使用说明 西门子s7-200系列plc的自由通讯端口编程必定会用到两个指令,即xmt(发送)指令和rcv(接收)指令。
编写程序时需要为这两个指令指定数据缓冲区,一般以最低位数为0的地址作为数据缓冲区的起始地址。
1.发送指令xmt缓冲区(写/读) vb100 //xmt指令要发送的字节个数 vb101 //变频器通讯地址(01) vb102 //modbus功能码(06/03) vb103 //变频器被写地址高位/变频器被读起始地址高位 vb104 //变频器被写地址低位/变频器被读起始地址低位 vb105 //被写数据高位/被读数据字个数高位 vb106 //被写数据低位/被读数据字个数低位 vb107 //被发送数据crc低位 vb108 //被发送数据crc高位 2.接收指令rcv缓冲区 vb200 //rcv指令要接收的字节个数 vb201 //变频器地址(01) vb202 //modbus功能码(06/03) vb203 //变频器被写地址高位/被读数据字节个数高位 vb204 //变频器被写地址低位/被读数据字节个数低位 vb205 //被写数据高位/被读数据高位 vb206 //被写数据低位/被读数据低位 vb207 //被接收数据crc低位 vb208 //被接收数据crc高位 vb217 //被接收数据crc验算低位 vb218 //被接收数据crc验算高位 2.crc校验子程序(sbr0) 英威腾chv系列矢量变频器内置的modbus协议采用rtu传输格式,该格式使用crc校验方式对每次发出或接收的数据帧进行校验。
因此,该子程序使用了多个局部变量,以方便其它子程序调用。
在西门子step 7-micro/win 编程环境下(如图一),需要在该子程序的局部变量表中预先设定以下局部变量:
点击查看大图片
(1)输入型局部变量(var_input) 1d_0:dword; // 待发送数据地址指针变量 lw_4:word; // 待发送数据字节个数变量 (2)输出型局部变量(var_output) lb_6:byte; // crc校验值高位变量 lb_7:byte; // crc校验值低位变量 (3)临时局部变量(var) lw_8:word; // 待发送数据字节个数计数变量 lw_10:word; // 待发送数据每字节8位二进制数计数变量 network 1 ld sm0.0 movw 16#ffff, lw6 //将16位crc校验寄存器lw6全置为1 network 2 ld sm0.0 for lw8, +1, lw4 //对待发送数据字节个数(lw4)计数(lw8)循环 network 3 ld sm0.0 xorb *ld0, lb7 //使待发送数据的第一个字节(*ld0)与 //crc校验寄存器低位字节(lb7)进行异或运算 network 4 ld sm0.0 incd ld0 //ld_0指向待发送数据的下一个地址 network 5 ld sm0.0 for lw10, +1, +8 //对每字节8位二进制数计数(lw10)循环 network 6 ld sm0.0 srw lw6, 1 //crc校验寄存器lw6右移一位 network 7 ld sm1.1 //若移位后的溢出值sm1.1为1 xorw 16#a001, lw6 //则使值16#a001与lw6进行异或运算 network 8 next //结束每字节8位二进制数计数循环 network 9 next //结束每数据帧字节个数计数循环 3. 初始化子程序(sbr1) 该程序在plc的第一个扫描周期运行,主要是设置cpu224自由端口的通信格式、数据接收格式及复位各寄存区(参见西门子s7-200编程手册)。
通信格式内容包括:波特率9.6k、每字节位数8位、偶校验等(注意与变频器一致)。
数据接收格式完全参照modbus rtu格式设定,以不少于3.5个字节传输时间的通信口空闲间隔作为数据接收的开始及结束信号。
根据协议,plc 在准备接收数据前会先监测通信口是否空闲,如连续空闲时间超过了3.5个字节的传输时间,则plc默认数据接收开始,此后通讯口上出现的信息即被认为是一个数据帧的内容。
同理,随着一个数据帧的最后一个字节传输完成,又会出现一个3.5字节传输时间的空闲间隔,来表示一个数据帧传输的结束。
(参见 modbus协议标准及chv系列矢量变频器通讯卡使用说明书) 对9.6k的通信波特率来说,3.5个字节传输时间约为5ms左右。
因该程式的每个指令只准备接收一个数据帧的回馈信息,所以接收数据前的空闲检测时间可设为0,即plc在发出数据后立即开始接收数据,但一个数据帧的传输结束空闲检测时间仍需设为5ms以上。
network 1 ld sm0.0 movb 16#49, smb30 //设置自由通信口格式 movw +0, smw90 //空闲行间隔检测时间0ms movw +5, smw92 //字符间定时器超时检测时间5ms movb 20, smb94 //接收信息的最大缓冲区20字节 movb 148, smb87 //设置自由通信口的数据接收格式 fill +0, qw0, 1 //输出印象寄存区复位 fill +0, mw0, 1 //标志寄存区复位 fill +0, vw100, 5 //发送缓冲区复位 fill +0, vw200, 5 //接收缓冲区复位 atch int_0, 23 //接收完成中断 atch int_1, 9 //发送完成中断 eni //在全局启用中断
网站首页
培训课程
维修指南
技术文章
家电专栏
供应信息
求购信息
培训资讯
展会信息
电脑专栏
教程下载
资料下载
常用软件
PLC教程
PLC资料
变频伺服
低压电器
维修资料
人机界面
自控仪表
工控机类
文章标题:
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
京ICP备11002135号
报时(2026-04-02 06:12:21)