技术论坛

 浮点数取小数点后的位数SCL程序

返回主题列表
作者 主题
WWCWWC
至圣

经验值:72009
发帖数:8043
精华帖:145
楼主    2023-07-18 15:51:14
主题:浮点数取小数点后的位数SCL程序

浮点数取小数点后的位数SCL程序

  前一些天,公司同事让我去看看,他所管理的工厂环保设备中,有一个“奇怪”的问题,让我过去诊断看看。

  我过去一看,cpu是ET200SP+维纶通触摸屏的基本设备控制配置。问题是显示其中一个I/O域(浮点数)数据,有时候显示正常,有时候显示异常。我让同事打开plc程序和触摸屏程序,看具体的数据是否有重复使用的交叉地址,一阵查找后,判断没有此现象。只是,浮点数运算显示的位数,与维纶通触摸屏I/O域显示的位数的匹配问题,当plc侧的该变量地址显示的位数大于一定位数后,触摸屏显示浮点数整数小数点后面变为“#”符号。问题找到,我按网友的处理方法,先将原浮点数据乘10.0,然后截断取整,再除10.0。按此思路将修改的程序保存,编译后下载,显示正常。

  回到办公室,想起这个处理过程,总认为可以处理能力强大的SCL编程来解决这个问题,找了找网上居也有同样的程序,于是,按那个方法“炮制”了一个,模拟仿真结果可以满足需要,特将此程序贴出来分享。程序:

创建一个FC,新建必要的输入、输出及temp变量,图示:


在OB1调用,并新建测试的DB数据块,取消优化访问,根据FC接口新建必要的数据,图示:

启动模拟仿真,将程序仿真测试,图示:


浮点数输入,输入一个圆周率数据3.1415926,小数取小数点位后的3位,结果3.141,能够满足我的要求。再次修改小数位数,结果满意,于是,将此程序发送给同事。此,也特分享大家。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。