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

伊默

西门子1847工业学习平台

  • 帖子

    4261
  • 精华

    118
  • 被关注

    220

论坛等级:至圣

注册时间:2003-10-24

白金 白金 如何晋级?

发布于 2012-02-20 21:16:54

58楼

俺来佬…… 嘿嘿。
虽然一直喜欢西门子的东东,但是真正用的却非常非常少。 前几年一直用S7-200,后来种种原因改用别的了。
毕业到现在,加起来也就用了4次S7-300。 不过个人非常喜欢300的编程理念,甚至有的时候实际一些功能有些小别扭(比如上升沿和下降沿,),但是感觉还是痛并快乐着……

回到正题,在我做的项目里,报警是必不可少的。 而且拓展开来,应该分为:
报警:仅仅是警告,以声光提示给操作员,但是还可以继续工作。
故障:这个产生了,就必须停机,同时声光报警给操作员。

所以我的习惯是针对报警/故障建一个双字(如果报数数量超过31个,那么可以建立多个)比如
ALM_C : STRUCT //当前故障记录,每个位可以记录一个故障状态,最多31个(32-符号位)
b00: BOOL ;
b01: BOOL ;
b02: BOOL ;
b03: BOOL ;
b04: BOOL ;
b05: BOOL ;
b06: BOOL ;
SIG: BOOL ; //特别注意这个是符号位
b10: BOOL ;
b11: BOOL ;
b12: BOOL ;
b13: BOOL ;
b14: BOOL ;
b15: BOOL ;
b16: BOOL ;
b17: BOOL ;
...........
b37: BOOL ;
END_STRUCT;
ALM_L : DWORDL //故障记录暂存,每个位可以记录一个故障状态,最多31个


L ALM_L; //上次报警值
L ALM_C; //当前报警值
<D; //说明有新报警发生了
= L20.0; //输出一个标志位
T ALM_L; //暂存报警值,为下次使用做准备

A L20.0;
O Q0.0; //蜂鸣器
AN I0.0; //复位按钮
= Q0.0;

因为<D这个比较指令在STL语句里是有符号的双整数比较,所以要符号位不能记录报警信息,即一个双字只能记录31个报警信息……

开始编辑一下还不行,只好删了重发,汗……
我现在用1200,用TIAPortal使用UDINT类型,就不用管符号位,这样一个双字就可以记录32个报警了……

NND,怎么小于D这个还给屏蔽了,发不了啊?杯具
I can do it
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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