GE PAC CALL指令说明及应用举例.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GE PAC CALL指令说明及应用举例

南 阳 理 工 学 院 可编程控制器GE(期末作业) 题 目: 班 级: 学 号: 姓 名: 完成日期 2015 年 5 月 RX3i CALL指令说明[1] 一 CALL指令格式 通过调用子程序(CALL)指令可以实现模块化程的功能。CALL指令可以使程序转入特定的子程序块。如图1所示。 图1 CALL指令 二 指令功能 2.1 梯形图 2.1.1 无参数的调用 打开Proficy Machine Ediion 的开发软件环境,建立一个新的工程,点开编辑程序的 Logic,选用CALL指令,注意红色标记的 CALL 指令。 图2 无参数的调用 2.1.2 带参数调用 可以调用一个带参数的外部子程序或者一个参数子程序,可以有7个输入和8个输出参数。 打开Proficy Machine Ediion 的开发软件环境,建立一个新的工程,点开编辑程序的 Logic,进行编写带参数的程序,选用CALL指令。 图3 带参数调用设置 2.1.3带参数调用子程序的参数设置 对带有参数调用子程序的使用,PAC软件中程序编写应该注意设置参数,结合自己编写的程序来设置Inputs中的 Data Type(数据类型),Pass By(经过)如图4所示和Outputs 中的Data Type(数据类型)进行选定(注意图片中红色标记的为选择设置内容)。如图5所示: 图4 Intputs参数的设置 图5 Outputs参数的设置 2.1.4 总结 当CALL 功能块接收能流,它将使逻辑执行立即跳转到目的程序块,外部子程序(带参数或无参数),或参数子程序并执行。该子程序执行结束后,控制立即返回在CALL 指令之后的原调用点。 注意: ①一个CALL_MAIN块或一个带参数块。但不能在一个外部块中使用。 ②不能调用一个_MAIN块。 ③执行调用之前,被调用的块必须存在。 ④一个已知块的调用和被调用的次数没有限制。 ⑤通过调用块本身可以形成递归子程序。当堆栈容量配置为默认值(64K),保证在“应用堆栈 ⑥溢出”错误发生之前8个嵌套调用中最小一个调用。 ⑦当一个程序块、带参模块或外部C块的Y0参数返回ON 时,CALL向右传递能流,当返回为OFF时,CALL不向右传递能流。 2.2 Call 操作数 2.2.1 块名称: 图6 CALL 块名称 解释:块名称,要跳转到的块名称不能调用 _MAIN。一个程序块或者一个带参数能调用本身。 2.2.2 用于带参数块调用[输入参数(0 - 7);输出参数(1 - 8)] 2.2.2.1 关于外部(C)块的注意: 必须定义每个外部C 块参数的TYPE, LENGTH,和NAME。有效数据类型,数据范围和每个参数的存储区域都在外部块的写文本中有规定。对任何参数数据流都是允许的。更多的信息见第6 章的外部块部分。 2.2.2.2 关于带参块的注意 必须定义每个参数的TYPE, LENGTH 和NAME。CALL 指令中的有效操作数包括变量、流和间接参考。输入操作数也可以是常量。如果一个形式参数是一个BOOL 数组,且其长度是16 的倍数,那么残留在字组存储器中的变量或数组可以作为一个操作数传递到带参数块中。例如,一个带参数块有一个数据类型为BIT,长度为48 的形式参数Y1,可以给Y1 送一个长度为3 的字组。对所有带参数块,BOOL 参数Y0 是自动定义的,可以用于带参数块的逻辑中。当带参数块暂停且Y0 是ON,CALL 向右传递能流。如果Y0 是OFF,CALL 断开能流。带参数块不需要输入和输出的数量相同。 2.3 如何调用程序子程序 在程序逻辑中_MAIN 块和其他块中调用后,程序块执行。在本例中,LD_BLK1 一直被调用。可以设定程序块的调用条件,在输入量%I00500 和输出量 %Q00100 为ON 时,调用LD_BLK2。如图7所示。 图 7 调用子程序的设置 2.4 嵌套调用 只要有足够的执行站空间,CPU 就允许进行嵌套调用。如果没有足够的站空间支持程序块调用,会产生一个”堆栈溢出”故障。这种情况下,CPU 不能执行这个程序块。CPU 会将这个模块的所有二进制输出设为FALSE,并且继续执行程序块调用指令之后的程序。 注意: 由两种方式可以在没有足够堆栈空间时停掉CPU。最好的方法是

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档