- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西门子 _子程序_
子程序
调用指令
本标题讨论下列主题:
使用子程序
如何建立子程序
如何终止子程序
如何调用子程序
嵌套和递归
使用子程序
(返回顶端 )
子程序帮助您对程序进行分块。主程序中使用的指令决定具体子程序的执行状况。当主程序调用子程序并执行时,
子程序执行全部指令直至结束。然后,系统将控制返回至调用子程序网络中的主程序。
子程序用于为程序分段和分块,使其成为较小的、更易管理的块。在程序中调试和维护时,您可以利用这项优势。
通过使用较小的程序块,对这些区域和整个程序简单地进行调试和排除故障。只在需要时才调用程序块,可以更
有效地使用PLC,因为所有的程序块可能无须执行每次扫描。
最后,如果子程序仅引用参数和局部内存,则可移动子程序。为了移动子程序,应避免使用任何全局变量/符号
(I、Q、M、SM、AI 、AQ 、V 、T、C、S、AC 内存中的绝对地址)。如果子程序无调用参数 (IN、OUT或
IN_OUT)或仅在L内存中使用局部变量,您就可以导出子程序并将其导入另一个项目。
欲在程序中使用子程序,必须执行下列三项任务:
· 建立子程序
· 在子程序局部变量表中定义参数 (如果有)
· 从适当的POU (从主程序或另一个子程序)调用子程序
当子程序被调用时,整个逻辑堆栈被保存,堆栈顶端被设为一,所有其他堆栈位置被设为零,控制被传送至调
用子程序。当该子程序完成时,堆栈恢复为在调用点时保留的数值,控制返回调用例行程序。
子程序和调用例行程序共用累加器。由于子程序的使用,对累加器不执行保存或恢复操作。
用参数调用子程序
子程序可能包含交接的参数。参数在子程序的局部变量表中定义。参数必须有一个符号名 (最多为23个字符)、
一个变量类型和一个数据类型。可向子程序交接16个参数或从子程序交接16个参数。
局部变量表中的变量类型域定义参数是否交接至子程序 (IN)、交接至或交接出子程序 (IN_OUT)或交接出子
程序 (OUT)。下表说明子程序的参数类型。欲增加参数条目,将光标放在您希望增加的类型的变量类型域上
(IN、IN_OUT或OUT)。单极鼠标右键,获得选项菜单。选择插入选项,然后选择下一行选项。在当前条
目的下方会显示所选类型的另一个参数条目。
调用参数类型 说明
IN 参数被交接至子程序。如果参数是直接地址 (例如VB10 ),在指定位置的数值被
交接至子程序。如果参数是间接地址,(例如*AC1 ),位于指向位置的数值被交
接至子程序。如果参数是数据常数 (16#1234)或地址 (VB100 ),常数或地址
数值被交接至子程序。
IN_OUT 位于指定参数位置的数值被交接至子程序,来自子程序的结果数值被返回至相同
的位置。输入/输出参数不允许使用常数 (例如16#1234)和地址 (例如VB100 )
。
OUT 来自子程序的结果数值被返回至指定的参数位置。常数 (例如16#1234)和地址
(例如VB100 )不允许用作输出。
TEMP 未用作交接参数的任何本地内存不得用于子程序中的临时存储。
局部变量表中的数据类型域定义参数的大小和格式。下表列出了参数类型。
参数数据类型 说明
布尔 该数据类型用于单位输入和输出。下例中的IN3是布尔输入。
字节、字、双字 这些数据类型分别识别1、2或4个字节不带符号的输入或输出参数。
整数、双整数 这些数据类型分别识别2或4个字节带符号的输入或输出参数。
实数 该数据类型识别单精度 (4个字节)IEEE浮点数值。
字符串 此数据类型被用作字符串的四字节指针
使能位 布尔使能位只可用于位 (布尔) 位。此说明告诉STEP 7-Micro/WIN,这个输入参
数是基于某位逻辑指令组合的使能位结果。布尔使能位输入必须在局部变量表
中最先出现,早于任何其他类型的输入。唯有输入参数可以此方式使用。下例
文档评论(0)