wangice 发表于 2015-8-25 17:42:31

西門子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:18

主程序里没定义

wangice 发表于 2015-8-25 21:00:21

螺旋线 发表于 2015-8-25 20:05 static/image/common/back.gif
主程序里没定义

還要定義什麼?

螺旋线 发表于 2015-8-25 23:33:54

wangice 发表于 2015-8-25 21:00 static/image/common/back.gif
還要定義什麼?

所以说啊,看书要仔细。
书上写的很清楚,要用参数传递的子程序调用,要在主程序里先声明,用EXTERN。
你写的子程序就是抄书上的,虽然没抄全。但为什么不把主程序抄全?
而且报警也提醒得很清楚啊。

wangice 发表于 2015-8-26 05:07:05

螺旋线 发表于 2015-8-25 23:33 static/image/common/back.gif
所以说啊,看书要仔细。
书上写的很清楚,要用参数传递的子程序调用,要在主程序里先声明,用EXTERN。
...

需要在主程序中聲明嗎?
很多使用西門子系统的機床製造商,在系统內添加了很多自己製作的循環程序,這些程序在運行中也是可以賦值的,甚至可以在MDA模式下只運行賦值的子程序這一條指令,這個過程中也沒有對賦值有過任何說明。
不知道他們是通過什麼方式實現的。

wangice 发表于 2015-8-26 05:29:01

西門子標準循環指令CYCLE81(,,,),在使用中有誰對括號內的賦值有聲明嗎?唯一的區別是,不賦值或者關鍵項未附,該程序無法運行。

wangice 发表于 2015-8-26 21:00:23

請不要無腦的抄書,我知道在主程序開始时聲明EXTERN加類型就能使子程序傳遞參數了。
但是為什麼有的程序不用聲明,他們是使用什麼方法?

wangice 发表于 2015-8-28 21:10:36

怎麼區分是循環或者不是循環的子程序?

wangice 发表于 2015-8-29 22:38:30

我記得我分別存在製造商循環、標準循環和子程序里,都不能直接賦值調用。

wangice 发表于 2015-8-30 20:47:17

嗯,這個界面是Power line的老界面了,我們現在已經開始用Solution Line了。
明天我回去找找看試一下,多謝指點。
页: [1] 2
查看完整版本: 西門子840d 子程序問題求教