子程序调用2

已锁定

迅影

  • 帖子

    284
  • 精华

    4
  • 被关注

    34

论坛等级:侠圣

注册时间:2012-12-19

钻石 钻石 如何晋级?

子程序调用2

670

3

2022-09-07 08:37:52

上文说到,用户可以把经常用的子程序变为循环,有什么好处?不多:

- 安全,因为存储位置不同,不容易被操作者误删

- 使用方便

哪里方便?下面举例说明

3. 循环
编写个mysub4.spf,内容如下:

proc mysub4(real x_pos, real y_pos)

g01 X=x_pos Y0 F5000

X=x_pos Y=y_pos

X0 Y=y_pos

X0 Y0

M17

把这个子程序拷贝到:

在零件程序中编写mymain.mpf:

mysub4(90,90)

M02

有人说,这个主程序和子程序和之前的例子一样!一样吗?真的一样吗?

不一样!主程序里没有了EXTERN那个语句了,这是循环和子程序的区别,放在循环目录下的子程序,不再需要在主程序中用EXTERN为子程序做声明,可以直接调用。

有人如果按这个例子做,可能会发现执行主程序时,系统有报警说找不到子程序,对的。这里有个需要注意的地方:把子程序拷贝到循环目录下,要重新启动系统,系统才认这个循环

你是不是又会问,如果在子程序目录和循环目录有同名的子程序,而主程序中又有EXTERN的子程序声明,当主程序调用mysub4这个子程序时,系统会执行哪一个呢?有SINUTRAIN软件的,可以试试。

举例说明(很多情况下,资料中没有说的,要自己想办法去测试,学习操作编程使用SINUTRAIN就很好)

在子程序目录下编写个mysub5.spf,如下:proc mysub5

msg("this is sub.")

m0

m17

在循环目录下也编写个mysub5.spf

proc mysub5

msg("this is cycle.")

m0

m17

在主程序目录中编写mymain5.mpf,内容如下:

mysub5

m02

执行这个主程序,屏幕显示:

答案揭晓,执行程序后,在报警信息栏上显示的是“this is sub”,也就是说执行的是子程序目录下的mysub5.spf,而非循环目录下的mysub5.spf!

因此,请注意:

- 用户编写子程序时,不要和机床厂编写的循环重名!或者说提醒机床厂编写循环时,名字要“特殊”些。


补充说明:

msg(“字符串”)语句是显示圆括弧中的字符串
例:msg(“this is sub”)执行这个程序段时,会在报警信息行显示 this is sub,如上图。

例:msg(“R1=”<<R1)执行这个程序段时,会在报警信息行显示R1=123  (如果此时R1的数值就是123的话 )(符号“<<”是将R1数值转换为字符串)


子程序调用2 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25500条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。