找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
系统功能块SFC1“READ-CLK”中参数CDT数据类型为DT,存储区可以为数据块DB和工作存储区中临时本地数据区(L堆栈),这里要注意在调用数据块时必须指定完整的绝对地址。
功能FC中的临时变量TEMP只是在程序执行过程中所需要的中间状态暂存单元,在程序执行完成状态不需要保存,TEMP变量为临时局部数据存储区,在CPU内部,由CPU根据所执行的程序块的情况临时分配,即它是可以在调用FC时直接使用而由CPU在工作存储区中临时本地数据区(L堆栈)中分配给它用,无须指定;但局部变量声明表中参数(IN、OUT、IN_OUT)是可在调用块(如FC、FB)和被调用块间传递数据(这里指DB),是逻辑块的接口。由于FC没有自己的背景数据块,因此FC的形式参数如OUT在调用时都必须赋予实际参数。在调用带参数的FC(如这里OUT)时,参数位置均为红色问号,必须指定实际值,否则程序不能保存,不能保存下载。由于FC的形式参数OUT不能在其变量声明表中赋予实际值,必须在共享数据块DB中提供其与FC中的参数变量一一对应的实际参数,而且必须指定,而数据块的调用时,必须指定绝对地址,如DB1.OUT0. 所以你直接在SFC1的参数CDT中输入OUT是不可以的,没有赋予实际参数值;
如果你在FC1块中调用SFC1,如果在CDT中直接输入参数OUT0,虽然CDT和OUT0的书籍类型都为DT,那么就会显示“Illegal Parameter Assignment”(非法参数指派),你必须在DB1编辑窗口现有的结构框架下输入需要的变量OUT0,选择参数类型DATE_AND_TIME,输入初始值,然后保存;在FC中的调用SFC1中参数CDT中输入DB1.OUT0(指定FC形式参数OUT0的实际数据的绝对地址),然后保存即可。
如果你要求多次调用这个功能FC,那么必须要求不能输出到同一个DB块的同一个地方,有点困难,因为无论FC或FB,其里边的参数都是形式参数,调用时对每个参数必须指对DB中对于的实际参数数据;对于FB可以建立多个背景数据块,但对于FC来说,只能利用共享数据块
在编写FC和DB后,必须把数据块与程序块一起下载到CPU,才可能被程序调用。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城