回复:【分享】编写一个仿真变频器控制块,方便程序测试

牧歌2050

  • 帖子

    24
  • 精华

    1
  • 被关注

    2

论坛等级:游士

注册时间:2014-03-16

普通 普通 如何晋级?

发布于 2015-08-10 23:19:36

1楼

FUNCTION_BLOCK FB 509

TITLE =符号名:SimInverter_FwdRev

//符号说明:模拟变频器加减速输出;

////20150313,模拟变频器加减速输出

//加减速时间:从0<->最大速所需时间;

//最大速度、加减速时间只有变频器运行信号失效下才能修改;

//启动信号发出后,延时RunDelayT(最小50ms保证一个周期加/减速度计算)时间后,运行信

//号有效;

//无启动信号后,输出减速到0后,运行信号失效;运行信号失效后,程序提前退出;

//Arrive:输出速度到设定速度一定(ArriveRange)范围内;

//deadPos/deadNeg:防止输出在设定值附近震荡,大于增量一半(一半+0.1)自动确定

////20150316

//Arrive范围撤销,输出=输入时就有效;

//加入无升降时,用设定赋值给输入,反转震荡;

//接口从real转换成int,给客户用int数据接口,计算用real方便理解单位换算,保持精度

////20150429-增加新的版本v2

//增加正反转,换向必须停下,不换向情况下,如果还没停下来再次启动继续运行;

//换向启动有启动延时,运行中反向指令无效,当前运行停止后延时启动运行反方向;

//正/反转运行中(含等待和减速中)信号放到接口。

//设定参数增加了输入限值

////20150508,增加实际采用的加减速时间,默认=10,修改加减速限值大于等于1;

//加减速中标志:pos(加速DIX42.0),neg(减速DIX42.1);

//KNOW_HOW_PROTECT

AUTHOR : WGQ

NAME : SimInv2

VERSION : 8.2



VAR_INPUT

  RstFB : BOOL ; //急停,初始化复位FB

  Fwd : BOOL ; //正转指令

  Rev : BOOL ; //反转指令

  SetSpd : INT  := 50; //设定速度(单位mm/s,默认50,限值0~maxSpd)

  MaxSpd : INT  := 600; //最大输出速度(单位mm/s,默认600,限值大于等于10)

  AccT : INT  := 30; //加速时间(单位0.1s,默认30,限值大于等于1)

  DecT : INT  := 30; //减速时间(单位0.1s,默认30,限值大于等于1)

  RunDlyT : INT  := 100; //启动延时时间(单位ms,默认100,限值大于等于1)

  CycT : INT ; //程序执行周期ms

END_VAR

VAR_OUTPUT

  Spd : INT ; //速度输出(0~MaxSpd)

  SpdHex : INT ; //速度输出(0~27648)

  Run : BOOL ; //状态指示(1=运行,0=停止),停下后复位功能块,保证运行重复性。

  Arrive : BOOL ; //输出=设定速度

  Fwding : BOOL ; //正转过程中标记……(含等待和减速过程)

  Reving : BOOL ; //反转过程中标记……(含等待和减速过程)

END_VAR

VAR

  tmpDelayAct : INT ; //运行延时计时值

  accSpd : REAL ; //运行前运算得:加速度量(单位mm/s)

  decSpd : REAL ; //运行前运算得:减速度量(单位mm/s)

  dltSpd : REAL ; //运算得:速度调整量(正负),(单位mm/s)

  deadPos : REAL ; //运算得:正向调整的死区

  deadNeg : REAL ; //运算得:负向调整的死区

  pos : BOOL ; //加速

  neg : BOOL ; //减速

  strOK : BOOL ; //启动延时到,启动指令有效;

  Str : BOOL ; //电机启动指令控制(1=启动,0=停止)

  fwdok : BOOL ; //正转指令有效

  revok : BOOL ; //反转指令有效

  tbFn1 : BOOL ;

  tbFn2 : BOOL ;

  SetSpd_real : REAL ; //设定速度(单位mm/s,默认50.0)

  MaxSpd_real : REAL  := 6.000000e+002; //最大输出速度(单位mm/s,默认600.0)

  AccT_real : REAL  := 1.000000e+000; //加速时间(单位1s,默认1.0)

  DecT_real : REAL  := 1.000000e+000; //减速时间(单位1s,默认1.0)

  Spd_real : REAL ; //速度输出(mm/s单位同最大一样)

  accTact : INT  := 10; //采用的加速时间(单位0.1s,默认10)

  decTact : INT := 10; //采用的减速时间(单位0.1s,默认10)

END_VAR

VAR_TEMP

  CycT_real : REAL ;

END_VAR


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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