恭喜,你发布的帖子
发布于 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区没有使用临时变量,
具体原因不明。
基础知识,高手免观。
请填写推广理由:
分享
只看
楼主