回复:We are not the same:the use of ANY in TIA-SCL and TIA-STL

'Razor

西门子1847工业学习平台

  • 帖子

    3208
  • 精华

    41
  • 被关注

    222

论坛等级:至圣

注册时间:2008-03-31

钻石 钻石 如何晋级?

发布于 2017-11-03 18:38:39

3楼

刚打开帖子中的图片看了下,比较模糊,有些看不清,那就再用文字说明一下。

反感中文的同志就不要看了,看上面英文就行了,指不定又得反感英文了。


此处应用背景为FC调用FC,父FC(上级FC)和子FC(下级被调用的)的接口中有数据类型为ANY的参数需要在父子FC间进行传递,这里要说的就是在不同编辑语言环境下(STL和SCL)应用的区别。


1、直接副本传递的应用

STL环境下不可以直接从父FC的input传递到子FC的input,或者从父FC的output传递到子FC的output,SCL环境下可以直接传递。

直接结果就是,如果仅仅是进行参数的传递工作,那么建议直接使用SCL编辑环境,代码量少,工作量就小,直观、简洁高效。


2、需要更改再传递的应用

STL和SCL下的工作量差不太多,都是需要运用“middle-layer principle"来进行过渡,具体来说,就是在接口区的”temp"下,建立“中间层”,再对其解析,将进行修改处理后的ANY传送到“中间层”,再用“中间层”对子FC的管脚进行设置操作。SCL中稍显繁琐一些,要使用AT函数再搞一下,最后使用“结构”的形式。

STL下要使用一条一条的装载指令L和传送指令T,将值送到TEMP区变量中,反观SCL,一条赋值指令就搞定了,如#tempSource : = #Source; 换个角度说,STL的处理更“微观”像是切片,让你看得见一点一点具体发生了什么,而SCL的处理要稍显“宏观” 一些,直接打包处理了。


3、块编译后局部数据的长度大小

不管是STL下还是SCL下,在TEMP下创建临时变量额外开辟的空间看上去大小都是一样的,每个ANY都占用10个Byte大小,但是在编译FC后在信息中看到的却不一样,貌似都在实现数组的复制功能大前提下,使用SCL编辑的块的局部数据长度要比STL编辑的块还要长一些,尽管SCL下在TEMP区没有使用临时变量,

具体原因不明。


基础知识,高手免观。

少即是多
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54622条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。