感应淬火机床能量监控系统PLC 程序设计
2023-11-15陈志楚
雷 钧 陈志楚 罗 敏
(湖北汽车工业学院电气与信息工程学院,湖北 十堰 442002)
汽车零部件为了得到较高的硬度,多采用淬火工艺,感应加热在汽车零部件生成中应用广泛[1-3]。本文把采集到的感应淬火机床能量相关数据进行显示和存储,便于监控感应淬火过程和数据查询[4-6]。
1 监控方案设计
感应淬火机床能量监控系统数据采集如图1 所示,主要包括上位机、S7-1212PLCPLC、传感器和变送器等。感应加热电源把交流整流成直流后,直流电流和直流电压经对应的传感器和变送器变为0~10 V 电压进入PLC 的A/D。PLC 将实时采集的0~10 V 转换为数字量,并进行标度变换,然后计算加热时间、加热功率、加热能量等数据。上位机淬火机床监控系统对感应淬火过程进行监控,上位机和PLC 用Profinet 连接,通信采用西门子S7 协议。PLC 把计算结果用通信方式送入上位机淬火机床监控系统。上位机接收PLC 的数据,把数据进行处理后,进行显示和存储,上位机也发送相关数据给PLC。
图1 能量监控系统数据采集
2 感应加热数据计算
感应加热电源把输入交流经整流后变换为直流,直流电压为U,电流为I,淬火机床的直流功率P为
淬火机床的直流能量Q为
PLC 处理的是离散数据,计算不了式(2)中的时间积分,可以用求和代替积分,能量Q为
式中:T为采样周期;k为采样序号;P(i)为第i次的直流功率。
3 上位机与PLC 通信数据设计
上位机与PLC 的通信内容包括上位机读取PLC 的数据和上位机写入PLC 的数据,为此设计了PLC 的DB1 作为交换数据的数据块,见表1,这样方便上位机读写PLC 的多个单元,节省通信时间[2]。
表1 通信内容表
通道号数值为1~8;启动信号用到的位信号有:NO.0=0 为加热停止;NO.0=1 为加热启动;NO.1=1为开始记录;NO.1=0 为停止记录;NO.2=0 为控制模式;NO.2=1 为监视模式。报警信号用到的位信号为:NO.0 为欠电压;NO.1 为过电压;NO.2 为欠电流;NO.3 为过电流;NO.4 为欠时间;NO.5 为过时间;NO.6 为欠能量;NO.7 为过能量。报警信号按位操作0 是正常、1 是不正常。为了保证数据保留1 位小数的精度,电压、电流、功率和加热时间这些数据是PLC 经过计算得到的小数扩大10 倍变为整数,上位机除以10 进行处理。加热时间上限、下限、设定值是一位小数,上位机乘以10 后写入到PLC。
DB1.DBD66 为1 表示加热时间优先,即加热时间到设定值就停止加热;DB1.DBD66 为0 表示能量优先,即加热能量到设定值就停止加热。加热时间和加热能量只能2 选1。
当程序刚开始运行时,上位机写入PLC 的电源参数设定值。淬火设备在应对多品种淬火时,需要选择对应的工艺参数文件[3]。当通道号发生变化时,上位机从当前工艺文件中读取对应的工艺参数设定值,发指令把参数写入到PLC。上位机每隔固定时间就读取PLC 的相关数据。
4 PLC 控制程序设计
除了DB1 的数据外,本文在PLC 控制梯形图程序中所用变量含义、数据类型、存储器地址见表2。本文主要设计了主程序OB1 和1 ms 循环中断程序OB30,控制程序整体流程如图2 所示。在OB1 中启动/停止1 ms 循环中断程序,采集电流、电压等数据并进行标度变换,对电压、电流、加热时间和加热能量等数据进行报警处理。在OB30 中,计算加热时间、加热功率和加热能量。
表2 PLC 变量表
图2 控制程序整体流程图
4.1 循环中断程序
本课题之所以不用PLC 定时器而用循环中断计算加热时间,是因为PLC 采用循环扫描工作方式,定时时间不可能每次都一样,而循环中断的时间精度会高一些。取采样周期T为1 ms,即PLC 循环中断的间隔时时间是1 ms,在PLC 程序计算中,加热时间用的是累加时间,功率和能量计算更准确。
PLC 程序计算加热时间如图3 所示,每中断1 次,加热时间MD6 加1 ms,DB1.DW14 是给上位机读取的加热时间,单位为s,保留1 位小数,因此MD6 的数据除以1 000 得到以秒为单位的加热时间,然后扩大10 倍变为整数给DB1.DW14,见式(4)。同理,根据式(1),计算功率见式(5),计算加热功率程序如图4 所示,计算功率MD12 单位是W,上位机读取功率DB1.DW10 单位是0.1 kW。
图3 计算加热时间程序
图4 计算加热功率程序
根据式(3),每中断1 次,功率DB1.DW10乘以1 ms 得到瞬时能量MD32,单位是0.1 kW·ms。累积能量MD36=MD36+MD32,单位是0.1 kW·ms。上位机读取能量DB1.DW12 单位是kJ,因此需要MD36 除以1 000,如图5 所示。
图5 计算能量程序
4.2 标度变换程序
电流和电压传感器的信号0~10 V 输入到PLC的模拟量输入通道1 和2,对应的地址是IW64 和IW66,需要转换为对应的工程量,传感器转换量程表见表3,标度变换公式见式(6)。图4 和式(5)的MD170 和MD190 就是电压和电流的实际工程量。电压标度变换PLC 程序如图6 所示,用PLC 的转换操作指令NORM 和SCALE。DB1.DW4是给上位机读取的电压,单位是V,保留1 位小数,因此MD170 的数据扩大10 倍变为整数给DB1.DW4。
表3 传感器转换量程表
图6 电压标度变换程序
4.3 判断报警程序
判断报警程序就是判断电压、电流、加热时间、加热能量是否超出设定范围。PLC 程序用按位或1指令把报警信号的相应位置1 来报警;用按位与0指令把报警信号的相应位置0 来清除报警。
对于电压和电流的报警检测:需要加热启动后延时3 s 后检测电压和电流的下限报警,否则开始加热就会出现下限报警,因为整流和A/D 转换需要时间,那时电压和电流的检测值会低于下限。开始加热就可以检测电压和电流的上限报警。如图7 所示,M10.0 导通后3 s 后M11.0 导通。电压上下限报警程序如图8 所示,M10.0 导通后如果电压值DB1.DBW4 大于电压上限DB1.DBD18,则报警信息DB1.DBW16 的第1 位就置1 表示过电压,报警信息的其他位保持不变,因此用了按位或指令,DB1.DBW16 和0002H 相或;如果电压值小于电压上限,则报警信息的第1 位就置0 表示正常,报警信息的其他位保持不变,因此用了按位与指令,DB1.DBW16 和FFFDH 相与。M11.0 导通后如果电压值小于电压下限DB1.DBD22,则报警信息DB1.DBW16 的第0 位就置1 表示欠电压,DB1.DBW16 和0001H 相或;如果电压值大于电压下限,则报警信息的第0 位就置0 表示正常,DB1.DBW16和FFFEH 相与。
图8 电压上下限报警程序
由于加热时间和加热能量是累积值,因此需要加热停止时才能进行下限报警检测,开始加热就可以进行上限报警检测,并且加热时间和能量一旦有报警就不会消除。能量上下限报警程序如图9 所示,DB1.DBD66 为1,M10.0 导通后如果能量值DB1.DW12 大于能量上限DB1.DBD54,则报警信息DB1.DBW16 的第7 位就置1 表示过能量,DB1.DBW16 和0080H 相或;M10.0 关断后如果能量值小于能量下限,则报警信息的第6 位就置1 表示欠能量,DB1.DBW16 和0040H 相或。
图9 能量上下限报警程序
4.4 启动/停止循环中断程序
如图10 所示,用M10.0 从0 到1 的上升沿启动1 ms 循环中断,SET_CINT 指令的CYCLE 是循环中断的循环时间,此处设置为1 000 μs(1 ms),接着把MD6、MD32、MD36 和DB1.DBW16 清0。如图11 所示,用M10.0 从1 到0 的下降沿停止1 ms循环中断,CYCLE 设置为0。
图10 启动循环中断程序
图11 停止循环中断程序
5 运行结果
本文所设计的PLC 控制程序经现场运行,工作正常,计算准确,上位机与PLC 的DB1 数据交互正确。用西门子PLC 编程软件TIA Portal 监控程序运行情况,DB1 监控数据如图12 所示,电压500.8 V,电流200.6 A,功率100.4 kW,加热时间12.6 s,能量1 267 kJ,符合实际计算值。电压和电流上下限设定在正常值的±10%范围内[7],电压上限550 V,下限450 V;电流上限220 A,下限180 A。控制方式为加热时间,设定100 s,能量上限10 500 kJ,下限9 500 kJ。从监控数据可以看出无报警,因此报警信息DB1.DBW16 为0。如图13 所示,电压586.0 V,电流234.8 A,超过了各自的上限,因此DB1.DBW16 二进制为0000000000001010B,10 进制为10,为过电压、过电流报警。
图12 DB1 监控数据1