西門子840d 子程序問題求教
參數傳遞問題,希望有經驗的朋友給個幫助主程序:
LB_1234(1) ;調用子程序
M30
子程序LB_1234:
proc LB_1234(int type)
if ($p_sbupar==true )
gotof xxx
else
gotof xxx
…
…
…
ret
如果主程序內不賦參數傳遞,程序可運行。一旦賦值了參數傳遞,主程序就報錯未激活未定義之類。感覺賦值子程序需要激活某參數或權限之類的,望高手解答。
主程序里没定义 螺旋线 发表于 2015-8-25 20:05 static/image/common/back.gif
主程序里没定义
還要定義什麼?
wangice 发表于 2015-8-25 21:00 static/image/common/back.gif
還要定義什麼?
所以说啊,看书要仔细。
书上写的很清楚,要用参数传递的子程序调用,要在主程序里先声明,用EXTERN。
你写的子程序就是抄书上的,虽然没抄全。但为什么不把主程序抄全?
而且报警也提醒得很清楚啊。
螺旋线 发表于 2015-8-25 23:33 static/image/common/back.gif
所以说啊,看书要仔细。
书上写的很清楚,要用参数传递的子程序调用,要在主程序里先声明,用EXTERN。
...
需要在主程序中聲明嗎?
很多使用西門子系统的機床製造商,在系统內添加了很多自己製作的循環程序,這些程序在運行中也是可以賦值的,甚至可以在MDA模式下只運行賦值的子程序這一條指令,這個過程中也沒有對賦值有過任何說明。
不知道他們是通過什麼方式實現的。
西門子標準循環指令CYCLE81(,,,),在使用中有誰對括號內的賦值有聲明嗎?唯一的區別是,不賦值或者關鍵項未附,該程序無法運行。 請不要無腦的抄書,我知道在主程序開始时聲明EXTERN加類型就能使子程序傳遞參數了。
但是為什麼有的程序不用聲明,他們是使用什麼方法? 怎麼區分是循環或者不是循環的子程序? 我記得我分別存在製造商循環、標準循環和子程序里,都不能直接賦值調用。 嗯,這個界面是Power line的老界面了,我們現在已經開始用Solution Line了。
明天我回去找找看試一下,多謝指點。
页:
[1]
2