发布于 2013-10-16 23:54:08
9楼
从根本上讲,PLC技术是以计算机技术的发展为依托的,而高级语言的变化和发展恰恰体现和运用了计算机技术的进步,所以PLC的设计和运行机理,也参照了高级语言的制定规则以及使用方法。
简单的以非安全数据类型的C语言举例说明,如C语言中如果在一个函数的声明中不显示地声明返回值的类型,它就默认返回整形。具体这个函数能不能实现你原本的预期,返回一个你希望看到的“数据类型”,那就要取决于编译器的“心情”。
在程序中,不建议使用隐式声明,一方面它会有存在“非预期值”的隐患,另一方面也不利于程序清楚地表达我们的意图。
再有函数的返回值问题,不管FC执行的怎么样,多少都要给个确定的值,不管是1是0还是-1,还是多少多少,这有点像人家借了你的钱,到了原本约定还钱的日子,却什么动静都没有,不见钱,也不见句话,这就闹心了!
而PLC中,如数据传送指令,在S7-200系列中,传送命令有,MOVB,MOVW,MOVD,对不同数据长度的数据类型作处理,而到了S7-300/400系列,只有一个MOVE命令,其输入IN对应数据类型有,BYTE,WORD,DOUBLE WORD,在STL模式下,我们知道和MOVE的功能相同的指令是装载L和传送T,其中关键是要用到一个叫“累加器”的类似“中间人”“中介”的32位寄存器,为什么是32位?因为它像个大口袋一样,可以把BYTE,WORD,DOUBLE WORD统统装得下。当把一个双字D传送入一个字W,由于内存地址溢出,这时W中的数据是不是我们原本想要传送的D中的数据,这就要看原本数据的大小了,这里我们可以看出,在这里数据的类型(或者说叫长度)取决于对这个数据操作时存储它使用的存储空间有多大。
数据类型使用中常出现类型不匹配的现象,个人认为类型匹配在某种程度上讲,就是存储空间长短大小的匹配,也常常伴随着“边界”问题。
其实,计算机语言中的很多东西,主要是一些想法,我们也可以像TIA Portal中的项目移植一样,也移植到PLC使用中,多少总归有些益处吧。
一口之言,仅供参考。