在工业自动化领域,西门子PLC系统因其稳定性和灵活性广受青睐。最近完成的一个PVC送料配料系统项目,采用了S7-314C PLC配合WinCC上位机软件,实现了从物料配比到输送的完整自动化控制。这个系统不仅需要精确控制多种物料的配比,还要实时监测压力、重量等参数,并通过PROFIBUS网络与多台设备进行数据交互。
系统硬件配置相当典型:主控制器采用S7-314C CPU,搭配数字量和模拟量I/O模块;人机界面选用KTP1200触摸屏;变频器采用一拖六配置,即一台变频器控制六台电机。软件方面,使用博途V15.1进行PLC编程,WinCC用于上位机监控画面开发,同时配备了完整的电气图纸文档。
这个系统的核心价值在于将原本需要人工操作的配料过程完全自动化,不仅提高了生产效率,更重要的是保证了配料精度的一致性。对于PVC生产这类对原料比例要求严格的工艺,自动化配料系统能有效减少人为误差,提高产品质量稳定性。
选择S7-314C作为主控制器主要基于以下几点考虑:
实际配置中,我们增加了SM321数字量输入模块(16点)和SM322数字量输出模块(16点),用于处理各类开关量信号,如阀门状态、电机运行反馈等。
KTP1200基本型触摸屏虽然不属于高端产品,但对于本项目而言完全够用。它的主要特点包括:
在画面设计上,我们遵循了"重要信息突出、操作简单直观"的原则。主画面显示系统整体状态,包括各物料仓料位、当前配方、运行状态等;二级画面提供参数设置和手动操作功能;报警画面集中显示各类异常信息。
变频器采用一拖六配置(一台变频器控制六台电机)主要出于成本考虑,但需要注意几个关键点:
在实际接线时,变频器输出先接到一个公共母线排,再从母线排分别接到各电机的接触器。PLC通过数字量输出控制各接触器的吸合,同时通过模拟量输出给定变频器频率。
物料分配是配料系统的核心功能,其程序设计需要考虑多种工况:
以物料A的分配为例,完整程序逻辑应包括以下部分:
stl复制NETWORK 1: 物料A阀门基本控制
LD "自动模式" // 系统处于自动模式
A "物料A仓料位OK" // 物料A仓有料
A "配料启动信号" // 总启动信号
AN "急停信号" // 无急停
= "物料A阀门开启允许" // 输出中间变量
NETWORK 2: 阀门动作控制
LD "物料A阀门开启允许"
S "物料A阀门开启命令" // 置位开启命令
LD "物料A配料完成信号"
R "物料A阀门开启命令" // 复位开启命令
NETWORK 3: 阀门状态监测
LD "物料A阀门开启命令"
L S5T#2S // 2秒延时
SD "阀门开启超时定时器"
LD "物料A阀门开启命令"
AN "物料A阀门开到位信号"
A "阀门开启超时定时器"
= "物料A阀门故障" // 阀门未在规定时间内打开报故障
这段代码比初始示例完善了许多,增加了模式判断、急停处理、阀门状态监测等功能。实际项目中,还需要考虑阀门开关的互锁、物料切换时的延时等细节。
模拟量处理是配料系统的另一个关键点,主要包括压力监测和称重信号处理。在工程实践中,需要注意以下几个要点:
改进后的压力监测程序如下:
stl复制NETWORK 1: 模拟量输入读取与滤波
L PIW 256 // 读取原始压力信号
ITD // 整型转双整型
DTR // 双整型转实数
T "压力原始值" // 临时存储
L "压力原始值"
L "上次压力值"
L 0.3 // 滤波系数(0-1之间)
*R
+R
T "压力滤波值" // 一阶滞后滤波
NETWORK 2: 量程转换
L "压力滤波值"
L 27648.0 // 模拟量满量程对应值
/R
L 10.0 // 传感器量程上限(10bar)
*R
T "实际压力值" // 单位:bar
NETWORK 3: 断线检测
L "压力原始值"
L 0.0
<=R
= "压力传感器断线" // 断线时输入值通常接近0
NETWORK 4: 压力高报警
L "实际压力值"
L 8.5 // 报警阈值(bar)
>R
= "压力高报警"
称重信号的处理原理类似,但需要注意称重传感器通常需要去皮重、计算净重等额外步骤。此外,对于重要的称重信号,建议采用双重化处理,即同时使用PLC的模拟量输入和称重仪表通过通讯传输重量值,两者互相校验提高可靠性。
PROFIBUS-DP网络配置是项目实施的重点之一。在博途软件中,配置步骤如下:
对于变频器这类标准从站,博途通常提供现成的GSD文件,导入后可直接使用。而对于非标设备,可能需要手动配置I/O映射关系。
PROFIBUS通讯程序不仅要实现正常的数据交换,还需要完善的故障检测机制。下面是一个增强版的通讯程序示例:
stl复制NETWORK 1: 通讯数据发送
L "通讯使能信号"
JCNB END // 未使能则跳过
CALL "DP_SEND_RECV" // 调用通讯功能块
REQ :=TRUE // 持续请求
LADDR :=W#16#100 // 硬件地址
SEND :=P#DB1.DBX0.0 BYTE 20 // 发送区
SEND_LEN:=20
RECVD :=P#DB2.DBX0.0 BYTE 20 // 接收区
NDR :=#Temp_NDR
ERROR :=#Temp_ERROR
STATUS :=#Temp_STATUS
NETWORK 2: 通讯状态处理
L #Temp_STATUS
T "通讯状态字" // 存储状态供监控
L #Temp_ERROR
= "通讯故障" // 故障信号
L #Temp_NDR
JCNB END // 无新数据则跳过
// 数据有效性检查
L DB2.DBW0 // 假设第一个字为校验码
L W#16#55AA // 预期校验码
<>I
= "数据校验错误" // 校验失败
END: NOP 0
在实际项目中,我们还增加了以下处理:
配方管理是配料系统的核心功能之一。一个完善的配方管理系统应该考虑:
在DB块中,我们采用以下结构存储配方数据:
code复制DB3: 配方数据块
+0 配方总数(INT)
+2 当前配方号(INT)
+4 配方参数数组(STRUCT[50])
每个配方结构体包含:
+0 配方名称(STRING[16])
+18 物料A比例(REAL)
+22 物料B比例(REAL)
+26 物料C比例(REAL)
+30 混合时间(REAL)
+34 混合速度(REAL)
+38 备注(STRING[32])
这种结构允许存储最多50个配方,每个配方包含多种参数。在HMI上,可以方便地浏览、选择和修改配方。
配方管理通常需要实现以下功能:
在PLC程序中,配方选择功能的实现如下:
stl复制NETWORK 1: 配方选择
L "HMI_配方选择请求" // HMI发出的选择请求
JCNB END
L "HMI_目标配方号" // HMI指定的配方号
L 0
<I
L "HMI_目标配方号"
L DB3.DBW0 // 配方总数
>=I
OR
JC ERR // 配方号无效则跳转
L "HMI_目标配方号"
T DB3.DBW2 // 更新当前配方号
ERR: NOP 0
END: NOP 0
对于配方的上传下载,可以使用S7通讯功能或直接通过HMI的变量连接实现。在WinCC中,可以创建配方视图控件,方便操作人员管理配方。
变频器的正确设置对系统稳定运行至关重要。本项目中使用的是西门子G120变频器,主要参数设置如下:
这些参数需要根据实际使用的电机特性进行调整。特别是额定电流和功率必须与电机铭牌一致,否则可能导致电机过热或变频器保护动作。
在PLC程序中,变频器控制逻辑包括以下几个部分:
典型的变频器控制程序如下:
stl复制NETWORK 1: 启动控制
LD "系统就绪"
A "启动命令"
AN "急停"
AN "变频器故障"
= "变频器启动命令"
NETWORK 2: 频率给定
L "设定频率"
L 50.0 // 最大频率(Hz)
>R
JCNB NO_LIMIT
L 50.0
NO_LIMIT: T "输出频率" // 限幅处理
NETWORK 3: 状态监测
CALL "DPRD_DAT" // 读取变频器数据
LADDR :=W#16#200 // 变频器地址
RET_VAL :=#Temp_RET
RECORD :=P#DB4.DBX0.0 BYTE 10 // 数据接收区
L DB4.DBW2 // 变频器状态字
T "变频器状态"
L DB4.DBD4 // 实际频率
T "实际频率值"
NETWORK 4: 故障处理
L "变频器状态"
L W#16#8F // 故障掩码
AW
L 0
<>I
= "变频器故障" // 检测到故障
对于一拖六配置,还需要增加电机选择逻辑,确保同一时间只有一台电机连接到变频器输出。切换电机时,应先停止变频器,切换接触器,再重新启动变频器。
KTP1200触摸屏程序采用多画面结构,主要包含以下画面:
主画面:显示系统整体状态
配方管理画面:
手动操作画面:
报警画面:
参数设置画面:
在WinCC中开发触摸屏程序时,有几个实用技巧可以提高开发效率和用户体验:
画面模板:创建包含公共元素(如标题栏、导航按钮)的模板画面,其他画面继承该模板,保证界面一致性
智能控件:
报警管理:
数据记录:
用户管理:
一个典型的阀门状态显示元素可以这样实现:
系统调试应分阶段进行,确保每个环节正常工作后再进入下一阶段:
硬件检查:
通讯测试:
手动模式测试:
自动模式测试:
性能优化:
在实际运行中,可能会遇到以下典型问题:
PROFIBUS通讯中断:
模拟量信号波动:
变频器过流故障:
物料计量不准:
HMI响应缓慢:
对于复杂的故障,建议采用以下排查流程:
在项目实际调试中,我们发现称重信号受振动影响较大,最终通过以下措施解决了问题: