显示温度时如何显示小数点后面的值?在输入输出域中设置不起作用,设置用32位浮点数读不到值。
目前用16位无符号类型。通讯驱动连接是 MODBUS TCP.
但是读其他OPC SERVER 的值时有可以显示小数位。
问题补充:
希望各位老大仔细看看我得问题以及目前已经做过的测试,我再补充一下:
1:输入输出域的格式设置不起作用。在读取其他OPC SERVER 值的时候才有作用。可以显示小数位。
2:如果改为读取 数据类型为32位浮点数 IEEE 754格式,就读不到数值。
3:我的下位机是 串口服务器接ABB PLC AC31 ,用TCP模式,上位机不用串口模拟软件。PLC 模拟量数据类型为INT 型。
4:MODBUS TCP 协议设置为 16位无符号数可以正确读值,比如温度值为:8618,线性化后的值为为86,没有了小数位的18。
5:其他组态软件可以正确读值并线性化没有出现丢失小数位的现象。WINCC只是设置输入输出域的999。99是不行的。
6:除过在程序里面用程序实现显示小数位,还有什么好办法吗?
7:WINCC程序里面实现如何实现显示小数位?
8:哪位方便的话,我可以提供公网IP 实际联机设备测试一下这个问题。
9:之前做过WINCC显示小数位的,但也是读取OPC SERVER 的工况。
10:先谢谢各位关注了。
最佳答案
你的温度值读入的格式为16位无符号类型的话,肯定是不会有小数点后面的值的...只有读入的是REAL也就是32位浮点数 IEEE 754格式时,直接显示可以设置小数位数.
根据你的这一点: MODBUS TCP 协议设置为 16位无符号数可以正确读值,我认为你应该使用读入的格式为16位无符号类型,但是不要线性化,显示时输入输出域不要用变量的直接连接,使用动态对话框,输出值为: "变量"/100 就可以了...
提问者对于答案的评价:
谢谢,可以正常显示了,要除100。00;除100不行。再问问,这个变量名字值可以直接归档吗?归档里面也有小数位吗?
专家置评
只能归档变量管理里定义的变量。
对于无符号十六位的变量显示为小数格式。可以这样操作:
1、数据类型定义为浮点数 32位,
2、调整格式定义为:FloatToUnsignedWord
3、根据实际情况定义线性标定。
4、根据实际情况定义输出格式,例:999.9。
以上是在MPI通道下做的测试。这样归档里面也带有小数。
搂主可以按照这个思路测试一下MODBUS TCP协议下的情况。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc271198.html