{}

我们的品牌

欢迎访问施耐德电气网站

欢迎访问我们的网站。
搜索常见问题解答
somachine basic 中的 ASCII和浮点型转换的方法?
问题描述:
somachine basic 中的 ASCII和浮点型转换的方法?

所属产品线:
EcoStruxure Machine Expert - Basic(原SoMachine Basic)

解决方法:

上图中显示ASCII和浮点型相互转换的方法

  • 该函数始终首先读取最高有效字节。

    其中ASCII转浮点数注意的是:

  • ascii占用的是7个字的地址空间,需要用户事先分配

  • 不在 ['0' - '9'] ([16#30 - 16#39]) 范围内的任意 ASCII 字符均可用作“结束”字符,但下列字符除外:

    • 点“.”(16#2E);

    • 减号“-”(16#2D);

    • 加号“+”(16#2B);

    • 指数“e”或“E”(16#65 或 16#45)。

  • ASCII 字符格式可采用科学计数法(例如,“-2.34567e+13”)或十进制表示法(例如,“9826.3457”)

  • 在溢出情况下(计算结果 >3.402824E+38 或 -3.402824E+38):

    • 系统位 %S18(算术溢出或检测到的错误)将设为 1,

    • %SW17:X3 设为 1,

    • 并返回值 +/- 1.#INF(+ 或 - 无穷值)?

  • 如果计算结果介于 -1.175494E-38 和 1.175494E-38 之间,则结果舍入为 0.0。

  • 如果操作数不是一个数字:

    • 值 1。返回 #QNAN,

    • 位 %SW17:X0 设为 1。

其中浮点数转ASCII注意的是:

  • 该函数始终首先写入最高有效字节;

  • 采用转换科学计数法进行表示;

  • “无穷”或“非数字”结果返回字符串“NAN”;

  • 结束字符为“Enter”(ASCII 13);

  • 该功能自动确定应该用 ASCII 值填充多少 %MW;

  • 转换精度为 6 位

  • 不允许使用科学计数法。

对于溢出位%s18 和%sw17:x3的关系

%SW17     浮点运算的缺省状态

在浮点算术运算中检测到错误时,会将位 %S18 设置为 1,并根据以下编码更新 %SW17 的缺省状态:

  • 位 [0]:运算无效,结果不是数字 (NaN)

  • 位 [1]:保留

  • 位 [2]:以 0 为除数,结果无效(负无穷大或正无穷大)

  • 位 [3]:结果的绝对值大于 +3.402824e+38,结果无效(负无穷大或正无穷大)



是否有帮助?