回复:用最简单方法完成这道编程题

伊默

西门子1847工业学习平台

  • 帖子

    4261
  • 精华

    118
  • 被关注

    220

论坛等级:至圣

注册时间:2003-10-24

白金 白金 如何晋级?

发布于 2006-01-20 19:34:37

0楼

用FB太可惜了....用带多重背景的FB也不太实用. 个人觉得不用建一个FC和一个共享DB,然后在OB35里调用(100MS中断,相当于一个时基为100MS的定时器,一般这个精度就够用了):

1.建立一个共享DB,保证里面至少有8个以上的BYTE空间(假设为DB10.DBB0-DB10.DBB7),其中DB10.DBB0的初始值为30,代表30*100MS=3S.
2.建立一个FC如下:
FUNCTION FC10:VOID
VAR_INPUT
ValNo:BOOL //阀的标号
In1:BOOL //到位信号A1
Out1:BOOL //线圈输出1
In2:BOOL //到位信号2
OUT2:BOOL //线圈输出2
RST:BOOL //复位报警信号
END_VAR
VAR_OUTPUT
Alarm:BOOL //报警输出信号
END_VAR

BEGIN
A Out1;
AN In1;
O;
A Out2;
AN In2;
JCN _001;
L DB10.DBB[ValNo];
INC;
JU _002;
_001: L 0; //清零
_002: T DB10.DBB[ValNo];

L DB10.DBB[ValNo];
L DB10.DBB0 //初始值30=3S;
==I;
S Alarm;

A RST;
R Alarm;

3:在OB35中调用FC10
CALL FC10, 1,I0.0,Q0.0,I0.1,Q0.1,M0.1 //1#阀
.......
CALL FC10, 7,I1.4,Q1.4,I1.5,Q1.5,M0.7 //7#阀







I can do it
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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