如题,最近有人纠结于字符串“魔术数”不能直接填进FB的管脚了,认为是bug,其实,还真不是bug,而是规矩变了。



在博途平台上,直接填写匿名常量(字符串类型)的操作依旧被允许,编译也没有错误,而在S7-200 SMART V3.0(含)之后,这种操作在STEP 7 Micro/WIN SMART V3软件中便被禁用了(其它数字数值倒是还可以),恰如开头所说,不是bug,而是规矩变了。
大家都知道,自V3.0起,开始支持FB+UDT模式,本质是更好地支持模块化开发,放在这个关注层看,这种不再支持字符串“硬编码”的变化,不是坏事儿,而是好事情,它要求用户更关注显式数据类型的定义和使用,更偏重于“配置”的概念,而这也是为了更好的支持模块化复用,以及与SCADA/HMI的协作配合。
也可能你会说,那凭什么它博途就可以?这又涉及自身软硬件配置问题了,博途软件是什么体量?STEP 7 Micro/WIN SMART V3又是什么体量?如果说前者是泰森的话,后者最多也就是邹市明;或者又说,为什么V3.0以前支持?想问一下,对FB+UDT的支持,背后需要做的工作你又了解吗?
一个看起来不起眼的功能,在编译器处理时,可能就需要干很多活,干这些活很可能就影响FB+UDT的工作效率。要求使用带内存地址的具名字符串常量,也是为了给其一个具体的“名分”,固定的处理起来应该比随机的更高效吧。
所以,过新日子,就别去翻老黄历了。
一家之言,仅供参考。