恭喜,你发布的帖子
发布于 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
请填写推广理由:
分享
只看
楼主