首页 西门子S7-200通过自由口和英威腾变频器通讯

西门子S7-200通过自由口和英威腾变频器通讯

举报
开通vip

西门子S7-200通过自由口和英威腾变频器通讯 西门子 S7-200通过自由口需要控制英威腾变频器的正负转 停止和故障复位,运行频率控制以及 分二次读取运行速度等 12条变频器信息。程序略微变动适应所有 Modbus RTU需要控制。 下面是程序,可以直接导入程序后写入 PLC试验 ORGANIZATION_BLOCK 主程序:OB1 TITLE= BEGIN Network 1 // 主程序,初始化并查执各变频器指令 // 一.功能介绍 // 该程序专为英威腾 CHF系列变频器编写。英威腾 CHF系列变频器...

西门子S7-200通过自由口和英威腾变频器通讯
西门子 S7-200通过自由口需要控制英威腾变频器的正负转 停止和故障复位,运行频率控制以及 分二次读取运行速度等 12条变频器信息。程序略微变动适应所有 Modbus RTU需要控制。 下面是程序,可以直接导入程序后写入 PLC试验 ORGANIZATION_BLOCK 主程序:OB1 TITLE= BEGIN Network 1 // 主程序,初始化并查执各变频器指令 // 一.功能介绍 // 该程序专为英威腾 CHF系列变频器编写。英威腾 CHF系列变频器内置国际 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的 MODBUS 通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 。程序运行时,变频器作为 MODBUS协议从站接收来自 CPU224 PLC的通信指令,实 现起停、频率给定、监控等功能。 // CHF系列矢量变频器在与 CPU224通信前须做好以下准备工作: // 1.确认己安装好 CHF系列变频器的通讯卡,并将卡上的端口跳线置于 RS485端; // 2.用一根带 9针阳性插头的串口通信电缆连接在 CPU224 PLC的自由通信口端,电缆另一端 的第 5、3、8线分别接在 CHF变频器 RS485通讯卡的 GND、485+、485一端子上,其余线屏 蔽不用; // 3.预先设置变频器以下参数: // PC.00=1 //变频器通讯地址为 1 // PC.01=3 //通讯波特率 9.6K // PC.02=1 //通讯数据偶校验 8位数据位 1位停止位 // P0.03=2 //变频器的运行指令采用通讯方式 // P3.01=7 //变频器的 A频率设定采用通讯方式(注意 P3.04/P3.05对 P3.01通讯频率的影响) // 二.程式结构说明 // 该程序由 1个主程序 3个子程序及 2个中断程序组成。子程序里包含了变频器的起停、复位、 查询功能指令,由主程序调用。中断程序为发送及接收指令提供中断支持。 www.plcworld.cn // main //主程式,初始化并查执各变频器指令 // sbr0 //CRC校验子程序 // sbr1 //通讯端口初始化子程序 // sbr2 //发送变频器写入 06/读取 03指令,共 8个字节 // intO //接收完成中断程序 // int1 //发送完成中断程序 LD SM0.1 CALL SBR1 //调用初始化子程序,使能 PORT0自由口模式 Network 2 // 接收完成后延时 10mS M4.4接通,运行下一次发送数据 LDN M4.0 AN M4.1 TON T35, 1 // 通讯完成后延时 10mS M4.4=1,允许下一次通讯, A T35 = M4.4 //主要是为了 Modbus RTU二次通讯中间 3.5字符间隔时间 Network 3 // 如果发送或接收超时,延时 0.2秒复位 M4.0/M4.1,这里暂时设置 5秒是为了方便调试 LD M4.0 O M4.1 TON T199, 50 A T199 R M4.0, 2 //发送或接收超过 0.2秒没有完成,复位发送/接收 Network 4 // 调用 Modbus06写入指令,通讯成功,这里暂时不用,可以作打手频率设定,不知道是 否支持广播写入,广播写入主要是变频器故障复位和三个打手频率设定.给棉变频器如果需要用 PID控制没有必要用 PLC的 PID // 当 VW110≠VW300时把 VW110写入变频器,VW110范围(+10000~-10000)÷10000×50Hz // 地址为变频器地址;字节为发送的字节数量=8个字节;指令=03为读取指令,06为写入指令; 数据地址=2000H为英威腾变频器设置频率的地址;数据内容为写入 2000H的内容,范围 +10000~0~-10000 // 运行命令权限最高,如果运行命令没有完成,程序将会一直执行下去,直到运行命令完成 LDN M8.1 //没有发送运行命令,当运行命令发送过程中不能够发送频率写通讯 AW<> VW300, VW110 //发送的数据 VW110与通讯完成返回的数据不等 A M4.4 //允许发送 S M8.0, 1 //发送为写运行速度命令,为了接收信息时保存到 VW300用 CALL SBR3, 1, 8, 6, 16#2000, VW110 //把 VW110数据写入到变频器地址 1的 2000H寄存器 Network 5 // 控制变频器正负转 停止和故障复位 同时有几个输入时执行最后的指令 LD SM0.0 LPS A I5.1 //运行命令 www.plcworld.cn MOVW 1, VW304 LRD A I5.3 //反转命令 MOVW 2, VW304 LRD A I5.2 //停车命令 MOVW 5, VW304 LPP A I5.4 //故障复位命令 MOVW 7, VW304 Network 6 // 设定英威腾变频器 1000H通信控制命令,来控制变频器正负转和停止等操作命令 // 控制变频器运转 英威腾变频器地址 1000H 01正转运行 02反转运行 03正转点动 04反转点 动 05停车 06自由停车 07故障复位 08点动停车 LDW<> VW304, VW302 //运行命令 VW304与接收的返回信息比较,不相等将一直发送下去 A M4.4 S M8.1, 1 //为了把返回信息的保存到 VW302寄存器 CALL SBR3, 1, 8, 6, 16#1000, VW304 //把命令内容 VW304写入到英威腾变频器的 1000H地址 Network 7 // 调用 Modbus读取,不要读取范围以外的内容,不然会报错误 // 读取变频器状态 3000H 运行速度 3001H 设定速度 3002H 母线电压 3003H 输出电压 3004H 输出电流 3005H 运转速度 // 当有其他重要的读写命令时该通讯暂停 // 分 2次读取英威腾变频器 3000H~3005H 3008H~3013H信息,本来英威腾变频器说明书说 可以连续读取 16条信息,不过我读取 16条信息返回数据没有 CRC校验内容,不知为何,本来 是试验程序,有时需要连续读取多条信息,就试验读取 2次 12条信息 LDN M8.0 AN M8.1 //程序没有发送写频率和运行命令时才能够读取变频器数据 A M4.4 LPS //调用查询变频器 INCB VB270 //启动 T37延时断开计时器 A V270.0 S M8.2, 1 MOVW 16#3000, VW272 //读取 3000H开头的连续 6条信息 LRD AN V270.0 S M8.3, 1 MOVW 16#3008, VW272 //读取 3008H开头的连续 6条信息 LPP CALL SBR3, 1, 8, 16#03, VW272, 6 END_ORGANIZATION_BLOCK SUBROUTINE_BLOCK 初始化:SBR1 TITLE=通讯端口初始化子程序 // 该程序在 PLC的第一个扫描周期运行,主要是设置 CPU224自由端口的通信格式、数据接收 www.plcworld.cn 格式及复位各寄存区(参见西门子 S7-200编程手册)。 // 通信格式内容包括:波特率 9.6K、每字节位数 8位、偶校验等(注意与变频器一致)。 // 数据接收格式完全参照MODBUS RTU格式设定,以不少于 3.5个字节传输时间的通信口空闲 间隔作为数据接收的开始及结束信号。根据协议,PLC在准备接收数据前会先监测通信口是否空 闲,如连续空闲时间超过了 3.5个字节的传输时间,则 PLC默认数据接收开始,此后通讯口上出 现的信息即被认为是一个数据帧的内容。同理,随着一个数据帧的最后一个字节传输完成,又会 出现一个 3.5字节传输时间的空闲间隔,来表示一个数据帧传输的结束。(参见 MODBUS协议标 准及 CHF系列矢量变频器通讯卡使用说明书) // 对 9.6K的通信波特率来说,3.5个字节传输时间约为 5ms左右。因该程式的每个指令只准备 接收一个数据帧的回馈信息,所以接收数据前的空闲检测时间可设为 0,即 PLC在发出数据后立 即开始接收数据,但一个数据帧的传输结束空闲检测时间仍需设为 5ms以上。 BEGIN 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, MW8, 1 //输出印象寄存区复位 FILL +0, MW9, 1 //标志寄存区复位 FILL +0, VW100, 5 //发送缓冲区复位 FILL +0, VW200, 5 //接收缓冲区复位 ATCH INT2, 23 //接收完成中断 ATCH INT1, 9 //发送完成中断 ENI //在全局启用中断 END_SUBROUTINE_BLOCK SUBROUTINE_BLOCK CRC校验:SBR2 TITLE= CRC校验子程序 // 英威腾 CHV系列矢量变频器内置的 MODBUS协议采用 RTU传输格式,该格式使用 CRC校 验方式对每次发出或接收的数据帧进行校验。因此,该子程序使用了多个局部变量,以方便其它 子程序调用。 // 在西门子 STEP 7-Micro/win编程环境下(如图一),需要在该子程序的局部变量表中预先设定以 下局部变量: // (1)输入型局部变量(VAR INPUT) // ld 0:DWORD://待发送数据地址指针变量 // 1w 4:WORD; //待发送数据字节个数变量 // (2)输出型局部变量(VAR-OUTPUT) // lb 6:BYTE;//CRC校验值高位变量 // lb 7:BYTE;//CRC校验值低位变量 // (3)临时局部变量(VAR) // 1w 8:WORD; //待发送数据字节个数计数变量 // 1w 10:WORD;//待发送数据每字节 8位二进制数计数变量 VAR_INPUT www.plcworld.cn LD_0:DWORD; // 待发送数据地址指针变量 LW_4:WORD; // 待发送数据字节个数变量 END_VAR VAR_OUTPUT IB_6:BYTE; // CRC校验值高位变量 LB_7:BYTE; // CRC校验值低位变量 END_VAR VAR LW_8:WORD; // 待发送数据字节个数计数变量 LW_10:WORD; // 待发送数据每字节 8位二进制数计数变量 END_VAR BEGIN Network 1 // //将 16位 CRC校验寄存器 LW6全置为 1 LD SM0.0 MOVW 16#FFFF, LW6 //将 16位 CRC校验寄存器 LW6全置为 1 Network 2 // //对待发送数据字节个数(Lw4)计数(Lw8)循环 LD SM0.0 FOR LW8, +1, LW4 //对待发送数据字节个数(Lw4)计数(Lw8)循环 Network 3 // //使待发送数据的第一个字节(*LD0)与 CRC校验寄存器低位字节(LB7)进行异或运算 LD SM0.0 XORB *LD0, LB7 //使待发送数据的第一个字节(*LD0)与 //CRC校验寄存器低位字节(LB7)进行异或运算 Network 4 // //ld 0指向待发送数据的下一个地址 LD SM0.0 INCD LD0 //ld 0指向待发送数据的下一个地址 Network 5 // //对每字节 8位二进制数计数(LW10)循环 LD SM0.0 FOR LW10, +1, +8 //对每字节 8位二进制数计数(LW10)循环 Network 6 // //CRC校验寄存器 LW6右移一位 LD SM0.0 SRW LW6, 1 //CRC校验寄存器 LW6右移一位 Network 7 // //若移位后的溢出值 SMl.1为 1,则使值 16#A001与 LW6进行异或运算 LD SM1.1 //若移位后的溢出值 SMl.1为 1 www.plcworld.cn XORW 16#A001, LW6 //则使值 16#A001与 LW6进行异或运算 Network 8 // //结束每字节 8位二进制数计数循环 NEXT //结束每字节 8位二进制数计数循环 Network 9 // //结束每数据帧字节个数计数循环 NEXT //结束每数据帧字节个数计数循环 END_SUBROUTINE_BLOCK SUBROUTINE_BLOCK Modbus读写:SBR3 TITLE= 三.PLC内存使用说明 // 西门子 S7-200系列 PLC的自由通讯端口编程必定会用到两个指令,即 XMT(发送)指令和 // RCV(接收)指令。编写程序时需要为这两个指令指定数据缓冲区,一般以最低位数为 0的地 // 址作为数据缓冲区的起始地址。 // 1.发送指令 XMT缓冲区(写/读) // VB100 //xmt指令要发送的字节个数 // VB101 //变频器通讯地址(01) // VB102 //modbus功能码(06/03) // VW103 //变频器被写地址/变频器被读起始地址 // VW105 //被写数据/被读数据字个数 // VB107 //被发送数据 CRC低位 // VB108 //被发送数据 CRC高位 VAR_INPUT 地址:BYTE; // 变频器地址,字节 字节:BYTE; // 发送字节数 指令:BYTE; // 读 16#03 写 16#06 数据地址:WORD; // 需要写的变频器参数地址 数据内容:WORD; END_VAR BEGIN Network 1 LD SM0.0 MOVB LB1, VB100 //XMT指令要发送的字节个数 MOVB LB0, VB101 //变频器地址(01) MOVB LB2, VB102 //modbus写功能码(06) MOVW LW3, VW103 //变频器频率设定值地址 MOVW LW5, VW105 //频率设定值 CALL SBR2, &VB101, 6, VB108, VB107 //调用 CRC校验子程序 XMT VB100, 0 //将缓冲区(VBl00~VBl08)数据由 0端口发送 S M4.0, 1 INCW VW4004 END_SUBROUTINE_BLOCK INTERRUPT_BLOCK 发送完成:INT1 www.plcworld.cn TITLE=发送完成中断子程序 BEGIN Network 1 // //数据接收开始 LD SM0.0 RCV VB200, 0 //数据接收开始 Network 2 // 发送完成中断中复位 M4.0,置位 M4.1 监控程序是否因发送超时还是接收超时 LD SM0.0 R M4.0, 1 S M4.1, 1 END_INTERRUPT_BLOCK INTERRUPT_BLOCK 接收完成:INT2 TITLE=接收完成中断程序 // 利用西门子 S7_200系列 PLC提供的系统中断事件,使发送指令 XMT及接收指令 RCV完成 时自动产生程序中断,以便及时完成其它必要的程序操作。 // 这里程序只利用 VB205来反映变频器工作状态。 // 2.接收指令 RCV缓冲区 // VB200 //rcv指令要接收的字节个数 // VB201 //变频器地址(01) // VB202 //modbus功能码(06/03) // VW203 //变频器被写地址/被读数据字节个数 // VW205 //被写数据/被读数据 // VB207 //被接收数据 CRC低位 // VB208 //被接收数据 CRC高位 // VB217 //被接收数据 CRC验算低位 // VB218 //被接收数据 CRC验算高位 BEGIN Network 1 // 网络标题 // M8.2=0是 8位字节写指令,返回数据也是 8个字节,校验数据有 6个字节 VB201~VB206, VB257 VB258(VW257)是校验码。同时比较校验码与实际计算校验码是否正确,正确后 M10.1 置位 1 LDN M8.2 //非读取信息时,因读取信息返回数据字节数因信息不一样而不同 LPS //写信息返回字节数固定不变,均为 8字节接收信息 R M4.1, 1 CALL SBR2, &VB201, 6, VB258, VB257 //接收接收到的信息 VB201开头连续 6个字节的 CRC 值,见过保存到 VW257 AW= VW257, VW207 //比较接收信息的 CRC位 VW207与实际计算的 CRC是否相等,相等说明 信息正确 S M10.1, 1 //信息正确,M10.1置位 1 LPP AW<> VW257, VW207 R M10.1, 1 //信息校验错误,M10.1=0 www.plcworld.cn Network 2 // 如果是读取信息命令(2次读取均是读取 6条信息,返回信息数 17字节) LD M8.2 //第一条读取命令 O M8.3 //第二条读取命令 LPS R M4.1, 1 CALL SBR2, &VB201, 15, VB258, VB257 //校验 VB201开头连续 15字节接收信息的 CRC校验 值 AW= VW216, VW257 S M10.2, 1 LPP AW<> VW216, VW257 //接收信息 CRC校验位与实际接收的信息计算的 CRC结果比较,如果相 等说明计算信息正确 R M10.2, 1 Network 3 // 如果是第一条读取信息,则返回信息保存到 VW1000开头的连续 6字 LD M8.2 A M10.2 MOVW VW204, VW1000 MOVW VW206, VW1002 MOVW VW208, VW1004 MOVW VW210, VW1006 MOVW VW212, VW1008 MOVW VW214, VW1010 R M8.2, 1 Network 4 // 如果是第二条读取信息,则接收到的信息保存到 VW1012开头的连续 6个字 LD M8.3 A M10.2 MOVW VW204, VW1012 MOVW VW206, VW1014 MOVW VW208, VW1016 MOVW VW210, VW1018 MOVW VW212, VW1020 MOVW VW214, VW1022 R M8.3, 1 Network 5 // 写英威腾变频器 H2000数据,如果返回数据正确,M8.0复位 0,VB310清零 LD M10.1 A M8.0 MOVW VW205, VW300 R M8.0, 1 www.plcworld.cn Network 6 LD M10.1 MOVW VW203, VW312 MOVW VW205, VW302 R M8.1, 1 Network 7 // END_INTERRUPT_BLOCK 主程序梯形图 www.plcworld.cn www.plcworld.cn 网络 26 www.plcworld.cn www.plcworld.cn www.plcworld.cn 初始化子程序,把通讯口 0设置自由口模式 www.plcworld.cn www.plcworld.cn www.plcworld.cn 引用 | 回复 张智勇 CRC校验子程 www.plcworld.cn www.plcworld.cn www.plcworld.cn 引用 | 回复 | 2009-03-02 11:30:26 5楼 张智勇 发送子程序 www.plcworld.cn www.plcworld.cn 引用 | 回复 | 2009-03-02 11:31:47 6楼 张智勇 发送完成中断子程序,发送完成执行接收 www.plcworld.cn 引用 | 回复 | 2009-03-02 11:36:45 7楼 张智勇 接收完成中断程序,把接收到的信息保存到相对于的寄存器 www.plcworld.cn www.plcworld.cn www.plcworld.cn www.plcworld.cn www.plcworld.cn www.plcworld.cn www.plcworld.cn www.plcworld.cn
本文档为【西门子S7-200通过自由口和英威腾变频器通讯】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_803928
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:30
分类:互联网
上传时间:2013-12-12
浏览量:307