ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:498.97KB ,
资源ID:27752807      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27752807.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(GE PAC CALL指令说明及应用举例.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、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 带参数调用可以

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参数的设

3、置图5 Outputs参数的设置2.1.4 总结当CALL 功能块接收能流,它将使逻辑执行立即跳转到目的程序块,外部子程序(带参数或无参数),或参数子程序并执行。该子程序执行结束后,控制立即返回在CALL 指令之后的原调用点。注意: 一个CALL功能块能在任何程序块中使用,包括_MAIN块或一个带参数块。但不能在一个外部块中使用。不能调用一个_MAIN块。执行调用之前,被调用的块必须存在。一个已知块的调用和被调用的次数没有限制。通过调用块本身可以形成递归子程序。当堆栈容量配置为默认值(64K),保证在“应用堆栈溢出”错误发生之前8个嵌套调用中最小一个调用。当一个程序块、带参模块或外部C块的Y0

4、参数返回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 关于带参块的注意 必须定义每个参

5、数的TYPE, LENGTH 和NAME。CALL 指令中的有效操作数包括变量、流和间接参考。输入操作数也可以是常量。如果一个形式参数是一个BOOL 数组,且其长度是16 的倍数,那么残留在字组存储器中的变量或数组可以作为一个操作数传递到带参数块中。例如,一个带参数块有一个数据类型为BIT,长度为48 的形式参数Y1,可以给Y1 送一个长度为3 的字组。对所有带参数块,BOOL 参数Y0 是自动定义的,可以用于带参数块的逻辑中。当带参数块暂停且Y0 是ON,CALL 向右传递能流。如果Y0 是OFF,CALL 断开能流。带参数块不需要输入和输出的数量相同。2.3 如何调用程序子程序 在程序逻辑

6、中_MAIN 块和其他块中调用后,程序块执行。在本例中,LD_BLK1 一直被调用。可以设定程序块的调用条件,在输入量%I00500 和输出量 %Q00100 为ON 时,调用LD_BLK2。如图7所示。图 7 调用子程序的设置2.4 嵌套调用只要有足够的执行站空间,CPU 就允许进行嵌套调用。如果没有足够的站空间支持程序块调用,会产生一个”堆栈溢出”故障。这种情况下,CPU 不能执行这个程序块。CPU 会将这个模块的所有二进制输出设为FALSE,并且继续执行程序块调用指令之后的程序。注意: 由两种方式可以在没有足够堆栈空间时停掉CPU。最好的方法是增加程序逻辑来测试自诊断位%SA38,以检测

7、用户程序是否发生故障。检测到故障后,可以用SVC_REQ 13 停掉CPU。另一个方式是增加逻辑检测模块没有正确执行的信号,然后调用SVC_REQ 13 停掉CPU。除了调用的模块有特别多参数的情况,一般能支持8 层以上的调用。能进行多少层调用受几个因素的影响,包括程序块数据流量(非布尔型),程序块调用的特殊功能以及这个块中所定义的参数的类型和数量。如果程序块没有最大限度的使用堆栈资源,就有可能支持多于8层的嵌套调用。嵌套调用以_MAIN 块为第1 层,如图8所示:图 8 嵌套调用的方式2.5 程序块 PAC 系统支持的四种程序块(如图9所示):程序块类型本地数型编程语言程序块大小参数程序块有

8、自己的本地数据LDST128 KB0 输入1 输出参数化程序块从调用者那继承本地数据LDST128 KB63 输入64 输出函数块有自己的本地数据LDST128 KB63 输入64 输出内部成员变量无限制外部块从调用者那继承本地数据C用户内存容量极限(10 MB)63 输入64 输出图 9 程序块PAC 系统程序块类型自动提供1 个OK 输出参数.用来显示模块中的OK 参数的名称为Y0。程序块内的逻辑可以读写Y0 参数。程序块调用时,Y0 参数自动的初始化为TRUE。除非在程序块内将Y0 设为FALSE,否则调用的程序执行完以后会有正电流从调用指令行输出,对于所有的程序块类型,输入参数的最大数

9、量都比输出参数的最大数量少1 个。因为程序块的使能输入不算做一个参数。这个输入被LD 语言用来确定是否调用这个程序块,但是即使这个块被调用,使能也不作为一个参数进入这个模块。模块结构的程序执行时,_MAIN 块自动执行。其他块由_MAIN 块,其他块或者自身的程序调用执行。下面例子中,%M00001 为ON 时,执行ProcessEGD 程序块(图10):图 10 ProcessEGD 程序块2.6 CALL指令执行如下功能(图11): 图11 CALL 指令执行功能RX3i CALL指令应用举例三 指令举例例一: 利用子程序的调用实现如下功能(不带参数的子程序调用):(1)4个输出(Q000

10、01Q00004),初态为四个输出均闭合(2)当I00001闭合,Q00001接通;(3)当I00002闭合,Q00002接通;(4)当I00003闭合,Q00003接通;(5)当I00004闭合,Q00004接通;1.1 在PME软件中引入子程序的方法:在鼠标点击Logic之后右击Program Block,接着把鼠标移动到New上选择LD Block,子程序的模块即会出现。如下图:图1-1 PME软件中子程序的引入方法1.2 以1.1的方法分别引入子程序G1,G2,G3,G4.并链接梯形图:当主函数调用子程序G1时,Q00001接通,Q00002、QQ00003、Q00004复位。图1-2

11、 子程序G1的梯形图当主函数调用子程序G2,Q00002接通,Q00001、QQ00003、Q00004复位。图1-3 子程序G2的梯形图当主函数调用子程序G3,Q00003接通,Q00001、QQ00002、Q00004复位。图1-4 子程序G3的梯形图当主函数调用子程序G4,Q00004接通,Q00001、QQ00002、Q00003复位。图1-5 子程序G4的梯形图当接通I00001,调用子程序G1;当接通I00002,调用子程序G2;当接通I00003,调用子程序G3;当接通I00004,调用子程序G4。图1-6 主程序1.3 以调用子程序G3为例,以下是主程序和子程序的运行结果:主程

12、序:注释:当I00003接通时,调用子程序G3子程序G1:注释:当I00003接通时,子程序G1中Q00001,Q00002,Q00004复位(如上图)。子程序G2:注释:当I00003接通时,子程序G2中Q00001,Q00002,Q00004复位(如上图)。子程序G3:注释:当I00003接通时,子程序G3中Q00001,Q00002,Q00004复位,Q00003置位(如上图)。子程序G4:注释:当I00003接通时,子程序G4中Q00001,Q00002,Q00004复位(如上图)。例二: 彩灯控制程序实现如下功能(不带参数的子程序调用): (1)前 64s,16 个输出(Q00001

13、Q00016),初态为 Q00001闭合,其他打开,依次从最低位到最高位移位闭合,循环4次;(2)后 64s,16 个输出(Q00001Q00016),初态为 Q00016和 Q00015 闭合,其它打开,依次从最高位到最低位两两移位闭合,循环 8次。2.1 子程序梯形图的建立: 在子程序init中,把数据1通过MOVE指令给R00100,把16#c000通过MOVE指令给R00102.在子程序youflash中,实现R00100的右移移动长度为1。建立子程序zuoflash,实现R00102的左移,移动长度为2。主程序中,程序运行开始首先调用此程序init,I00001接通,定时器定时,I00002接通,开始调用子程序。2.2 运行结果如下子程序init:子程序youflash:子程序zuoflash:主程序:例三: 实现数学运算等式:6+8+12+10)/2=18(带参数的子程序调用):3.1 程序分析:在带参数的子程序调用中,对梯形图编辑时,先在子程序中建立参数,再对子程序参数进行编辑,最后再在主程序中引入程序块。注释:数据传递,并实现数学运算3.2 参数子程序调用,参数的设置:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1