返回主站|会员中心|保存桌面

梅索尼兰Masoneilan阀门(中国)服务商    

梅索尼兰Masoneilan定位器、 减压阀 、调节阀 、过滤器、 转换器

联系方式
  • 联系人:姚经理
  • 电话:18520143666
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 松下PLC使用比较浮点数的时 PLC报警运算错误!
新闻中心
松下PLC使用比较浮点数的时 PLC报警运算错误!
发布时间:2025-10-25        浏览次数:1        返回列表

松下松下 PLC 在进行浮点数比较时出现 “运算错误” 报警,通常与浮点数格式错误比较指令使用不当数据异常(如 NaN、无穷大) 有关。以下是具体原因分析及解决方法:

一、常见报警原因

  1. 浮点数格式不正确松下 PLC 的浮点数需遵循IEEE 754 标准(32 位单精度),若参与比较的数据不是有效的浮点数(如整数直接赋值给浮点数寄存器),会导致格式错误。

    • 例:将D10=123(整数)直接与D20(浮点数)比较,因D10未转换为浮点数格式,触发运算错误。

  2. 比较指令参数错误松下浮点数比较指令(如FCMPFNC224)有严格的参数要求:

    • 源操作数必须是浮点数寄存器(如D寄存器,且已存储有效浮点数)。

    • 目标操作数需符合指令规定(如部分指令要求目标为位软元件YM等)。

    • 若参数类型错误(如用K常数直接比较,未加浮点标识),会触发报警。

  3. 浮点数数据异常参与比较的浮点数为无效值

    • NaN(非数值,如 0÷0、负数开平方)。

    • 无穷大(±∞,如正数 ÷0)。这些异常值会导致比较运算无法正常执行,触发错误。

  4. 寄存器地址越界若比较指令中使用的D寄存器地址超过 PLC 允许范围(如小型 PLC 的D寄存器上限为D1999,却使用D2000),会导致访问错误,间接引发运算报警。

二、解决方法与操作步骤

步骤 1:确认浮点数格式是否正确

  • 整数转浮点数:若参与比较的数据是整数(如传感器采集的整数信号),需先用浮点数转换指令FLT,FNC49)将整数转换为浮点数格式。

    • 例:将整数寄存器D10转换为浮点数存储到D20

      plaintext

    • FLT D10 D20  // D10的整数→D20的浮点数(IEEE 754格式)
  • 常数表示:直接使用浮点数常数时,需在数值后加.E(区分于整数),如123.453.14E2(表示 314.0)。

步骤 2:正确使用浮点数比较指令

松下 PLC 常用的浮点数比较指令为FCMP(32 位浮点数比较),格式如下:

plaintext

FCMP S1 S2 D  // 比较S1(浮点数)与S2(浮点数),结果存入D指定的连续3个位软元件
  • 参数要求

    • M0=1:S1 > S2

    • M1=1:S1 = S2

    • M2=1:S1 < S2

    • S1S2:必须是浮点数寄存器(如D20D30)或浮点数常数(如100.0)。

    • D:目标位软元件(如M0),比较结果为:

  • 错误示例

    plaintext

  • FCMP D10 K100 M0  // 错误:K100是整数,需改为100.0
  • 正确示例

    plaintext

  • FCMP D20 100.0 M0  // 正确:D20为浮点数,100.0为浮点数常数

步骤 3:排查浮点数是否为异常值

若运算中涉及浮点数计算(如除法、开方),需先判断结果是否为NaN±∞,可通过浮点数异常检测指令FTEST,FNC226)提前排查:

plaintext

FTEST S D  // 检测S中的浮点数是否异常,结果存入D指定的位
  • 检测结果:

    • D+0=1:S 是NaN(非数值)

    • D+1=1:S 是+∞(正无穷)

    • D+2=1:S 是-∞(负无穷)

  • 处理逻辑:在比较前先检测,若异常则跳转处理(如复位数据、报警):

    plaintext

  • FTEST D20 M10   // 检测D20是否异常,结果存M10~M12
    OR M10 M11 M12  // 若M10~M12中有1,说明数据异常
    OUT M20         // M20=1表示异常
    AN M20          // 数据正常时才执行比较
    FCMP D20 50.0 M0

步骤 4:检查寄存器地址与程序逻辑

  • 确认比较指令中使用的D寄存器地址未超出 PLC 范围(参考手册:如 FP-XH 系列D寄存器默认范围D0~D32767)。

  • 检查是否有重复使用寄存器的情况(如同一D寄存器同时被写入整数和浮点数,导致格式混乱)。

三、报警清除与预防

  1. 清除报警

    • 排查并修正程序后,通过 PLC 编程软件(如 FPWIN GR)执行 “清除错误” 或重启 PLC,报警即可解除。

  2. 预防措施

    • 所有参与浮点运算的数据必须先经FLT转换为浮点数格式。

    • 涉及除法、开方等运算时,先做边界判断(如除数≠0、被开方数≥0)。

    • 定期用FTEST指令检测关键浮点数寄存器,避免异常值进入比较环节。

总结

松下 PLC 浮点数比较报警的核心原因是数据格式错误异常值参与运算,解决关键在于:用FLT转换整数→正确使用FCMP指令(参数为浮点数)→用FTEST检测异常值。严格遵循浮点数运算规范可有效避免此类报警。

收缩
  • QQ咨询

  • 电话咨询

  • 18520143666
  • 添加微信客服