合信论坛

快捷导航
查看: 2077|回复: 0

浮点数比较致命错误规避方案(T指令库

[复制链接]

29

主题

32

帖子

1104

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1104
QQ
发表于 2023-6-26 16:33:46 | 显示全部楼层 |阅读模式
错误信息.png    
编写程序时,如果对于需要比较的浮点数值不正确操作,可能出现“比较节点非法浮点数值错误”而导致PLC报错停机,无论调用与否  
如果比较节点的浮点数在程序扫描到当行时数值为‘NAN’则会返回该错误。
该指令库用于检查输入的浮点数值是否符合规范,后按照程序设计需求将用户需要规避的值做处理后输出到out引脚,可重复调用,对PLC型号无需求。

指令内预设三种“非规范数”:
NAN(不是真正的数,无法作为任意数值使用)。
INF(无穷数,分为+INF[+∞]与-INF[-∞],可以比较不会报错)。
非规范的数:浮点数表现为一个极小值,小于规范数发绝对最小值,这种数在比较时会作为0.0处理。

预设有替换值,用户可以将非法数替换为指定的值,非指定情况下NAN使用0.0替换,±INF使用规范内的最大/最小值替换,非规范数使用大于零的最小规范数/小于零的最大规范数

例如:避免NAN数值的出现 ↓↓↓↓
Nan窥避.png

INF、非规范数并不会导致报错:
INF不会导致报错.png    非规范数不会导致报错.png

NAN的两种替换方式:
NaN_smart.png    NaN_indata.png
INF的两种替换方式:
INF_smart.png    INF_indata.png
非规范数的两种替换方式:
非规范数_smart.png    非规范数_indata.png

指令引脚与功能注释:
引脚接收.png

程序块注释.png

库中还准备有一个只检查NAN错误的小指令,用于日常程序中做保护检查输入一个数值,如果为NAN则‘data_state’为1;
‘data_state’为1时,如果‘reviseOUT’设置为1,则输出一个0.0,其他情况输出输入值。
单独NAN.png


浮点数错误检查.ctmwl (5.98 KB, 下载次数: 140)


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2024-5-13 03:13 , Processed in 0.158217 second(s), 33 queries .

快速回复 返回顶部 返回列表