本文是构建与分析用户自定义功能块(UDFB)系列引导式学习文章的一部分。
规范文章:使用西门子TIA门户构建用户自定义功能块(UDFB)
学习伴侣(问答):探索所有问题
您正在阅读:问题12
状态变量应选用无符号整型还是双精度浮点型?
说明
示例中采用了无符号整型作为状态变量。无符号整型能容纳的数值范围是多少?对本应用而言是否过大?
- USINT:0–255
- UINT:0–65,535
- UDINT:0–4,294,967,295
答案
无符号整型为16位值,最多可表示65,536个(从零开始计数)独立状态。显然,除非是运行在同等性能硬件上的超大型状态机,否则这个容量都显得过大。
次优选择是8位无符号短整型,最多支持256个独立状态。理论上,这能节省状态变量和状态标识常量(如usiStateFault)的内存占用。另一种思路是反其道而行,采用双精度整型以获得4,294,967,297个独立状态。
虽然我们不清楚S7-1200的底层硬件架构或代码结构,但可以推测其基于现代32位核心。因此可以预期,包括8位变量在内的所有操作都将由CPU以32位单元执行。
由此可见,使用短整型甚至无符号整型并无明显优势。实际上,从防止错误的角度考虑,将所有计算升级为无符号双精度整型更具实用意义。