需求分析
设计一个电机控制子程序,包含以下功能:
1.可以选择就地或远程控制模式。
2.远程模式可以实现手动和自动启停电机。
3.可以记录电机运行时间。
4.任何模式下电机可以急停。
5.电机启动或停止超时报警。
功能设计
将以上需求划分为如下功能:
1.启停功能:电机的启动和停止,包括手动和自动模式。
2.计时功能:监控电机启停过程是否超时和记录电机运行时间。
3.报警功能:电机启动或停止超时报警,包括两种情况:启动信号已给出,但是接触器没有吸合;停止信号已给出,但是接触器没有断开。设计报警状态字:1-启停超时,2-过载或短路;3-急停。
开发环境
硬件:SR20,6ES7 288-1SR20-0AA0。
软件:STEP 7-Micro/WIN SMART,V2.5。
程序设计
局部变量定义:
技巧:局部变量表有输入IN和输出OUT(包括IN_OUT)的限制(小于等于16),即形参变量个数最多是16个。以上采用了一个控制字节来代替8个位,即意味着节省了7个输入输出变量的个数,节省出来的变量可以用来写其它的功能。
编写代码(LAD):
技巧:在子程序中不能使用普通定时器,一般用以下两种方法实现:
1.使用脉冲信号,将计时转换为计数
2.使用优化定时器指令BGN_ITIME和CAL_TIME
全局变量和IO定义:
子程序调用:
程序段2用来复位手动启动、手动停止和故障复位三个变量,模拟自复位按钮。
程序测试
在MAIN中调用以上子程序并分配实参。
通过变量表给控制字节赋值(手动启动、手动停止和复位),电机反馈信号来自于接触器和热继,通过强制进行赋值。