工程項(xiàng)目的標(biāo)準(zhǔn)化統(tǒng)一對(duì)工業(yè)公司來(lái)說是降低各種成本的關(guān)鍵,一個(gè)發(fā)展了50-60年還沒有自我工程標(biāo)準(zhǔn)的工業(yè)企業(yè)是不可能有發(fā)展的,就好像一個(gè)品牌說了半天怎么怎么好,但還沒有實(shí)現(xiàn)產(chǎn)業(yè)化,一切都是空談,就是在燒錢。
下面是 一個(gè)經(jīng)典的標(biāo)準(zhǔn)化的機(jī)器人程序控制的架構(gòu)案例:
RIP1的IO區(qū)域: 513-520
E513 K1水流量合格 A513 KYP01AE 開水
E514BV01WMIN 水流量低位檢測(cè)(NO高于低壓值才有信號(hào))
E515BV01WMAX 水流量高位檢測(cè)(NC 超過高壓沒有信號(hào))A515 KYP01AA 關(guān)水
E516BD01ND 低壓氣合格
在MAKRO57 中使用的F量:;%{E}%MKUKATPVW%CVW_COM %VCOMMENT %P 2:-- VW Kuehlwasserbeschaltung --, 3: VW_COMMENT
;FOLD F819 = EIN激活 ;FOLD –帶循環(huán)水控制—
F820 = EIN 不使用循環(huán)水
F817 = EIN 用于不使用低壓氣用于屏蔽發(fā)出給PLC的故障代碼
F818 是否關(guān)閉機(jī)器人在閑置時(shí)間超過15分鐘后關(guān)水的功能,正常F818是AUS的
功能介紹:
1.當(dāng)正確量的水流過時(shí),入口(#冷卻水最小值= TRUE)和(#冷卻水
最大= TRUE)。
2.如果水流量太低,輸入(#冷卻水最小= FALSE),輸入(#冷卻水
最大= TRUE)。 沒水
3.如果水流量太高,輸入(#冷卻水最小值= TRUE),INPUT(#冷卻水
最大= FALSE)。電極脫落
USR_S.SRC文件調(diào)用程序VW_WASSER() -使得水控制程序在程序中實(shí)時(shí)執(zhí)行
GLOBALDEF VW_WASSER() –聲明一個(gè)全局性質(zhì)的程序
1.-不帶循環(huán)水
IF NOT MIT_VW_WASS AND ($FLAG[F_O_WASSER] OROHNE_VW_WAS) AND NOT$FLAG[F_KWY01EIN] THEN
- 沒有選擇有水-有F820(不帶水) 或者沒有水-沒有F819水閥啟動(dòng)(F819帶水)
- MIT_VW_WASS帶水的狀態(tài)- OHNE_VW_WAS不帶水的狀態(tài)-
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低壓氣檢測(cè)-F_MIT_RIP2=142 F142帶2個(gè)RIP
$OUT[O_R_Med_ein]= FALSE-A25反饋給PLC有介質(zhì)
ELSE
$OUT[O_R_Med_ein]= TRUE -此時(shí)又低壓氣就可反饋機(jī)器人有介質(zhì)
ENDIF
IF($OUT[O_R_PFO] AND $OUT[O_R_SAK])THEN -機(jī)器人在零點(diǎn)A15,在軌跡上A16
OHNE_VW_WAS=FALSE
ELSE
OHNE_VW_WAS=TRUE -正常執(zhí)行程序狀態(tài)滿足發(fā)出沒有水
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外部信號(hào)使水關(guān)閉-沒有發(fā)出A25介質(zhì)反饋-沒有水故障-機(jī)器人有RK100(A10)-E516低壓氣檢測(cè)-2號(hào)站低壓氣或者沒有F142 .....
-首先要帶水F819 機(jī)器人不能有水流量故障,不由外部關(guān)水,要有低壓氣檢測(cè)E516
-F142 之類當(dāng)有1個(gè)RIP時(shí)F142=FLASE
IF NOT TIMER_ABGE AND NOT T_SG_ABGEL THEN-兩個(gè)超時(shí)有一個(gè)沒有就沒有A25
-沒有超過機(jī)器人閑置時(shí)間15分鐘(TIMER_ABGE/ T_SG_ABGEL)
$OUT[O_R_Med_ein]=TRUE -A25機(jī)器人有介質(zhì)
ENDIF
ENDIF
IF($OUT[O_R_PFO] AND $OUT[O_R_SAK])THEN
-A15機(jī)器人在零位-A16 機(jī)器人在軌跡上
MIT_VW_WASS=FALSE
ELSE
MIT_VW_WASS=TRUE -用于當(dāng)機(jī)器人不再零點(diǎn)也不在軌跡時(shí)使循環(huán)可以繼續(xù)
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
-機(jī)器人RK100被斷開,有水故障和水啟動(dòng)-沒有低壓氣或不足
MED_EXT_AUS=TRUE -外部條件引起水被關(guān)閉激活
IF(VW_FEH_NR==20)THEN –故障號(hào)反饋給PLC是20號(hào)
- 在VWFEH_LOOP()程序中定義故障號(hào)20 與ED_EXT_AUS的關(guān)系
- IF(MED_EXT_AUS)THEN
-VW_FEH_NR=20
- ENDIF
$OUT[O_R_Med_ein]=FALSE -關(guān)閉A25介質(zhì)反饋
ENDIF
ELSE
MED_EXT_AUS=FALSE -否則就沒有外部條件引起水被關(guān)閉激活
ENDIF
IF NOT $OUT[O_R_RK100] AND NOT WA_HIFU_REST THEN
-當(dāng)沒有RK100,也沒有WA_HIFU_REST水的計(jì)時(shí)器復(fù)位中間變量-例如:打開安全門
WA_HIFU_REST=TRUE
$TIMER_STOP[T_WASSER_EIN]=TRUE -停止計(jì)時(shí)器T55水流開啟時(shí)間
ENDIF
IF $OUT[O_R_RK100] AND WA_HIFU_REST THEN
-斷開RK100后再次恢復(fù)的狀態(tài)
$OUT[O_R_Med_ein]=TRUE -A25再次發(fā)出
WA_HIFU_REST=FALSE關(guān)閉中間變量
WASSERSTOE=FALSE-關(guān)閉水故障
$FLAG[F_T_WA_WSTOE]=FALSE -水故障
$TIMER_STOP[T_WASSER_STO]=TRUE –T56水故障計(jì)時(shí)器開始復(fù)位清零
$TIMER[T_WASSER_STO]=0
$TIMER_STOP[T_WASSER_STO]=FALSE
$TIMER_STOP[T_WASSER_EIN]=TRUE -T55水啟動(dòng)計(jì)時(shí)器開始復(fù)位清零
$TIMER[T_WASSER_EIN]=0
$TIMER_STOP[T_WASSER_EIN]=FALSE
$TIMER_STOP[T_STELLGLIE]=TRUE -T54水控制計(jì)時(shí)器開始復(fù)位清零
$TIMER[T_STELLGLIE]=0
$TIMER_STOP[T_STELLGLIE]=FALSE
ENDIF
IF NOT WASSERSTOE THEN -如果沒有水故障
-水流量超過最大流量故障-可認(rèn)為是電極帽掉了/漏了
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高低水都有,當(dāng)水壓制超過高壓水時(shí)E515會(huì)變?yōu)镕LASE
-因此在調(diào)解水流量閥時(shí)因該注意高壓水壓力值不能太大。
W_MAX_RIP1=$IN[I_BV01WMIN] AND NOT $IN[I_BV01WMAX]
-有低壓水沒有高壓水為高壓水故障,常用與電極帽掉的水壓檢測(cè)
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 -當(dāng)出現(xiàn)故障時(shí)計(jì)時(shí)器T56開始計(jì)時(shí)
IF($TIMER[T_WASSER_STO]>WA_STOER_Z)THEN
-當(dāng)T56超過4 S時(shí)報(bào)水故障,開始關(guān)RIP的水
WASSERSTOE=TRUE-報(bào)水流量故障
$FLAG[F_T_WA_WSTOE]=TRUE –F816水故障提示
$TIMER_STOP[T_WASSER_STO]=TRUE –T56暫停
$OUT[O_KYP01WA]=TRUE –A515水關(guān)
$OUT[O_KYP01WE]=FALSE –A513 水開被關(guān)閉
$OUT[O_KYP02WA]=TRUE
$OUT[O_KYP02WE]=FALSE
$OUT[O_KYP03WA]=TRUE
$OUT[O_KYP03WE]=FALSE
ENDIF
ELSE -如果沒有超時(shí)4 S,T56計(jì)時(shí)器復(fù)位
$TIMER_STOP[T_WASSER_STO]=TRUE
$TIMER[T_WASSER_STO]=0
$TIMER_STOP[T_WASSER_STO]=FALSE
ENDIF
IF $OUT[O_R_RK100] THEN -有機(jī)器人RK100請(qǐng)求驅(qū)動(dòng)
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中使用消除自動(dòng)關(guān)水問題
-機(jī)器人不再零位A15-機(jī)器人沒在維修位置A17-程序始終在執(zhí)行A23
- 如果激活了F818 那么開水時(shí)間T55會(huì)被一直復(fù)位,在沒有水故障的條件下。
- 當(dāng)機(jī)器人開始移動(dòng)后T55獎(jiǎng)杯清零
$TIMER_STOP[T_WASSER_EIN]=TRUE –T55清零
$TIMER[T_WASSER_EIN]=0
$TIMER_STOP[T_WASSER_EIN]=FALSE -開始計(jì)時(shí)
ENDIF
ENDIF –一旦開始計(jì)時(shí),機(jī)器人還沒有執(zhí)行程序在零位或一直在維修位置,或停止在過程停止都不會(huì)使T55定時(shí)器復(fù)位一直開始計(jì)時(shí)直道900000ms后停止
TIMER_ABGE=($TIMER[T_WASSER_EIN]>WA_AUS_NAZ)-沒有故障時(shí)T55大于15分鐘
-當(dāng)開始執(zhí)行程序時(shí)T55被重新值0 TIMER_ABGE變?yōu)镕LASE
- WA_AUS_NAZ=900000
IF TIMER_ABGE AND NOT$TIMER_STOP[T_WASSER_EIN] THEN
-大于15分鐘后 –還沒有T55計(jì)時(shí)器停止
$TIMER_STOP[T_WASSER_EIN]=TRUE –讓計(jì)時(shí)器停止
ENDIF
IF $OUT[O_R_RK100] THEN -機(jī)器人只要有RK100請(qǐng)求驅(qū)動(dòng)
$TIMER_STOP[T_STELLGLIE]=TRUE –T54清零
$TIMER[T_STELLGLIE]=0
$TIMER_STOP[T_STELLGLIE]=FALSE --開始計(jì)時(shí)
ENDIF -他只記錄沒有RK100后的時(shí)間,超時(shí)時(shí)間也是900000ms
T_SG_ABGEL=($TIMER[T_STELLGLIE]>WA_AUS_SZA)
--當(dāng)開始發(fā)出RK100時(shí)T54被重新值0 T_SG_ABGEL變?yōu)镕LASE
IF T_SG_ABGEL AND NOT$TIMER_STOP[T_STELLGLIE] THEN
$TIMER_STOP[T_STELLGLIE]=TRUE –讓計(jì)時(shí)器停止
ENDIF
IF $OUT[O_R_RK100] AND NOTWASSERSTOE AND NOT WASSER_EIN AND NOT $FLAG[281] AND NOT $FLAG[283] THEN
-機(jī)器人有使能-沒有水故障-水沒有啟動(dòng)-沒有F281-沒有F283/一般用F281就可實(shí)現(xiàn)開關(guān)水
-本段的意思是正常時(shí)會(huì)保持RIP開著水
WA_ZUSTAND=1 -RIP開水
ENDIF
IF(TIMER_ABGE OR T_SG_ABGEL) AND NOT $FLAG[F_WA_EIN_VSP] THEN
- 機(jī)器人閑置超時(shí)-沒有F818(關(guān)閉設(shè)備自動(dòng)狀態(tài)時(shí)閑置時(shí)間超過15分鐘后關(guān)水)
MED_EXT_AUS=FALSE -關(guān)閉外部關(guān)水
IF(VW_FEH_NR<>20)THEN –閑置時(shí)間超過15分鐘后關(guān)主HIP的水-
-其他一水流量故障只故障代碼不等于20就都會(huì)關(guān)閉A25
$OUT[O_R_Med_ein]=FALSE -關(guān)閉A25會(huì)引起主杠HIP的5S后關(guān)水
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關(guān)水的條件:機(jī)器人有使能請(qǐng)求RK100-有F281-或有F283-或有水故障-或PLC沒有發(fā)出E25
WA_ZUSTAND=2 -RIP關(guān)水
ENDIF
---------------------------------------------------------------------
IF $FLAG[819] AND $FLAG[820] THEN -直接控制開關(guān)水
-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 –水閥啟動(dòng)
CASE 2
;Wasser AUS
$OUT[O_KYP01WA]=TRUE -A515水閥關(guān)
$OUT[O_KYP01WE]=FALSE
$OUT[O_KYP02WA]=TRUE
$OUT[O_KYP02WE]=FALSE
$OUT[O_KYP03WA]=TRUE
$OUT[O_KYP03WE]=FALSE
WASSER_EIN=FALSE -水閥關(guān)
DEFAULT
ENDSWITCH
ENDIF
ENDIF
END
-
plc
+關(guān)注
關(guān)注
5011文章
13299瀏覽量
463436 -
人工智能
+關(guān)注
關(guān)注
1791文章
47282瀏覽量
238536
原文標(biāo)題:機(jī)器人RIP的控制程序解析
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論