摘 要:本文针对食用菌培养基的发酵工艺,简要介绍风机变频控制系统的组成及其控制过程。分析了该控制系统的缺陷,自动化水平低、可靠性差。结合当今先进的自动化控制技术,择优选择最佳控制方法。提出了采用西门子公司S7-200 系列PLC 的自由口模式与易能公司EDS1000 变频器串行通讯的方法。应用多机通讯原理,PLC 为主机,变频器为从机,主从机点对点通讯。易能电气的EDS1000 系列变频调速器支持的串行通讯标准RS-485 协议,S7-200 PLC 自由通讯口方式的特色功能,使S7-200 PLC 和易能EDS1000 系列变频器通讯协议达成一致。本文以设置变频器的运行频率和读取变频器的参数为例,给出相应的PLC程序。
摘 要:本文针对食用菌培养基的发酵工艺,简要介绍风机变频控制系统的组成及其控制过程。分析了该控制系统的缺陷,自动化水平低、可靠性差。结合当今先进的自动化控制技术,择优选择最佳控制方法。提出了采用西门子公司S7-200 系列PLC 的自由口模式与易能公司EDS1000 变频器串行通讯的方法。应用多机通讯原理,PLC 为主机,变频器为从机,主从机点对点通讯。易能电气的EDS1000 系列变频调速器支持的串行通讯标准RS-485 协议,S7-200 PLC 自由通讯口方式的特色功能,使S7-200 PLC 和易能EDS1000 系列变频器通讯协议达成一致。本文以设置变频器的运行频率和读取变频器的参数为例,给出相应的PLC程序。
关键词:变频器;PLC;自由口通讯
0. 引言
我国东北地区是规模最大的食用菌生产加工出口基地之一。随着市场需求的不断增加,生产能力的逐渐扩大,生产设备的老化与滞后问题突显出来。培养基二次发酵是某企业一个重要的生产过程,是食用菌生产的基础工序。目前,该公司有6 个培养基二次发酵隧道。每个隧道配置8 个温度传感器,分别布置在发酵隧道的入风口、出风口和培养基中,用于检测发酵过程温度。每个隧道配置一台风机和风门,用于调节发酵隧道的温度,达到整个发酵过程的要求。现阶段,该公司采用人工的方法监控隧道温度,并用手动的方法调节风机转速和风门开度。自动化水平低、耗能高、人力资源的浪费等诸多问题急需解决。在传统的PLC 变频控制集成系统中,变频器的启动/停止与故障监控由PLC 通过开关量
实现端对端控制。变频器频率是由PLC 通过模拟量输出端口输出0~5(10)V 或4~20mA 信号控制,需要PLC 配置昂贵的模拟量输出端口模块。变频器出现故障时由PLC 读取变频器的故障报警触点,对具体故障原因并不清楚,需查询变频器报警信息后再阅读变频器说明书才知道。随着交流变频控制系统及通讯技术的发展,可以利用PLC 及变频器的串行通讯的方式来实现PLC 对变频器的控制。在工业自动化控制系统中,最为常见的是PLC 和变频器的组合应用,并且产生了多种多样的PLC 控制变频器的方法,其中采用RS-485 通讯方式实施控制的方案得到广泛的应用:因为它抗干扰能力强、传输速率高、传输距离远且造价低廉。本文就是针对该公司的自动化问题,应用PLC 与变频器的串行通讯,实现风机的变频调速和远程监控[1]。
[
本帖最后由 东方一笑 于 2009-11-4 19:43 编辑 ]
13楼
为了便于各位学习分析,现附上该程序的文本:
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注释
BEGIN
Network 1 // 初次扫描,进行初始化操作,置传送字节数。//
LD SM0.1
MOVB 18, VB199 //发送18个字节
Network 2 // 若SM0.7=1,允许自由口模式//
LD SM0.7
MOVB 9, SMB130 //
Network 3 // 若SM0.7=0,允许PPI/从站模式//
LDN SM0.7
R SM130.0, 1
Network 4 // 初始化从机运行频率给定命令//
LD SM0.1
MOVB 16#7E, VB200 //帧头
MOVW 16#3043, VW203 //
MOVD 16#30303031, VD205
MOVB 16#0D, VB217
Network 5 // 取从机地址到累加器AC1 中,并进行数据类型转换//
LD M0.0
MOVD &VB201, AC1
BTI *AC1, AC0
ITD AC0, AC0
INCD AC1
Network 6 // FOR 循环程序初始化//
LD M0.0
FOR VW218, 1, 11
Network 7 // 循环本体:进行“从机地址”到“运行数据”之间的累加和//
LD M0.0
BTI *AC1, AC2
ITD AC2, AC2
INCD AC1
+D AC2, AC0
Network 8 // FOR 循环结束//
NEXT
Network 9 // 将累加和的数据结果转换成ASCII 类型//
LD M0.0
DTI AC0, AC0
MOVW AC0, VW215
HTA VB215, VB213, 2
HTA VB216, VB215, 2
Network 10 // 当M0.1 被置1 时,进行一次累加和计算//
LD M0.1
EU
= M0.0
Network 11 // 若SM0.7&M0.0=1 时,从端口1 发送数据表一次,数据表首地址为&VB199//
LD SM0.7
A M0.0
EU
XMT VB199, 1
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注释
BEGIN
Network 1 // 初次扫描,进行接受初始化操作,数据去清0 //
LD SM0.1
MOVW +0, VW320
MOVD &VB320, VD316
MOVB 0, MB2
MOVB 18, MB3
Network 2 // 连接字符接收中断到中断程序0//
LD SM0.7
ATCH INT0, 25
ENI
Network 3 // 若MB2=MB3 时,则:计数器清0,恢复初始状态//
LDB= MB2, MB3
MOVB 0, MB2
MOVD &VB320, VD316
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 断开中断,将数据放入数据区//
LD SM0.0
DTCH 25
MOVB SMB2, *VD316
INCD VD316
INCB MB2
END_INTERRUPT_BLOCK
回复
14楼
在以上程序中,本人认为有不妥之处:
1、文章作者声称,程序可以接受变频反馈的指令,为此,在子程序SBR_0中,作了以下中断处理:
Network 2 //连接字符接收中断到中断程序0//
LD SM0.7
ATCH INT_0:INT1, 25
ENI
但不知是什么原因,整个程序中却没有看到接受指令“RCV”。
2、程序中辅助继电器M0.0没有置位线圈,根据程序的描述,估计M0.0是运行指令。此外,程序中也没有给VB209-VB213赋值。
3、程序中的自动累加写的繁琐,不知什么原因,作者先将VB(字节)转成VW(16位整数),再由VW转成VD(32位整数)。完成累加后,再不得不将VD转成VW。其实18个数据和,无论如何也不会超过32767,普通16位的加法完全可以实现,没有必要将VW转成VD(32位整数)。现根据作者提供的数据,即010C00010FA0027C,本人修改了累加程序,参见以下程序:
Network 1
LD SM0.1
MOVW 16#3031, VW201 //变频地址
MOVW 16#3043, VW203 //
MOVW 16#3030, VW205
MOVW 16#3031, VW207
MOVW 16#3046, VW209
MOVW 16#4130, VW211
MOVD &VB201, AC1 //寄存器指针
Network 2 // 取从机地址到累加器AC1 中
LDB< VB0, 12 //循环累加11次
BTI *AC1, VW50 //字节转整数
+I VW50, AC0 //循环加
MOVW AC0, VW215 //累加结果等同原程序的VW215
INCD AC1 //指针加1,指向下一个寄存器
INCB VB0 //VB0+1
回复
15楼
真是太谢谢你了
回复
16楼
谢谢楼主的无私奉献,学习了
回复
17楼
正适合象我这样的初学者使用,感谢楼主的分享!!!!!!!!!!!!!!
回复
18楼
谢谢了,正好学习
回复
19楼
谢谢楼主的无私奉献,学习中!!
回复
20楼
比较实用@ 下来看看@@
回复
21楼
EREREWREWREWRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
回复
22楼
我是学工艺的,也很想了解哈这方面的知识,谢谢啦
回复