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

牧歌2050

  • 帖子

    24
  • 精华

    1
  • 被关注

    2

论坛等级:游士

注册时间:2014-03-16

普通 普通 如何晋级?

发布于 2015-08-11 20:37:29

7楼

//发布一个例子,直接拷贝存.awl文件,导入子程序即可自己查看;注意指针接入接出

//--实现VB1000~VB1029作为程序stat变量区,也可以外部直接修改变量;增加间接接口;

SUBROUTINE_BLOCK FsAdj_v2:SBR79

TITLE=//========================

VAR_INPUT

SV:INT; // 调节设定值

PV:INT; // 调节过程值

Adjust:BOOL; // 调整按钮

CntDoorFB:BOOL; // 计数门开反馈

OpnMan:BOOL; // 手动开

ClsMan:BOOL; // 手动合

OpnLmtSW:BOOL; // 开限位

ClsLmtSW:BOOL; // 合限位

OpnLmtV:BOOL; // 开限值

ClsLmtV:BOOL; // 合限值

Pls100ms:BOOL;

Estop:BOOL; // 急停或故障停止

pointer:DINT; // 变量指针首地址   //****注意指针入口,外部接例如&VB1000****//

END_VAR

VAR

OpnOut:BOOL; // p_out_stat_@0.0开动作

ClsOut:BOOL; // p_out_stat_@0.1合动作

SpdL:BOOL; // p_out_stat_@0.2速度L

SpdH:BOOL; // p_out_stat_@0.3速度H

Run:BOOL; // p_out_stat_@0.4运行标记

Arrive:BOOL; // p_out_stat_@0.5自动调整到位

AlmSafeTime:BOOL; // p_out_stat_@0.6保安时间报警

AlmCntDoor:BOOL; // p_out_stat_@0.7计数门未开报警

CntDoorCtrl:BOOL; // p_out_stat_@1.0计数门开控制

opnCtrl:BOOL; // p_out_stat_@1.1开控制

clsCtrl:BOOL; // p_out_stat_@1.2合控制

adjOk:BOOL; // p_out_stat_@1.3预留

pOut_rev_B4:BOOL; // p_out_stat_1.4预留

pOut_rev_B5:BOOL; // p_out_stat_1.5预留

pOut_rev_B6:BOOL; // p_out_stat1.6预留

pOut_rev_B7:BOOL; // p_out_stat_1.7预留

opnManOk:BOOL; // p_tmp_Stat_2.0手动开指令有效

clsManOk:BOOL; // p_tmp_Stat_2.1手动合指令有效

pTmp_rev_B2:BOOL; // p_tmp_Stat_2.2自动调整指令有效

pTmp_rev_B3:BOOL; // p_tmp_Stat_2.3预留

pTmp_rev_B4:BOOL; // p_tmp_Stat_2.4预留

pTmp_rev_B5:BOOL; // p_tmp_Stat_2.5预留

pTmp_rev_B6:BOOL; // p_tmp_Stat_@2.6预留

pTmp_rev_B7:BOOL; // p_tmp_Stat_@2.7预留

opnManOld:BOOL; // p_tmp_Stat_3.0手动开按钮(上周期状态)

clsManOld:BOOL; // p_tmp_Stat_3.1手动合按钮(上周期状态)

adjustOld:BOOL; // p_tmp_Stat_3.2自动调整按钮(上周期状态)

opnOutOld:BOOL; // p_tmp_Stat_3.3开控制(上周期状态)

clsOutOld:BOOL; // p_tmp_Stat_3.4合控制(上周期状态)

pTmp_rev_B15:BOOL; // p_tmp_Stat_3.5预留

pTmp_rev_B16:BOOL; // p_tmp_Stat_3.6预留

pTmp_rev_B17:BOOL; // p_tmp_Stat_3.7预留

SafeTime:INT; // p_set_w4保安时间(0.1s单位)

CntCloseDly:INT; // p_set_w6计数门延时关闭时间

Dead:INT; // p_set_w8死区

DecLn1:INT; // p_setw10减速点(1级大值)

DecLn2:INT; // p_set_w12减速点(2级小值)

actTime1:INT; // p_in_w14定时器过程变量:计数门延时开

actTime2:INT; // p_in_w16定时器过程变量:计数门未开报警

actTime3:INT; // p_in_w18定时器过程变量:保安时间报警

Err:INT; // tmp偏差量

err_pos:BOOL; // tmp正偏差

err_neg:BOOL; // tmp负偏差

err_zero:BOOL; // tmp无偏差

ManStrStpSB_Fn:BOOL; // 手动指令下降沿Fn

errAbs:INT; // tmp偏差量绝对值

END_VAR

BEGIN

Network 1 

// stat变量传入@vb0~19-->Ld10~29

LD     SM0.0

LPS

MOVD   LD6, AC1           //***LD6就是接口Pointer值//

MOVD   *AC1, LD10            //pointer指向VB1000,故此处 VD1000-->LD10//

AENO

+D     4, AC1

LRD

MOVD   *AC1, LD14             //故此处 VD1004-->LD14//

AENO

+D     4, AC1

LRD

MOVD   *AC1, LD18             //故此处 VD1008-->LD18//

AENO

+D     4, AC1

LRD

MOVD   *AC1, LD22

AENO

+D     4, AC1

LPP

MOVD   *AC1, LD26

Network 2 // 到位判定

// 网络注释,//中间不是指针过程,可以省略不看,直接看程序结尾,临时变量反送指针区

//中间省略,发不了那么多,提示字数超限,中间是控制部分

Network 23 

// stat变量传入

LD     SM0.0

LPS

MOVD   LD6, AC1

MOVD   LD10, *AC1    //LD10->VD1000

AENO

+D     4, AC1

LRD

MOVD   LD14, *AC1         //LD14->VD1004

AENO

+D     4, AC1

LRD

MOVD   LD18, *AC1          //LD18->VD1008

AENO

+D     4, AC1

LRD

MOVD   LD22, *AC1

AENO

+D     4, AC1

LPP

MOVD   LD26, *AC1

END_SUBROUTINE_BLOCK


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54647条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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