机械必威体育网址

标题: 西門子840d 子程序問題求教 [打印本页]

作者: wangice    时间: 2015-8-25 17:42
标题: 西門子840d 子程序問題求教
參數傳遞問題,希望有經驗的朋友給個幫助5 j9 X. e, [* y
主程序:# ~# K0 p; f' X! u6 s1 L
LB_1234(1)      ;調用子程序, ^' h+ d$ i4 F9 r5 n6 V! m& f4 F6 }' K
M30' \! ]/ s, K9 X; w; K# X% S; D

4 L6 C2 E8 x2 M' @3 k$ o子程序LB_1234:
  Q% u$ Y, F2 J+ J( C5 Qproc LB_1234(int type)
7 g' J2 r' I- f/ b3 [7 m7 wif ($p_sbupar==true )
" }& A) e: }( f. [& _gotof xxx$ f  y$ M& Z) q
else
( E3 l' j2 X) `" a) W4 ]* }, L* q7 {gotof xxx
0 s+ W% f, D6 G  K, C/ I0 k" g! l2 |) M1 x1 c: D
' _0 L' V5 Q/ O9 r
& v. F5 r2 N5 n1 {
ret
2 A; P% x2 j& S: x  O4 [; s" _* N! F9 G
如果主程序內不賦參數傳遞,程序可運行。一旦賦值了參數傳遞,主程序就報錯未激活未定義之類。感覺賦值子程序需要激活某參數或權限之類的,望高手解答。7 j" O$ b6 ^' F1 y* J) H3 g

作者: 螺旋线    时间: 2015-8-25 20:05
主程序里没定义
作者: wangice    时间: 2015-8-25 21:00
螺旋线 发表于 2015-8-25 20:05 . L6 }$ b- F) H3 t: W/ p# ?2 g; N
主程序里没定义
5 Z1 Z" s2 O8 C' \) ^* l+ d
還要定義什麼?" C3 U1 ], }; |& l

, }4 f9 O% {5 d4 a- w# o7 s7 o
作者: 螺旋线    时间: 2015-8-25 23:33
wangice 发表于 2015-8-25 21:00 , t/ t3 c- w/ |, U5 u
還要定義什麼?
' c0 V0 F8 w* `& Z
所以说啊,看书要仔细。
  q6 C* N' @( B) u/ s- G% S书上写的很清楚,要用参数传递的子程序调用,要在主程序里先声明,用EXTERN。( t$ q2 X; k% u8 S- J  x0 [
你写的子程序就是抄书上的,虽然没抄全。但为什么不把主程序抄全?$ M/ H2 F4 s' @" e, \
而且报警也提醒得很清楚啊。0 z4 H: K* T# O, c; F
5 B& ~: l" p" f8 |& d7 f0 E

作者: wangice    时间: 2015-8-26 05:07
螺旋线 发表于 2015-8-25 23:33
" L1 }) D* j; o5 X0 N0 _所以说啊,看书要仔细。
2 b1 O! a+ W. \5 m书上写的很清楚,要用参数传递的子程序调用,要在主程序里先声明,用EXTERN。/ B3 P  ^/ b0 S: _% E
...

7 p3 w$ W3 |$ o2 r1 ~$ r& i% A需要在主程序中聲明嗎?
& I. M! v8 f" o很多使用西門子系统的機床製造商,在系统內添加了很多自己製作的循環程序,這些程序在運行中也是可以賦值的,甚至可以在MDA模式下只運行賦值的子程序這一條指令,這個過程中也沒有對賦值有過任何說明。
( k# d  L0 `: L) t5 s不知道他們是通過什麼方式實現的。5 ]! z9 ~+ x6 K7 c1 F

作者: wangice    时间: 2015-8-26 05:29
西門子標準循環指令CYCLE81(,,,),在使用中有誰對括號內的賦值有聲明嗎?唯一的區別是,不賦值或者關鍵項未附,該程序無法運行。
作者: wangice    时间: 2015-8-26 21:00
請不要無腦的抄書,我知道在主程序開始时聲明EXTERN加類型就能使子程序傳遞參數了。' P/ Q5 _2 ^1 O6 [  }  r
但是為什麼有的程序不用聲明,他們是使用什麼方法?
作者: wangice    时间: 2015-8-28 21:10
怎麼區分是循環或者不是循環的子程序?
作者: wangice    时间: 2015-8-29 22:38
我記得我分別存在製造商循環、標準循環和子程序里,都不能直接賦值調用。
作者: wangice    时间: 2015-8-30 20:47
嗯,這個界面是Power line的老界面了,我們現在已經開始用Solution Line了。
; T. |+ {( u& z6 o3 X$ q明天我回去找找看試一下,多謝指點。
作者: wangice    时间: 2015-8-31 12:18
很可惜,還是沒成功😭
作者: wangice    时间: 2015-8-31 15:38
給你這個程序尼試試,衹是个程序循環時間記錄程序,可以附在加工程序里。給個郵箱我發你你試試。
作者: wangice    时间: 2015-8-31 15:43
還是貼出來吧,反正也不大
作者: wangice    时间: 2015-8-31 17:38
proc timer(int type)* G# M+ \3 y2 y& Y( s
;(1=360Basic,2=360B or AWD,3=360C)
* _/ v  T  K* E' s) E' ~- ]def int error
$ V7 F6 t, g6 s! K# [def string[35] ld_name1 I7 f1 G) x+ A* @' _

. f9 H1 [/ x# o$ F! Hif ($p_subpar[1]==false) or (type<1) or (type>3)% K  ?, x% d3 F! h0 D. h
  ld_name=("<Unknown>")/ U) ?1 P; H9 o/ o/ Q8 w+ B
    endif# h$ u7 O8 F+ e; p- Y, o5 |
if type==13 E& s1 I7 d8 `" n! z& p4 L! f* J
  ld_name=("<360Basic>")
/ r- s% z$ y# ]5 @' m    endif
2 v+ r6 b# k/ ~# F1 }) aif (type==2) and (r99==57529)
  ]5 e7 F: `7 Q- T/ U: K& Y7 r8 E1 i  ld_name=("<360B>")0 S, K3 b% l. G( P# Q9 W+ @2 m
    endif" z2 T& `: U) M! v5 u& l* O
if (type==2) and (r99==1359)
( Z0 [9 k2 X6 ^* s1 B1 C  ld_name=("<360AWD>"). {2 o2 f8 M8 W1 ?6 [+ @2 Q5 k+ e
    endif
0 |, X$ X2 ~- }8 Gif type==3
/ i) s0 }$ s7 U6 _  ld_name=("<360C>")
* u9 I0 F8 k: j) Z) H2 z    endif
" j  Z# F  [; m  x0 T* p  C8 C7 h( ^" w! p- ?4 {! G; _. [
write (error,"/_n_spf_dir/_n_cycle_timer_spf",""<<ld_name<<" Running:"<<$a_year<<"."<<$a_month<<"."<<$a_day<<"  "<<$a_hour<<":"<<$a_minute<<":"<<$a_second )
+ S  t; K( @% S  t  l/ H6 _$ r& G' L; d, ?; s
r600=$a_hour*3600+$a_minute*60+$a_second+$a_msecond/1000-r600
( T5 ^5 Y- A1 J# b" ?if r600<0( j7 T2 ]1 }* y. v2 ^
r600=r600+24*3600( Q$ J1 M: z2 C# W% r
endif, k* e; T3 P; F' D
if r600>3600
8 e  w' s$ J4 Tr600=0$ Z$ B2 _3 X( o( w' V+ h5 h$ `
endif
9 X4 |0 f2 P, `. r$ Ir600=round(r600)5 D, k) i' W) G1 w

% X& t8 f5 T8 j. f8 l: Q, Ywrite (error,"/_n_spf_dir/_n_cycle_timer_spf","Cycle time :  "<<r600<<" Sec")! v8 U% a) j* r8 B7 N- d" c- P

; \7 L9 h/ T, E9 C% P( M# [- h1 d3 Uwrite (error,"/_n_spf_dir/_n_cycle_timer_spf","Machining Time:  "<<round($ac_timer[1])<<" Sec " )
/ `0 w( X" x/ n2 s) X5 k
& D9 f2 A' P& X* s# b2 Y$ Wr600=$a_hour*3600+$a_minute*60+$a_second+$a_msecond/1000
9 H, y' c9 k7 R  Oret




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4