回复:刺激程序块

已锁定

askab

  • 帖子

    405
  • 精华

    5
  • 被关注

    34

论坛等级:侠圣

注册时间:2005-07-24

黄金 黄金 如何晋级?

发布于 2021-07-26 16:15:17

2楼

就想通过程序给速度  其实你的意思就是通过程序产生一个速度斜坡发生器,一定的斜率进行升降 速度。

通过程序 + 传动装置进行 控制速度。

估计 目的,正常加减一个速度斜率  快停 一个速度斜率  急停 一个速度斜率 ,相当一个时间组的选择,其实这个可以在starter里实现的。用DCC 就可以,

FUNCTION_BLOCK FB1

VAR_INPUT

ramp_enable:BOOL;      // 斜坡发生器 使能 = TRUE 表示允许  斜坡输出。

reset_zero_out:BOOL;    // 输出强制清零  = TRUE  输出强制为0.0

ramp_before_set:REAL;  // 斜坡前的 设定值  

ramp_add_ratio:REAL;    //加速斜坡 系数

ramp_sub_ratio:REAL;    // 减速斜坡系数

change_ratio:REAL;       // 系统斜坡变化率  值越大 斜坡越陡

death1:REAL;        //  正死区 区间值

death2:REAL;       //    负死区 区间值

END_VAR


VAR_IN_OUT

adjust_ramp_act:REAL;    //斜坡调整过程值

END_VAR


VAR_OUTPUT

ramp_after_out:int;    // 目前斜坡输出值  注意,采用了四舍五入为整型 如果要浮点型,可以更改

ramp_already:BOOL;  //斜坡输出调整到设定值 范围内  

END_VAR


VAR

ramp_add:REAL;

ramp_sub:REAL;

no_adjust:BOOL;

error :REAL;

END_VAR

ramp_add:=ramp_add_ratio * change_ratio;

ramp_sub:=ramp_sub_ratio * change_ratio;

IF NOT reset_zero_out THEN

    IF ramp_enable THEN

                error:=  ramp_before_set - adjust_ramp_act;

                IF ( error >death1) AND NOT no_adjust  THEN

                adjust_ramp_act:=adjust_ramp_act + ramp_add;

                ramp_already:=FALSE;

                ELSIF (error < death2)   AND NOT no_adjust THEN

                 adjust_ramp_act:= adjust_ramp_act - ramp_sub  ;

                 ramp_already:=FALSE;

                 END_IF;

                IF   ( death2 <=error)  AND (error <= death1) THEN

                 adjust_ramp_act:=ramp_before_set;

                 ramp_already:=true;

                 no_adjust:=true;

                ELSE

                 ramp_already:=false;

                 no_adjust:=false;   

                END_IF;

    ELSE

              adjust_ramp_act:=ramp_before_set;

              ramp_already:=false;

              END_IF;

ELSE

    adjust_ramp_act:=0.0;

    ramp_already:=false;

END_IF;

    ramp_after_out:=REAL_TO_INT (adjust_ramp_act);

 

END_FUNCTION_BLOCK

放在系统中断组织块里调用 。

大家同行,you ok ? me !
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54759条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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