自动化论坛
标题:
西门子PLC s7-300子程序是如何实现参数传递?
[打印本页]
作者:
lynn1234
时间:
2013-8-7 10:54
标题:
西门子PLC s7-300子程序是如何实现参数传递?
西门子的一个资料里找到的有关FC的基本数据类型的参数传送机理的图:
[attach]373[/attach]
下面是有关的文字说明:
传递机理
随着调用指令CALL,STL/LAD/FBD编辑器首先根据参数列表中给出的实际参数,计算交叉区域指针,并在FC调用指令之后立即存贮这些指针。
此时,如果在该FC内部访问形式参数(比如:A On_1),CPU就根据存储在B堆栈中的返回地址确定该FC调用指令。然后根据相关的参数列表,FC就可确定与形式参数对应的实际参数的交叉区域指针。于是,通过这个指针就实现了对实际参数的访问。
这种传递机理与”按引用调用”相一致,如果在某一FC中访问了形式参数,那么,结果也访问了相应的实际参数。 .
这种通过指针的访问机理要求:
在FC调用中,所有的块参数都必须赋值。
在参数声明里,不能对块参数进行初始化。
注意事项
如果是用DB中的实际参数来对块参数进行赋值,或者传递的是复杂类型参数,那么,参数传递将变得更加复杂。
下面的文字来源于STEP7的FC的在线帮助:
将实际参数分配给形式参数:
FC所使用的输入、输出以及输入/输出参数作为指针保存到调用FC的逻辑块的实际参数中。
通过地址(指针跨过区域边界指向目标)访问FC参数。当数据区(数据块)地址或调用块的局部变量用作实际参数时,实际参数的副本将临时保存到用于传送参数的调用块的本地数据区中。
作者:
dicky77
时间:
2013-10-5 12:25
这非常有用!
作者:
nancy12408
时间:
2013-11-1 21:53
这个非常不错
作者:
PLC回收
时间:
2014-3-29 17:06
长期高价回收全新西门子PLC及模块产品(6ES7 200/300/400)6GK/6EP/6DD/6AV 模块及cpu等各类产品及二手拆机成色新功能好均可全面高价回收,回收广,价格高诚信好,如有工程余货个人闲置的朋友们请联系本QQ、2896746509手机 13777276345李
欢迎光临 自动化论坛 (https://bbs.ca168.com/)
Powered by Discuz! X2.5