0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文知道UP/MAKRO程序的調(diào)用

機器人及PLC自動化應(yīng)用 ? 來源:搜狐網(wǎng) ? 作者:搜狐網(wǎng) ? 2020-11-07 10:57 ? 次閱讀

UP/MAKRO程序調(diào)用

該指令可用于調(diào)用子程序并將子程序調(diào)用鏈接到條件(布爾操作數(shù))。如果需要,可以鏈接多個操作數(shù)(最多11個)。

子程序的調(diào)用次數(shù)沒有限制。

1 子程序號 ?0 ... 999
2 操作符_(
3 操作員。如果選擇了操作數(shù)EIN(ON)和AUS(OFF),則輸入框不可用。?_,!
4 布爾操作數(shù)(條件)?EIN(開),AUS(關(guān)),E,A,M,F(xiàn),T,S
5 操作數(shù)的編號。如果選擇了操作數(shù)EIN(ON)和AUS(OFF),則輸入框不可用。
值的范圍。取決于操作數(shù)
6 操作符_(

UP101 = F78 + F79 激活條件UP101

;%{SE}%MKUKATPVW %CVW_SPS %VUP %P 2:UP101 = F78 + F79,3:UP

;ENDFOLDSEL_RES=SELECT(#UP,101,$FLAG[78] OR $FLAG[79])

REPEAT UP101 N= 999 STOP= !F298 條件滿足停止循環(huán)調(diào)用UP101

SEL_RES=SELECT (#CYC_UP,101,TRUE,#NUM,999,#NOT_F,298,FALSE)

;ENDFOLD

;ENDFOLD

DEFFCT INT SELECT

(SUB :IN,NO :IN,CALL_CND :IN,ARI_OP :IN,ARI_NUM :IN,BOOL_OP :IN,BOOL_NUM :IN,MAKRO_ADV :IN)

SUB : 選擇調(diào)用的類型UP/makro

NO : 程序號

CALL_CND : 激活條件

ADV_RESULT = 0

IF NOT CALL_CND THEN ---如果不激活就跳步到最后

GOTO PEXIT -----跳步到退出

ENDIF

SWITCH SUB

CASE #UP 使用調(diào)用UP

CALLBYSELECT=TRUE

SWITCH NO ;調(diào)用UP程序號

CASE 101 ---程序號

UP101( ) 調(diào)用UP程序號

CASE 102

UP102( )

CASE 103

UP103( )

CASE 112

UP112( )

CASE 201

UP201( )

CASE 206

UP206( )

DEFAULT

$LOOP_MSG[]=" "

OFFSET = 0

---程序號不能被調(diào)用---

SWRITE($LOOP_MSG[],STATE,OFFSET,"UP%D ist nicht vorhanden",NO)

HALT ---程序號不能被調(diào)用---使得程序停止

$LOOP_MSG[]=" "

ENDSWITCH

CALLBYSELECT=FALSE

CASE #MAKRO

SWITCH NO ;開始調(diào)用MAKRO程序號 --

CASE 0 要激活的程序號

ADV_RESULT= MAKRO0 (MAKRO_ADV) 激活MAKRO0程序

CASE 1

ADV_RESULT= MAKRO1 (MAKRO_ADV) 激活MAKRO1程序

CASE 2

ADV_RESULT= MAKRO2 (MAKRO_ADV)

CASE 3

ADV_RESULT= MAKRO3 (MAKRO_ADV)

CASE 4

ADV_RESULT= MAKRO4 (MAKRO_ADV)

CASE 5

ADV_RESULT= MAKRO5 (MAKRO_ADV)

CASE 6

ADV_RESULT= MAKRO6 (MAKRO_ADV)

CASE 7

ADV_RESULT= MAKRO7 (MAKRO_ADV)

CASE 8

ADV_RESULT= MAKRO8 (MAKRO_ADV)

CASE 9

ADV_RESULT= MAKRO9 (MAKRO_ADV)

CASE 10

ADV_RESULT= MAKRO10 (MAKRO_ADV)

CASE 11

ADV_RESULT= MAKRO11 (MAKRO_ADV)

CASE 12

ADV_RESULT= MAKRO12 (MAKRO_ADV)

CASE 13

ADV_RESULT= MAKRO13 (MAKRO_ADV)

CASE 14

ADV_RESULT= MAKRO14 (MAKRO_ADV)

CASE 15

ADV_RESULT= MAKRO15 (MAKRO_ADV)

CASE 20

ADV_RESULT= MAKRO20 (MAKRO_ADV)

CASE 50

ADV_RESULT= MAKRO50 (MAKRO_ADV)

CASE 57

ADV_RESULT= MAKRO57 (MAKRO_ADV)

CASE 80

ADV_RESULT= MAKRO80 (MAKRO_ADV)

CASE 81

ADV_RESULT= MAKRO81 (MAKRO_ADV)

CASE 82

ADV_RESULT= MAKRO82 (MAKRO_ADV)

CASE 83

ADV_RESULT= MAKRO83 (MAKRO_ADV)

CASE 89

ADV_RESULT= MAKRO89 (MAKRO_ADV)

DEFAULT

$LOOP_MSG[]=" "

-------沒有建立的Makro號被調(diào)用

OFFSET = 0

SWRITE($LOOP_MSG[],STATE,OFFSET,"Makro%D ist nicht vorhanden",NO)

用來模擬顯示: 沒有建立的Makro號被調(diào)用

HALT -----如果沒有號需要停止

$LOOP_MSG[]=" "

ENDSWITCH 結(jié)束了MAKRO選擇

CASE #CYC_UP -----循環(huán)執(zhí)行UP程序

NR=0

WHILE NOT (CHECK_BOOL(BOOL_OP,BOOL_NUM) OR CHECK_ARI(NR,ARI_OP,ARI_NUM)) CHECK_BOOL/ CHECK_ARI啟動功能條件開啟

NR=NR+1 從0開始計數(shù)大于給定值將不執(zhí)行循環(huán)程序

CALLBYSELECT=TRUE

SWITCH NO ; UP程序號調(diào)用

CASE 101

UP101( )

CASE 102

UP102( )

CASE 103

UP103( )

CASE 112

UP112( )

CASE 201

UP201( )

CASE 206

UP206( )

DEFAULT

$LOOP_MSG[]=" "

UP程序號沒有被激活的程序號

OFFSET = 0

SWRITE($LOOP_MSG[],STATE,OFFSET,"UP%D ist nicht vorhanden",NO)

HALT 程序號沒有使用程序停止

$LOOP_MSG[]=" "

ENDSWITCH

CALLBYSELECT=FALSE

ENDWHILE

CASE #CYC_MAKRO -----循環(huán)執(zhí)行MAKRO程序

NR=0

WHILE NOT (CHECK_BOOL(BOOL_OP,BOOL_NUM) OR CHECK_ARI(NR,ARI_OP,ARI_NUM)) 大于給定值將不執(zhí)行循環(huán)程序

NR=NR+1 從0開始計數(shù)大于給定值將不執(zhí)行循環(huán)程序

SWITCH NO -----調(diào)用的程序號

CASE 0

ADV_RESULT= MAKRO0 (MAKRO_ADV) 調(diào)用執(zhí)行MAKRO程序

CASE 1

ADV_RESULT= MAKRO1 (MAKRO_ADV)

CASE 2

ADV_RESULT= MAKRO2 (MAKRO_ADV)

CASE 3

ADV_RESULT= MAKRO3 (MAKRO_ADV)

CASE 4

ADV_RESULT= MAKRO4 (MAKRO_ADV)

CASE 5

ADV_RESULT= MAKRO5 (MAKRO_ADV)

CASE 6

ADV_RESULT= MAKRO6 (MAKRO_ADV)

CASE 7

ADV_RESULT= MAKRO7 (MAKRO_ADV)

CASE 8

ADV_RESULT= MAKRO8 (MAKRO_ADV)

CASE 9

ADV_RESULT= MAKRO9 (MAKRO_ADV)

CASE 10

ADV_RESULT= MAKRO10 (MAKRO_ADV)

CASE 11

ADV_RESULT= MAKRO11 (MAKRO_ADV)

CASE 12

ADV_RESULT= MAKRO12 (MAKRO_ADV)

CASE 13

ADV_RESULT= MAKRO13 (MAKRO_ADV)

CASE 14

ADV_RESULT= MAKRO14 (MAKRO_ADV)

CASE 15

ADV_RESULT= MAKRO15 (MAKRO_ADV)

CASE 20

ADV_RESULT= MAKRO20 (MAKRO_ADV)

CASE 50

ADV_RESULT= MAKRO50 (MAKRO_ADV)

CASE 57

ADV_RESULT= MAKRO57 (MAKRO_ADV)

CASE 80

ADV_RESULT= MAKRO80 (MAKRO_ADV)

CASE 81

ADV_RESULT= MAKRO81 (MAKRO_ADV)

CASE 82

ADV_RESULT= MAKRO82 (MAKRO_ADV)

CASE 83

ADV_RESULT= MAKRO83 (MAKRO_ADV)

CASE 89

ADV_RESULT= MAKRO89 (MAKRO_ADV)

DEFAULT

$LOOP_MSG[]=" "

Makro程序號沒有被激活的程序號

OFFSET = 0

SWRITE($LOOP_MSG[],STATE,OFFSET,"Makro%D ist nicht vorhanden",NO)

HALT -----程序號沒有使用程序停止

$LOOP_MSG[]=" "

ENDSWITCH ---結(jié)束選擇程序

ENDWHILE ---結(jié)束條件

DEFAULT --- 沒有UP,MAKRO,CYC_MAKRO,CYC_UP

ENDSWITCH ---結(jié)束選擇程序

PEXIT: -------跳步退出

RETURN ADV_RESULT

ENDFCT

---檢查位用于循環(huán)調(diào)用---

DEFFCT BOOL CHECK_BOOL(BOOLOP :IN,BOOLOP_NUM :IN)

INT BOOLOP_NUM 位號,數(shù)字

DECL BOOL_TYP BOOLOP 各種類型

BOOL STOP_BOOL

SWITCH BOOLOP

CASE #EIN

STOP_BOOL=TRUE ---激活

CASE #AUS

STOP_BOOL=FALSE ---關(guān)閉

CASE #E

STOP_BOOL=$IN[BOOLOP_NUM] ---用輸入激活

CASE #NOT_E

STOP_BOOL= NOT $IN[BOOLOP_NUM] ---輸入取反激活

CASE #A

STOP_BOOL=$OUT[BOOLOP_NUM] ---用輸出激活

CASE #NOT_A

STOP_BOOL= NOT $OUT[BOOLOP_NUM] ---用輸出的非激活

CASE #M

STOP_BOOL=$CYCFLAG[BOOLOP_NUM] ---用M量激活

CASE #NOT_M

STOP_BOOL= NOT $CYCFLAG[BOOLOP_NUM] ---用M量的非激活

CASE #F

STOP_BOOL=$FLAG[BOOLOP_NUM] 用F量激活

CASE #NOT_F

STOP_BOOL= NOT $FLAG[BOOLOP_NUM] 用F量的非激活

CASE #T

STOP_BOOL=$TIMER_FLAG[BOOLOP_NUM] 用時間量激活

CASE #NOT_T

STOP_BOOL= NOT $TIMER_FLAG[BOOLOP_NUM] 用時間量的非激活

CASE #S

STOP_BOOL=S[BOOLOP_NUM] S量一般不用

CASE #NOT_S

STOP_BOOL= NOT S[BOOLOP_NUM]

ENDSWITCH

RETURN (STOP_BOOL) 條件滿足反饋

ENDFCT

-----用于輸入數(shù)---

DEFFCT BOOL CHECK_ARI(ACT_NR :IN, ARIOP :IN ,ARIOP_NUM :IN)

INT ACT_NR, ARIOP_NUM, MAX_NR

DECL ARI_TYP ARIOP

SWITCH ARIOP

CASE #NUM 直接給入數(shù)

MAX_NR=ARIOP_NUM

CASE #COUNT 計數(shù)器

MAX_NR=$COUNT_I[ARIOP_NUM]

CASE #BIN 二進制

MAX_NR=$B_OUT[ARIOP_NUM]

CASE #BININ 二進制輸入

MAX_NR=ARIOP_NUM

CASE #ANA 模擬量輸出

MAX_NR=$ANOUT[ARIOP_NUM]*1000

CASE #ANAIN 模擬量輸入

MAX_NR=$ANIN[ARIOP_NUM]*1000

CASE #TIMER 時間控制

MAX_NR=$TIMER[ARIOP_NUM]*0.01

CASE #PROCPAR P值控制

MAX_NR=PROCPAR[ARIOP_NUM]

ENDSWITCH

RETURN (ACT_NR>=MAX_NR) 計數(shù)大于給定值.

ENDFCT

;ENDFOLD

;ENDFOLD

責(zé)任編輯人:CC

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 程序
    +關(guān)注

    關(guān)注

    115

    文章

    3720

    瀏覽量

    80357
  • 調(diào)用
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    3197

原文標(biāo)題:KUKA的程序調(diào)用--VSS版本解析

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    詳解python調(diào)用函數(shù)

    函數(shù)被定義后,本身是不會自動執(zhí)行的,只有在被調(diào)用后,函數(shù)才會被執(zhí)行,得到相應(yīng)的結(jié)果。但是在 Python 中我們要注意個關(guān)鍵點,就是Python不允許前向引用,即在函數(shù)定義之前,不允許調(diào)用該函數(shù)。
    發(fā)表于 10-01 10:45 ?512次閱讀

    詳解PLC子程序與子程序指令

    在編程時經(jīng)常會遇到相同的程序段需要多次執(zhí)行的情況,如圖6-39所示,程序段A要執(zhí)行兩次,編程時要寫兩段相同的程序段,這樣比較麻煩。解決這個問題的方法是將需要多次執(zhí)行的程序段從主
    的頭像 發(fā)表于 12-14 13:33 ?6301次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>詳解PLC子<b class='flag-5'>程序</b>與子<b class='flag-5'>程序</b>指令

    ARM linux系統(tǒng)調(diào)用的實現(xiàn)原理

    大家都知道linux的應(yīng)用程序要想訪問內(nèi)核必須使用系統(tǒng)調(diào)用從而實現(xiàn)從usr模式轉(zhuǎn)到svc模式。下面咱們看看它的實現(xiàn)過程。
    發(fā)表于 05-30 11:24 ?2221次閱讀

    程序的創(chuàng)建與調(diào)用

    【LabVIEW從入門到精通】2.5 子程序的創(chuàng)建與調(diào)用
    發(fā)表于 01-08 15:43 ?0次下載

    應(yīng)用程序調(diào)用底層驅(qū)動

    本片主要講述了嵌入式linux操作系統(tǒng)的上層應(yīng)用程序是如何調(diào)用底層驅(qū)動程序的。
    發(fā)表于 03-14 15:00 ?0次下載

    中斷處理和子程序調(diào)用概念解析

    程序組可以公用的指令序列,只要給出子程序的入口地址就能從主程序轉(zhuǎn)入子程序。子程序在功能上具
    發(fā)表于 11-16 11:12 ?9990次閱讀
    中斷處理和子<b class='flag-5'>程序</b><b class='flag-5'>調(diào)用</b>概念解析

    種動靜結(jié)合的惡意程序函數(shù)調(diào)用圖提取方法

    完整準(zhǔn)確地提取函數(shù)調(diào)用圖是基于函數(shù)調(diào)用圖進行惡意程序相似性分析的基礎(chǔ)。為此,提出種動靜結(jié)合的惡意程序函數(shù)
    發(fā)表于 02-24 13:52 ?0次下載
    <b class='flag-5'>一</b>種動靜結(jié)合的惡意<b class='flag-5'>程序</b>函數(shù)<b class='flag-5'>調(diào)用</b>圖提取方法

    知道Arm Linux系統(tǒng)調(diào)用流程?

    系統(tǒng)調(diào)用是操作系統(tǒng)提供的服務(wù),用戶程序通過各種系統(tǒng)調(diào)用,來引用內(nèi)核提供的各種服務(wù),系統(tǒng)調(diào)用的執(zhí)行讓用戶程序陷入內(nèi)核,該陷入動作由swi軟中斷
    發(fā)表于 05-15 16:19 ?2256次閱讀
    你<b class='flag-5'>知道</b>Arm Linux系統(tǒng)<b class='flag-5'>調(diào)用</b>流程?

    知道Linux系統(tǒng)調(diào)用的原理

    系統(tǒng)調(diào)用是應(yīng)用程序與操作系統(tǒng)內(nèi)核之間的接口,它決定了程序如何與內(nèi)核打交道的。無論程序是直接進行系統(tǒng)調(diào)用,還是通過運行庫,最終還是會到達系統(tǒng)
    發(fā)表于 05-16 16:21 ?1419次閱讀
    你<b class='flag-5'>知道</b>Linux系統(tǒng)<b class='flag-5'>調(diào)用</b>的原理

    KUKA的程序調(diào)用--VSS版本解析

    該指令可用于調(diào)用程序并將子程序調(diào)用鏈接到條件(布爾操作數(shù))。如果需要,可以鏈接多個操作數(shù)(最多11個)。 子程序
    的頭像 發(fā)表于 03-18 10:07 ?3005次閱讀
    KUKA的<b class='flag-5'>程序</b><b class='flag-5'>調(diào)用</b>--VSS版本解析

    基于Labview的調(diào)用windows程序源碼分享

    基于Labview的調(diào)用windows程序源碼分享
    發(fā)表于 12-02 11:08 ?96次下載

    自動生成的程序、程序調(diào)用

    本文介紹Motion Solution Wizard自動生成的程序程序調(diào)用,并簡單介紹運動控制工程調(diào)用的運動控制庫文件。 具體操作介紹 1.在項目樹下雙擊“Motion Solut
    發(fā)表于 03-08 15:33 ?427次閱讀

    ifconfig up后內(nèi)核網(wǎng)絡(luò)驅(qū)動做了什么?

    最近在排查個網(wǎng)絡(luò)問題,ifconfig eth0 up 后,網(wǎng)卡link up比較慢。因此,分析了下從ifconfig up 到網(wǎng)絡(luò)驅(qū)動的調(diào)用
    的頭像 發(fā)表于 05-19 15:17 ?1847次閱讀

    分享下ABB機器人調(diào)用例行程序的方法

    在機器人的編程中例行程序調(diào)用是必不可少的,今天來分享一下例行程序調(diào)用的三種方法。
    發(fā)表于 05-25 16:21 ?1w次閱讀
    分享<b class='flag-5'>一</b>下ABB機器人<b class='flag-5'>調(diào)用</b>例行<b class='flag-5'>程序</b>的方法

    如何使用TSMaster調(diào)用外部DLL/LIB程序

    庫,但必須通過定的方法進行封裝。本節(jié)內(nèi)容以調(diào)用NI公司的TDMS文件記錄程序為例,演示封裝DLL庫的方法,而LIB庫的使用與DLL類似,用戶可以在visualst
    的頭像 發(fā)表于 08-16 09:36 ?1127次閱讀
    如何使用TSMaster<b class='flag-5'>調(diào)用</b>外部DLL/LIB<b class='flag-5'>程序</b>