68人参与 • 2024-08-06 • 嵌入式
先生成定时器db,然后在引脚绑定变量,在西门子plc中,dint和time之间可以隐含转化。
数值元件资料格式为32-bit signed,对应plc中即为dint类型。小数点以下没有位数。这是我们测试一下时间运行及剩余时间显示,看有没有问题。 此时我们输入5进去,认为是5秒,但实际上到达定时器引脚的时候只是5ms。
那我们可以想想办法:将触摸屏上的元件小数点以下改成3位。这样的话我们输入5.5进去的时候,在plc内部就会是5500ms,也就是5s_500ms。
但这样也会存在弊端,就是无论是设定时间还是剩余时间,都必须是小数点后三位。相当于通过修改hmi元件的位数来改变输入plc内部时数据的大小。那我们看看第二种办法。
程序内部变量也设置成real类型。
这时就会看到设定时间已经ok了,但是剩余时间显示还是不尽如人意。
所以需要对剩余时间进行除以1000的操作。
但触摸屏呈现出来的效果是剩余时间没办法显示出来小数点以下位数的变化了。这是由于dint类型在转real类型时,plc内容精度缺失了,需要我们人为进行数据类型转化。
这里注意:一定是先进行数据类型转化再除以1000。先将dint转化为real,这样可以保留小数位数,然后再除1000,即可显示出小数点以下的位数了。
举个例子: 如果是先除以1000再转化,有可能数据为1500,除以1000变成1.5,但由于是dint类型会将小数点抹去,数据精度丢失编程1,那这时候再转化成real类型就还是1,没有任何意义!
现在即可完美实现最终的显示效果,小数点后面的位数也可随意调整,不会影响数据大小。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论