回复:风机群控:又一道有意思的编程题,感兴趣的同学不妨尝试做一做

我心依旧555

  • 帖子

    769
  • 精华

    9
  • 被关注

    34

论坛等级:奇侠

注册时间:2009-09-12

普通 普通 如何晋级?

发布于 2013-06-08 16:05:41

9楼

动动更健康,呵呵,这样看能否满足要求:
先把相应电机的状态写到电机状态字中,然后把译码出来的相应的启动信号(常开)并联在原来的启动上,把相应的停止信号(常闭)串联在原来的停止上。
输出的都是上升沿信号。

FUNCTION_BLOCK "SC32"
TITLE =
VERSION : 0.1
AUTHOR : 'L.Q.H'

VAR_INPUT
dwMotorSt : DWORD ; //电机启动状态
dwMotorPCD : DWORD ; //电机控制字
bStart : BOOL ; //群起信号
bStop : BOOL ; //群停信号
bRest : BOOL ; //复位信号,未用设为1
END_VAR
VAR_OUTPUT
dwMotrtStar : DWORD ; //相应电机启动信号
dwMotrtStop : DWORD ; //相应电机停止信号
END_VAR
VAR
bStartMark : BOOL ;
bSopMark : BOOL ;
bFP1 : BOOL ;
bFP2 : BOOL ;
bFP3 : BOOL ;
bEnab : BOOL ;
bTime : BOOL ;
iActNo : INT ;
dwActST : DWORD ;
T0N1 : "TON";
END_VAR
VAR_TEMP
bTemp1 : BOOL ;
dwtemp1 : DWORD ;
dwtemp2 : DWORD ;
iNum : INT ;
END_VAR
BEGIN
NETWORK
TITLE =

//初始化
SET ;
SAVE ;
L L#0;
T #dwMotrtStar;
T #dwMotrtStop;
T #dwtemp1;
T #dwtemp2;
LAR1 P##dwtemp1;
L 4; //群起停设备数,最大32个
T #iNum;
//停止标志
A #bStop;
FP #bFP2;
X #bSopMark;
AN #bStart;
A #bRest;
= #bSopMark;
//启动标志
A #bStart;
FP #bFP3;
X #bStartMark;
AN #bStop;
A #bRest;
= #bStartMark;
A #bStartMark;
O #bSopMark;
FP #bFP1;
JCN s001;
//群启及群停时的初始化
CLR ;
= #bEnab;
SET ;
= #bTime;
L 0;
T #iActNo;
//检查的设备
L #dwMotorSt;
L #dwMotorPCD;
OD ;
T #dwActST;
A #bSopMark;
AN #bStartMark;
JCN s001; //当群停时把信号取反
L #dwMotorSt;
INVD ;
T #dwActST;
s001: A #bStartMark;
O #bSopMark;
A #bTime;
JCN s002;

s003: L #dwActST;
SRD 1;
JZ s004;
T #dwActST;
L #iActNo;
+ 1;
T #iActNo; //设备计数
L #iNum;
>I ;
R #bStartMark;
R #bSopMark;
JC s002;
JU s003;
s004: T #dwActST;
SET ;
= #bEnab;
L #iActNo;
+ 1;
T #iActNo; //设备计数
L #iNum;
>I ;
R #bStartMark;
R #bSopMark;
s002: A #bStartMark;
O #bSopMark;
A #bEnab;
AN #bTime;
= #bTemp1;
CALL #T0N1 (
IN := #bTemp1,
PT := T#2S,
Q := #bTime);

L #iActNo;
+ -1;
+AR1 ;
A #bTime;
A #bStartMark;
AN #bSopMark;
JCN s010;
= [AR1,P#0.0];
s010: A #bTime;
AN #bStartMark;
A #bSopMark;
JCN s011;
= [AR1,P#4.0];
s011: A #bTime;
= #bTime;
L #dwtemp1;
CAD ;
T #dwMotrtStar;
L #dwtemp2;
CAD ;
T #dwMotrtStop;
JCN end;
R #bEnab;
end: BEU ;


END_FUNCTION_BLOCK

已启动的设备或屏蔽的设备不会被重复启动或停止。
一切皆有可能
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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