回复:在S7-300程序中做一个类式电气的消声程序

冬日

  • 帖子

    3358
  • 精华

    56
  • 被关注

    45

论坛等级:奇侠

注册时间:2005-09-01

白金 白金 如何晋级?

发布于 2012-02-21 12:59:10

72楼

做了一个,简单测试了一下。如果有被过滤请下载压缩包。
按Zane如下要求做的:(报警数最大为8x1024,应该够用了)
1.不用考虑报警标志位的置位与复位,只考虑检测报警标志位,任意多条。
2.有新报警到,报警等亮,报警声响;报警不消除,灯不能灭;报警声可灭,新报警重新激发;
3.按复位按钮,报警位不消除,灯不能灭(也不允许闪断);如果报警位已消除,可消声。
4.按消声按钮仅能消声
5.程序的输入1.报警位数据块2.复位按钮3.消音按钮;输出1.灯报警 2.声报警(不允许其他的变量)


FUNCTION_BLOCK FB 6
TITLE =
VERSION : 0.1
VAR_INPUT
Alarm_DB : BLOCK_DB ; //Sorce DB of faults
Reset : BOOL ;
Silence : BOOL ;
END_VAR
VAR_OUTPUT
Alarm_Lamp : BOOL ;
Alarm_Buzzer : BOOL ;
END_VAR
VAR
Buffer : ARRAY [1 .. 1024 ] OF WORD ;
END_VAR
BEGIN
NETWORK
TITLE =

A #Reset;
R #Alarm_Lamp;
R #Alarm_Buzzer;
A #Silence;
R #Alarm_Buzzer;

L 0;
T LD 0;
L 48;
T LD 4;
OPN #Alarm_DB;
L DBLG;
next: T LW 8;
L 0;
L DBB [LD 0];
==I ;
JC _001;
S #Alarm_Lamp;
L DIB [LD 4];
XOW ;
L DBB [LD 0];
AW ;
L 0;
==I ;
JC _001;
S #Alarm_Buzzer;
_001: L DBB [LD 0];
T DIB [LD 4];
L LD 0;
+ L#8;
T LD 0;
L LD 4;
+ L#8;
T LD 4;
L LW 8;
LOOP next;
END_FUNCTION_BLOCK

点击此处查看附件
If anything can go wrong, it will.
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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