回复:还记得ZANE版主的报警处理FB块吗?

nubb

  • 帖子

    34
  • 精华

    1
  • 被关注

    2

论坛等级:游民

注册时间:2009-07-06

普通 普通 如何晋级?

发布于 2013-07-04 16:20:14

30楼

本人编写的报警程序(FC调用),给大家参考以下,使用间接寻址和循环语句,适合批量处理同类设备报警,设备有故障时报警灯(红或黄)闪烁,蜂鸣器报警,按下消音报警灯继续闪烁,报警声消失,当又发生其它故障时,蜂鸣器再次响起。
如同前面提到过的报警必要集中到一个DB块,这段程序报警源来自于存储电机数据的多重背景DB块,每个电机数据占用字节长为70(下面Loop语句DI1的步长),电机状态集中到电机数据里的一个字即状态字,状态字的高字节为报警信息(本程序用了4个位),低字节为运行状态。
带引号的为符号地址(I ,Q,M或DB),非临时变量!

程序段1 消音按钮
O “Alarm ReleaseBtn" //来自门板或HMI消音按钮
O(
A "Setc1_MotorAlarmBuzzer" //30s后自动消音
L S5T#30S
SD T 900
NOP 0
NOP 0
NOP 0
A T 900
)
= #MotorAlarmReleaseButton //临时变量

L 100
T #MotorNum //临时变量


程序段2 报警处理
OPN DI 1 //报警源-电机块多重背景DB1
LAR1 P#DIX 21.0 //背景DB里报警状态起始地址
OPN "DB_Motor" //报警状态保存DB, 一台电机占一个字
LAR2 P#DBX 0.0 //报警状态临时保存DB起始地址
L #MotorNum //电机数量,工艺段电机数量即要报警的设备数量
lop1: T #LoopCounter1 //循环
//以下是报警循环,=1 报警
//隔离开关报警
A DIX [AR1,P#0.0]
FP DBX [AR2,P#0.0]
S DBX [AR2,P#1.0]

ON DIX [AR1,P#0.0]
O #MotorAlarmReleaseButton //报警复位按钮
R DBX [AR2,P#1.0]

//变频器或馈电器故障
A DIX [AR1,P#0.1]
FP DBX [AR2,P#0.1]
S DBX [AR2,P#1.1]

ON DIX [AR1,P#0.1]
O #MotorAlarmReleaseButton //报警复位按钮
R DBX [AR2,P#1.1]

//变频器保护开关过载
A DIX [AR1,P#0.2]
FP DBX [AR2,P#0.2]
S DBX [AR2,P#1.2]

ON DIX [AR1,P#0.2]
O #MotorAlarmReleaseButton //报警复位按钮
R DBX [AR2,P#1.2]

//变频器保护开关短路
A DIX [AR1,P#0.3]
FP DBX [AR2,P#0.3]
S DBX [AR2,P#1.3]

ON DIX [AR1,P#0.3]
O #MotorAlarmReleaseButton //报警复位按钮
R DBX [AR2,P#1.3]

//总报警
O DIX [AR1,P#0.0]
O DIX [AR1,P#0.1]
O DIX [AR1,P#0.2]
O DIX [AR1,P#0.3]
S "Setc1_MotorTotalAlarm" //总报警

//本地开关报警 指示灯
A DBX [AR2,P#0.0]
S "Sect1_QS_Alarm_Yellow"

//变频器、馈电器故障及保护开关跳闸报警 指示灯
O DBX [AR2,P#0.1]
O DBX [AR2,P#0.2]
O DBX [AR2,P#0.3]
S "Setc1_FC_QB_Alarm_Red"
//蜂鸣器
O DBX [AR2,P#1.0]
O DBX [AR2,P#1.1]
O DBX [AR2,P#1.2]
O DBX [AR2,P#1.3]
S "Setc1_MotorAlarmBuzzer" //报警蜂鸣器

+AR1 P#70.0 //在电机单元块(使用多重背景DB)里每个电机数据占用70个字节
+AR2 P#2.0 //报警字临时存储DB
L #LoopCounter1
LOOP lop1

程序段3 报警指示

//本地开关指示灯报警--黄灯
A "Sect1_QS_Alarm_Yellow"
A "FreePulse_0.8s"
= "AlarmHI_YH" //PLC模板输出点

//变频器、馈电器指示灯报警--复位
A "Sect1_QS_Alarm_Yellow"
R "Sect1_QS_Alarm_Yellow"

//变频器、馈电器指示灯报警--红灯
A "Setc1_FC_QB_Alarm_Red"
AN "FreePulse_0.8s"
= _AlarmHI_RH" //PLC模板输出点

//变频器、馈电器指示灯报警--复位
A "Setc1_FC_QB_Alarm_Red"
R "Setc1_FC_QB_Alarm_Red"

//蜂鸣器
A "Setc1_MotorAlarmBuzzer"
A "FreePulse_0.8s"
= "AlarmBuzzer" //PLC模板输出点

//电机报警蜂鸣器消音
O #MotorAlarmReleaseButton
ON "Setc1_MotorTotalAlarm"
R "Setc1_MotorAlarmBuzzer"

//电机报警蜂鸣器报警--复位
A "Setc1_MotorTotalAlarm"
R "Setc1_MotorTotalAlarm"
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。