下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工程22子程序指令和局部表变量表1子程序调用指令CALL子程序调用指令CALL将程序控制权交给子程序 SBR_N调用子程序时可以带参数也 可以不带参数。子程序执行完成后,控制权返回到调用子程序的指令的下一条指令。子程序条件返回指令CRET根据它前面的逻辑决定是否终止子程序。要添加一个子程序可以在命令菜单中选择: Edit > In sert >Subrouti ne。在主程序中,可以嵌套调用子程序在子程序中调用子程序,最多嵌套8层。在中断效劳程序中,不能嵌套调用子程序。 在被中断效劳程序调用的子程序中不能再出现子程序调 用。不禁止递归调用子程序调用自己,但是当使用带子程序的递归调用
2、时应慎重。腔错类型aimSBR_NWORD常数财 TCPU221. CPU222, CPU224:0ft|63牙 /CPU224XP fFJCPU22BINBOOLBYTEWORD INTTDWORD.DINTSTRINGy 1, a "m, sm、S4 Th G L,艇瀝VB. IB. QB. MB, SMB. SB. LB. AC. *VD, 3 *AC 常數VW. T, G l艸.OW, MW, SMWb SWb 帥.AG, AIW. VDb *LD. -AC1, fritVD. ID、00、MD. SMDl SO. LD. AC. HC. *VD,*ACV&VB、&a
3、mp;IB. &QB, &MB、ST. SC, &S6. KAI. &AO. &SMBl *vd, g *AC.當敦IIOUTBOOLBYTEWORD, INT DWORD.DINTV, L 0. M. SM2. S, T. C, LVB. IB, QB. MB.SB. LB. AG -VD, *LD; *AC'VW, T、G IWL OW, MW, SMVl SW, LW, AC *VDl *LD, *AC'VD、ID* 00* MDh0D* LB、AC, *VD.*ACfOUTBOOL BYTE WORDh INT DWORD.DIN
4、TV i a "m SM S T C LVB、IB、OB、SMB< SBl L& ACt *VD、*LD; 'AC1VW. Th C, IW. QWh MW、 SMAlLW、AC AQW *VD.*LDh 'AC1VD, ID, QCL MD, SMD2 SD, LD, AC. *VD. *LD, 4AC1图1 :子程序指令的有效操作数1必须偏移1个或1个以上的单位2必须偏移30个或30个以上的单位提示:STEP 7-Micro/WIN为每个子程序自动参加返回指令。当有一个子程序被调用时,系统会保存当前的逻辑堆栈,置栈顶值为1,堆栈的其他值为零,把控制交
5、给被调用的子程序。当子程序完成之后, 恢复逻辑堆栈,把控制权交还给调用程序。因为累加器可在主程序和子程序之间自由传递,所以在子程序调用时, 累加器的值既不保存也不恢复。当子程序在同一个周期内被屡次调用时,不能使用上升沿、下降沿、定时器和计数器指 令。2 带参数调用子程序子程序可以包含要传递的参数。参数在子程序的局部变量表中定义。参数必须有变量名最多23个字符、变量类型和数据类型。一个子程序最多可以传递16个参数。局部变量表中的变量类型区定义变量是传入子程序IN 、传入和传出子程序IN_OUT或者传出子程序OUT。表6-79中描述了一个子程序中的参数类型。要参加一个参数,把 光标放到要参加的变量
6、类型区IN、IN_OUT OUT。点击鼠标右键可以得到一个菜单项选择择。 选择插入选项,然后选择下一行选项。这样就出现了另一个所选类型的参数项。描述IN咎畝隹人了段呼.杲拳数見H接址如:VB10 > b拆定忖奁的ft寵鶴谨刑了熬序,如架 族蛊見问孩JRI i如;*AC1 k h摘叶描定位宦的值浹祐人于程序;卯雄參敢足常救 5; 1占 #1234 > h成苦-卜地hHM aVBlOJH的值謝蛊人了段浮.IN_OLTT指定倉数也槪的值被松到于程曲从子程序的结果値捡崔回刮同样地it16fr12肇*和地州如:SVB100 «允许忡为输忙;输出卷數OUT从子程序柬的站黑值凌返回列搭
7、生窶It位豐.焙数姙 伯訂234和地址址&VB100 . «祀许ItH朗出零数界斗保存了裡爭丘梟一武供订时分配茅在的数值.所以恐 殖住誓疾1|用子程岸时将融直分耐貴出辱数.性It住电诲上屯时“ SET和RESET#令只蛋TEMPfT>j五屈丁祐谨瞰碾购时部*晞器都可M在于网洋中忡沟临时升储舒便用图2 :子程序的参数类型如图2中所示,局部变量表中的数据类型区定义了参数的大小和格式。参数类型如下所示:1. 布尔:该数据类型用于单独位的输入和输出。下例中的IN3是布尔输入。2. 字节、字和双字:这些数据类型分别指明一个1、2或者4个字节的无符号输入或输出参数。3. 整数、双整
8、数:这些数据类型分别指明1、2或者4个字节的有符号输入或输出参数。4. 实数:该数据类型指明一个4字节IEEE浮点值。5.STRING:该数据类型用作一个指向字符串的四字节指针。6.能流:布尔能流仅允许对位输入操作。该变量声明告诉STEP7-Micro/WIN 32此输入参数是位逻辑指令组合的能流结果。在局部变量表中布尔能流输入必须出现在其它类型的前 面。只有输入参数可以这样使用。下例中的使能输入EN和IN1输入使用布尔逻辑。示侧:子程序调用韋牛就序只徒ZtSTL旳需沪焊TL帕妙成扯冠 国为用萍腿從卷人的BOOL齧孜没育“站在1-“碼虽中第卜哉序链第在LADHIFBD细辑器中呈示.因为隹用了
9、Lfftt器电存鯨用件離瀝输人的BO0U6人書救hkMwuik 1只肚显示STL10 0Netwcirkl1 1EH1 1LD10.0CALLSBRO? 101, VB10, ItO, &VB1D0, *AC1,110 1_IIIIIWIhJ?OUTVD2001 1VB10-7D200可以在5 口和FB D中正确显示:1 C*IN3Netwod<.1&IOD.INtlLD100INDVTuL60 0LDiaiLDLG3.7L60.0CALL VD200SBRQ? L63工 VB1GP 11 0T 3VB10Q *AC1图3:子程序调用例如地址参数如IN4处的&VB
10、1O0以一个双字无符号的值传送到子程序。在带常数调 用程序时必须指明常数类型。例如,把值为12345的无符号双字作为参数进行传递,常数参数必须用DW 12345指明。如果参数中缺少了常数描述符,常数可能被当作不同的类型。输 入或输出参数上没有自动数据类型转换功能。例如,如果局部变量说明一个参数具有实型, 而在调用时使用一个双字,子程序中的值就是双字。当给子程序传递值时,它们放在子程序的局部存储器中。局部变量表的最左列是每个被传递参数的局部存储器地址。当子程序调用时,输入参数值被拷贝到子程序的局部存储器。当子程序完成时,从局部存储器区拷贝输出参数值到指定的输出参数地址。数据单元的大小和类型用参数
11、的代码表示。在子程序中局部存储器的参数值的分配如下所示:1.按照子程序指令的调用顺序,参数值分别给局部存储器,起始地址是L0。2.1到8连续位参数值分配一个字节,从 Lx.O到Lx.7。3.字节、字和双字值按照所需字节分配在局部存储器中LBx、LWX或 LDx。在带参数调用子程序指令中,参数必须按照一定顺序排列,输入参数在最前面,其次是 输入/输出参数,然后是输出参数。如果用语句表编程,CAL1L指令的格式是:CALL子程序号,参数1,参数2,,参数例如:于程序和子程序返回指令程序举帳M A1 NI Nklwia k 1r1ISfiEJANetrk 1"在首次打描,刪ffl初妁此1段
12、厅OLDSMQ1CALL SBR_p3R0IMwcirk 1Mid JT1一"旳Mirtwiirlk 2SMO.OT 1M0V_B tN LWOH OUTTVdUNetwork 1力祢可灯使用荼件理回指令在产醴序惱東芝前冠15.LDM14.3CRETNetwork 2卅划枭迴,那段程序倉被昨.LDSMQ0MOVE 10 L VBC图4 :子程序和子程序返回指令例如:帝字符串的子程再调用诙宣鬧依定给定的的人r电制加同帕字神亂宜*扛ft!啊独的地加字村舉的诡独地址昶保对.啓后迹过H!用间摆 丿址*将字特毋地州祐通爭了程睜、了程呼權人寒数的數据晏和赵了袴申辆培了出序林动字符率剩同企宇符串立
13、审也可以垃穗瞬子段序.子程序肉的审需串引用一宜是相同前.mlT卜ENOEN E10our頓'即HMT协呷T -NeiiAork 1U SSCPY AENO MOVDI0.QLi$tring1 - , VB100&V6100. VDfl:F cfv| F.卜INE'<nVjnrunin nur迪n mxd>>JCUT"SlfR?'-Nelw?rk2 ' LD SSCPY AENO MOVDto.iFtrin甲 5 h VB200&VB20Q VDOL 1Mci-MiB 4|EM1Networks '.'L
14、DCALL10左SBRgh *VD0SFR0"EMelwork 1LD &M0.CSSCPY *LD0, VB30Q4iETP 亠TWr"LD liEKEJl UHBLB1图5 :带字符串的子程序调用举例1:设计求圆周长得子程序,输入量为直径小于 32768的整数,输出量为圆周长双字 整数。在10.0的上升沿调用该子程序,直径为 10000mm运算结果存放在 VD10中,设计 出程序。主程序:网绪 1Metwork TitleNetvwrk Ccnrifnent启动:山0llI r I5ER_0 EMDiameter Circle-VD101 " 1 1 r 1+10000-地址注释启动10.0启动按囱子程序:娈量类型数据类型ENINBOOLLWODiameleININTIN_OUTLD2CircfeOUTDINTD7TEM1TEMPDINT|举例2:设计求V存储区连续的假设干个字的累加和的子程序,在主程序中调用它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年个人房产抵押权抵押权转让合同3篇
- 2025年度个人贷款担保转让合同4篇
- 2025版住宅室内精装修与装饰工程施工合同5篇
- 人类的起源和发展课件2
- 出租车行业环保措施考核试卷
- 团队建设力量培养项目计划书考核试卷
- 印刷业科技创新与成果转化考核试卷
- 二零二五年度艺术品交易居间代理合同样本3篇
- 2025年创业创新贷款协议
- 2025年合作知名作者的高需求小说电子书协议
- 广东省佛山市2025届高三高中教学质量检测 (一)化学试题(含答案)
- 人教版【初中数学】知识点总结-全面+九年级上册数学全册教案
- 2024-2025学年人教版七年级英语上册各单元重点句子
- 2024年九年级语文中考名著阅读《儒林外史》考前练附答案
- 抖音丽人行业短视频直播项目运营策划方案
- 2024年江苏扬州市邗城文化旅游发展有限公司招聘笔试参考题库含答案解析
- 小学六年级数学100道题解分数方程
- 社区获得性肺炎护理查房内科
- 浅谈提高中学生历史学习兴趣的策略
- 项目管理实施规划-无锡万象城
- 浙大一院之江院区就诊指南
评论
0/150
提交评论