KUKA 通信子程序 p00src 注释Word格式文档下载.docx
《KUKA 通信子程序 p00src 注释Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《KUKA 通信子程序 p00src 注释Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
CASE#INIT_EXT
INIT_EXT()
CASE#EXT_PGNO
EXT_PGNO(PGNO_FUNCT
)
CASE#CHK_HOME
CHK_HOME()
CASE#EXT_ERR
EXT_ERR(P_ID[],E_NO)
ENDSWITCH
END
;
********************************
函数:
初始化外部接口
BOOLERROR
INTN
PGNO_ERROR=0
CHECKHOME
INITPGNO_REQUNDAPPL_RUN
IF(PGNO_REQ>
0)THEN
$OUT[PGNO_REQ]=FALSE
ENDIF
IF(PGNO_REQ<
$OUT[-PGNO_REQ]=TRUE
IF(APPL_RUN>
$OUT[APPL_RUN]=FALSE
IFPLC_ENABLEAND(ERR_TO_PLC>
$OUT[ERR_TO_PLC]=FALSE
IFREFLECT_PROG_NR==1THEN
FORN=0TOPGNO_LENGTH-1
$OUT[PGNO_FBIT_REFL+N]=FALSE
ENDFOR
$LOOP_MSG[]="
"
*******************
REPEAT
***********************************************************
ERROR=FALSE
IF($I_O_ACTCONF==FALSE)THEN
ERROR=TRUE
P00_MSG(13)
UNTIL($I_O_ACTCONF==TRUE)
PGNO_TYPE
*********************************************************
CASE1,2;
bci-coding,bcd-coding
*****CHECKPGNO_LENGTH*****
IF(PGNO_LENGTH<
1)THEN
ERROR=TRUE;
pgno_length
P00_MSG
(2)
IF(PGNO_TYPE==1)THEN;
bci-coding
IF(PGNO_LENGTH>
16)THEN
IF(PGNO_TYPE==2)THEN;
bcd-coding
PGNO_LENGTH
CASE4,8,12,16
DEFAULT
P00_MSG(3)
*****CHECKPGNO_FBIT*****
IF(PGNO_FBIT<
pgno_fbit
P00_MSG(4)
*****CHECKPGNO_REQ*****
IF(PGNO_REQ==0)THEN
pgno_req
P00_MSG(7)
0)THEN;
activehigh
$OUT[PGNO_REQ]=FALSE;
reset
WAITSEC0.2;
delayforplc
activelow
$OUT[PGNO_REQ*(-1)]=TRUE;
CASE3;
oneoutofn
DEFAULT;
PGNO_TYPEwrongtype
pgno_type
P00_MSG
(1)
UNTIL(ERROR==FALSE)
EXT_PGNO(FUNCT)
Function:
communicationprogram
forexternalmode
DECLFUNCT_TYPEFUNCT
INTI,J,K,L,M,N
BOOLP_RECV
BOOLP_CALC
J=1
K=0
L=1
P_RECV=FALSE
P_CALC=FALSE
FUNCT
CASE#PGNO_ACKN
$OUT[PGNO_REQ*(-1)]=TRUE
$OUT[APPL_RUN]=TRUE
CASE#PGNO_GET
CASE1,2
IF(PGNO_VALID>
WAITFOR
$IN[PGNO_VALID]==FALSE
IF(PGNO_VALID==0)THEN
$EXT_START==FALSE
IF(PGNO_VALID<
$IN[PGNO_VALID*(-1)]==TRUE
$OUT[PGNO_REQ]=TRUE
$OUT[PGNO_REQ*(-1)]=FALSE
FORI=0TO
PGNO_LENGTH-1
IF$IN[PGNO_FBIT+I]==TRUETHEN
$OUT[PGNO_FBIT_REFL+I]=TRUE
ELSE
$OUT[PGNO_FBIT_REFL+I]=FALSE
WaitforPGNO_VALID=True"
UNTIL
$IN[PGNO_VALID]==TRUE
Waitfor$EXT_START=True"
$EXT_START==TRUE
WaitforPGNO_VALID=False"
$IN[PGNO_VALID*(-1)]==FALSE
PGNO=0
CASE1
IF$IN[PGNO_FBIT+I]THEN
PGNO=PGNO+J
J=J*2
CASE2
PGNO_LENGTH-1
STEP
4
N=0
FORM=ITO
I+3
IF$IN[PGNO_FBIT+M]THEN
N=N+J
$OUT[PGNO_FBIT_REFL+M]=TRUE
IF(N>
9)THEN
PGNO_ERROR=2
EXIT
PGNO=PGNO+N*L
L=L*10
IF(PGNO_ERROR<
>
2)THEN
IF(PGNO_PARITY>
P_RECV=$IN[PGNO_PARITY]
P_CALC=P_CALCEXOR$IN[PGNO_FBIT+I]
IF(P_RECV<
P_CALC)THEN
PGNO_ERROR=1
IF(PGNO_PARITY<
P_RECV=$IN[PGNO_PARITY*(-1)]
NOT(P_CALC))THEN
CASE3
IFPGNO>
0THEN
$IN[PGNO_FBIT+PGNO-1]==FALSE
IFK==0THEN
K=I+1
UNTIL((K<
0)OR(PGNO_ERROR==0))
PGNO=K
CASE#PGNO_FAULT
IFPGNO_ERROR==1THEN
P00_MSG(10)
IFPGNO_ERROR==2THEN
P00_MSG(12)
IFPGNO_ERROR==0THEN
IF(PGNO_TYPE==3)THEN
P00_MSG(15)
P00_MSG(11)
WAITSEC0.5
BOOLH
DECLMSG_TP_MSG
DECLMSG_TEMPTY_MSG
IF($I_O_ACTCONF==TRUE)THEN
EMPTY_MSG={MSG_T:
VALIDFALSE,RELEASEFALSE,TYP#NOTIFY,MODUL[]"
"
KEY[]"
PARAM_TYP#VALUE,PARAM[]"
DLG_FORMAT[]"
ANSWER0}
P_MSG={MSG_T:
VALIDFALSE,RELEASEFALSE,TYP#QUIT,MODUL[]"
P00"
MoveHomeInT1"
PARAM_TYP#KEY,PARAM[]"
$MSG_T=P_MSG
WAITSEC1.0
H=TRUE
IF($IN_HOME==FALSE)THEN
H=FALSE
$MSG_T.VALID=TRUE
HALT
IF(($MODE_OP==#T1)OR($MODE_OP==#T2))THEN
$MSG_T.RELEASE=TRUE
$MSG_T=EMPTY_MSG
RETURN
UNTIL$IN_HOME==TR