机器人RIP的控制程序解析

描述

工程项目的标准化统一对工业公司来说是降低各种成本的关键,一个发展了50-60年还没有自我工程标准的工业企业是不可能有发展的,就好像一个品牌说了半天怎么怎么好,但还没有实现产业化,一切都是空谈,就是在烧钱。

下面是 一个经典的标准化的机器人程序控制的架构案例:

RIP1的IO区域: 513-520

E513  K1水流量合格                A513 KYP01AE 开水

E514 BV01WMIN 水流量低位检测(NO高于低压值才有信号)  

E515 BV01WMAX 水流量高位检测(NC 超过高压没有信号)  A515 KYP01AA 关水

E516 BD01ND 低压气合格

在MAKRO57 中使用的F量:;%{E}%MKUKATPVW%CVW_COM %VCOMMENT %P 2:-- VW Kuehlwasserbeschaltung --, 3: VW_COMMENT

;FOLD F819 = EIN激活   ;FOLD –带循环水控制—

F820 = EIN 不使用循环水

F817 = EIN 用于不使用低压气用于屏蔽发出给PLC的故障代码

F818 是否关闭机器人在闲置时间超过15分钟后关水的功能,正常F818是AUS的

功能介绍:

1.当正确量的水流过时,入口(#冷却水最小值= TRUE)和(#冷却水

最大= TRUE)。 

2.如果水流量太低,输入(#冷却水最小= FALSE),输入(#冷却水

最大= TRUE)。 没水 

3.如果水流量太高,输入(#冷却水最小值= TRUE),INPUT(#冷却水

最大= FALSE)。电极脱落

USR_S.SRC文件调用程序VW_WASSER() -使得水控制程序在程序中实时执行

GLOBALDEF VW_WASSER() –声明一个全局性质的程序

1.-不带循环水

IF NOT MIT_VW_WASS AND ($FLAG[F_O_WASSER] OROHNE_VW_WAS) AND NOT$FLAG[F_KWY01EIN] THEN

-    没有选择有水-有F820(不带水) 或者没有水-没有F819水阀启动(F819带水)

-    MIT_VW_WASS带水的状态- OHNE_VW_WAS不带水的状态-

IF NOT $IN[I_BD01ND] OR (NOT $IN[I_BD02ND] AND $FLAG[F_MIT_RIP2]) OR (NOT $IN[I_BD03ND]AND $FLAG[F_MIT_RIP3])THEN

-E516低压气检测-F_MIT_RIP2=142 F142带2个RIP

$OUT[O_R_Med_ein]= FALSE -A25反馈给PLC有介质

ELSE

$OUT[O_R_Med_ein]= TRUE  -此时又低压气就可反馈机器人有介质

ENDIF

IF($OUT[O_R_PFO] AND $OUT[O_R_SAK])THEN -机器人在零点A15,在轨迹上A16

OHNE_VW_WAS=FALSE

ELSE

OHNE_VW_WAS=TRUE  -正常执行程序状态满足发出没有水

ENDIF

ENDIF

2.带水

IF $FLAG[F_KWY01EIN] OR MIT_VW_WASS THEN-F819带水功能在MAKRO57中被激活

- 有F819 或者带水模式在DAT文件中给入TRUE

IF NOT MED_EXT_AUS AND NOT $OUT[O_R_Med_ein] AND NOTWASSERSTOE AND $OUT[O_R_RK100] AND $IN[I_BD01ND] AND ($IN[I_BD02ND] OR NOT  $FLAG[F_MIT_RIP2]) AND ($IN[I_BD03ND] OR NOT $FLAG[F_MIT_RIP3])THEN

-MED_EXT_AUS外部信号使水关闭-没有发出A25介质反馈-没有水故障-机器人有RK100(A10)-E516低压气检测-2号站低压气或者没有F142 .....

-首先要带水F819 机器人不能有水流量故障,不由外部关水,要有低压气检测E516

-F142 之类当有1个RIP时F142=FLASE

IF NOT TIMER_ABGE AND NOT T_SG_ABGEL THEN-两个超时有一个没有就没有A25

-没有超过机器人闲置时间15分钟(TIMER_ABGE/ T_SG_ABGEL)

$OUT[O_R_Med_ein]=TRUE  -A25机器人有介质

ENDIF

ENDIF

IF($OUT[O_R_PFO] AND $OUT[O_R_SAK])THEN

-A15机器人在零位-A16 机器人在轨迹上

MIT_VW_WASS=FALSE 

ELSE

MIT_VW_WASS=TRUE  -用于当机器人不再零点也不在轨迹时使循环可以继续

ENDIF

IF(NOT $OUT[O_R_RK100] AND WASSERSTOE AND WASSER_EIN) OR NOT$IN[I_BD01ND] OR (NOT $IN[I_BD02ND] AND $FLAG[F_MIT_RIP2]) OR (NOT $IN[I_BD03ND] AND $FLAG[F_MIT_RIP3] )   THEN

-机器人RK100被断开,有水故障和水启动-没有低压气或不足

MED_EXT_AUS=TRUE  -外部条件引起水被关闭激活

IF(VW_FEH_NR==20)THEN –故障号反馈给PLC是20号

- 在VWFEH_LOOP()程序中定义故障号20 与ED_EXT_AUS的关系

- IF(MED_EXT_AUS)THEN

-  VW_FEH_NR=20

- ENDIF

$OUT[O_R_Med_ein]=FALSE  -关闭A25介质反馈

ENDIF

ELSE

MED_EXT_AUS=FALSE  -否则就没有外部条件引起水被关闭激活

ENDIF

IF NOT $OUT[O_R_RK100] AND NOT WA_HIFU_REST THEN

-当没有RK100,也没有WA_HIFU_REST水的计时器复位中间变量-例如:打开安全门

WA_HIFU_REST=TRUE 

$TIMER_STOP[T_WASSER_EIN]=TRUE  -停止计时器T55水流开启时间

ENDIF

IF $OUT[O_R_RK100] AND WA_HIFU_REST THEN

-断开RK100后再次恢复的状态

$OUT[O_R_Med_ein]=TRUE -A25再次发出

WA_HIFU_REST=FALSE   关闭中间变量

WASSERSTOE=FALSE  -关闭水故障

$FLAG[F_T_WA_WSTOE]=FALSE   -水故障

$TIMER_STOP[T_WASSER_STO]=TRUE –T56水故障计时器开始复位清零

$TIMER[T_WASSER_STO]=0

$TIMER_STOP[T_WASSER_STO]=FALSE

$TIMER_STOP[T_WASSER_EIN]=TRUE -T55水启动计时器开始复位清零

$TIMER[T_WASSER_EIN]=0

$TIMER_STOP[T_WASSER_EIN]=FALSE

$TIMER_STOP[T_STELLGLIE]=TRUE -T54水控制计时器开始复位清零

$TIMER[T_STELLGLIE]=0

$TIMER_STOP[T_STELLGLIE]=FALSE

ENDIF

IF NOT WASSERSTOE THEN -如果没有水故障

-水流量超过最大流量故障-可认为是电极帽掉了/漏了

IF($IN[I_BV01WMIN] AND NOT $IN[I_BV01WMAX]) OR ($IN[I_BV02WMIN] ANDNOT $IN[I_BV02WMAX]) OR ($IN[I_BV03WMIN]AND NOT $IN[I_BV03WMAX])THEN

-E514 有低压水和没有高压水E515-

-正常情况下是E514和E515高低水都有,当水压制超过高压水时E515会变为FLASE

-因此在调解水流量阀时因该注意高压水压力值不能太大。

W_MAX_RIP1=$IN[I_BV01WMIN] AND NOT $IN[I_BV01WMAX]

-有低压水没有高压水为高压水故障,常用与电极帽掉的水压检测

W_MAX_RIP2=$IN[I_BV02WMIN] AND NOT $IN[I_BV02WMAX]

W_MAX_RIP3=$IN[I_BV03WMIN] AND NOT $IN[I_BV03WMAX]

$TIMER_STOP[T_WASSER_STO]=FALSE -当出现故障时计时器T56开始计时

IF($TIMER[T_WASSER_STO]>WA_STOER_Z)THEN

-当T56超过4 S时报水故障,开始关RIP的水

WASSERSTOE=TRUE    -报水流量故障

$FLAG[F_T_WA_WSTOE]=TRUE –F816水故障提示

$TIMER_STOP[T_WASSER_STO]=TRUE –T56暂停

$OUT[O_KYP01WA]=TRUE –A515水关

$OUT[O_KYP01WE]=FALSE –A513 水开被关闭

$OUT[O_KYP02WA]=TRUE

$OUT[O_KYP02WE]=FALSE

$OUT[O_KYP03WA]=TRUE

$OUT[O_KYP03WE]=FALSE

ENDIF

ELSE    -如果没有超时4 S,T56计时器复位

$TIMER_STOP[T_WASSER_STO]=TRUE 

$TIMER[T_WASSER_STO]=0

$TIMER_STOP[T_WASSER_STO]=FALSE

ENDIF

IF $OUT[O_R_RK100] THEN -有机器人RK100请求驱动

IF($FLAG[F_WA_EIN_VSP] OR (NOT $OUT[O_R_PFO] AND NOT $OUT[O_R_WartB] AND$OUT[O_R_SG_gesp]))THEN

-F818在MORKO80中使用消除自动关水问题

-机器人不再零位A15-机器人没在维修位置A17-程序始终在执行A23

- 如果激活了F818 那么开水时间T55会被一直复位,在没有水故障的条件下。

- 当机器人开始移动后T55奖杯清零

$TIMER_STOP[T_WASSER_EIN]=TRUE –T55清零

$TIMER[T_WASSER_EIN]=0

$TIMER_STOP[T_WASSER_EIN]=FALSE -开始计时

ENDIF

ENDIF –一旦开始计时,机器人还没有执行程序在零位或一直在维修位置,或停止在过程停止都不会使T55定时器复位一直开始计时直道900000ms后停止

TIMER_ABGE=($TIMER[T_WASSER_EIN]>WA_AUS_NAZ)-没有故障时T55大于15分钟

-当开始执行程序时T55被重新值0 TIMER_ABGE变为FLASE

- WA_AUS_NAZ=900000

IF TIMER_ABGE AND NOT$TIMER_STOP[T_WASSER_EIN] THEN

-大于15分钟后 –还没有T55计时器停止

$TIMER_STOP[T_WASSER_EIN]=TRUE –让计时器停止

ENDIF

IF $OUT[O_R_RK100]  THEN   -机器人只要有RK100请求驱动

$TIMER_STOP[T_STELLGLIE]=TRUE   –T54清零

$TIMER[T_STELLGLIE]=0

$TIMER_STOP[T_STELLGLIE]=FALSE --开始计时

ENDIF -他只记录没有RK100后的时间,超时时间也是900000ms

T_SG_ABGEL=($TIMER[T_STELLGLIE]>WA_AUS_SZA)

--当开始发出RK100时T54被重新值0 T_SG_ABGEL变为FLASE

IF T_SG_ABGEL AND NOT$TIMER_STOP[T_STELLGLIE] THEN

$TIMER_STOP[T_STELLGLIE]=TRUE –让计时器停止

ENDIF

IF $OUT[O_R_RK100] AND NOTWASSERSTOE AND NOT WASSER_EIN AND NOT $FLAG[281] AND NOT $FLAG[283] THEN

-机器人有使能-没有水故障-水没有启动-没有F281-没有F283/一般用F281就可实现开关水

-本段的意思是正常时会保持RIP开着水

WA_ZUSTAND=1    -RIP开水

ENDIF

IF(TIMER_ABGE OR T_SG_ABGEL) AND NOT $FLAG[F_WA_EIN_VSP] THEN

- 机器人闲置超时-没有F818(关闭设备自动状态时闲置时间超过15分钟后关水)

MED_EXT_AUS=FALSE -关闭外部关水

IF(VW_FEH_NR<>20)THEN –闲置时间超过15分钟后关主HIP的水-

-其他一水流量故障只故障代码不等于20就都会关闭A25

$OUT[O_R_Med_ein]=FALSE  -关闭A25会引起主杠HIP的5S后关水

ENDIF

ELSE

MED_EXT_AUS=FALSE        

ENDIF

IF($OUT[O_R_RK100] AND ($FLAG[281] OR $FLAG[283] OR WASSERSTOE OR NOT$IN[I_MEDIENEI]))THEN

-RIP关水的条件:机器人有使能请求RK100-有F281-或有F283-或有水故障-或PLC没有发出E25

WA_ZUSTAND=2  -RIP关水

ENDIF

---------------------------------------------------------------------

IF $FLAG[819] AND $FLAG[820] THEN -直接控制开关水

-F819在MAKRO57里赋值为TURE,F820直接给水- 不受到其他条件的控制只开水.

WA_ZUSTAND=1  -RIP开水

ENDIF

---------------------------------------------------------------------

SWITCH WA_ZUSTAND

CASE 1

;Wasser EIN

$OUT[O_KYP01WA]=FALSE

$OUT[O_KYP01WE]=TRUE  -A513开水阀

$OUT[O_KYP02WA]=FALSE

$OUT[O_KYP02WE]=TRUE

$OUT[O_KYP03WA]=FALSE

$OUT[O_KYP03WE]=TRUE

WASSER_EIN=TRUE –水阀启动

CASE 2

;Wasser AUS

$OUT[O_KYP01WA]=TRUE  -A515水阀关

$OUT[O_KYP01WE]=FALSE

$OUT[O_KYP02WA]=TRUE

$OUT[O_KYP02WE]=FALSE

$OUT[O_KYP03WA]=TRUE

$OUT[O_KYP03WE]=FALSE

WASSER_EIN=FALSE  -水阀关

DEFAULT

ENDSWITCH

ENDIF

ENDIF

END

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分