菜鸟提问:
我知道VW是不能带小数点的,VD才可以。因为小数就是浮点数,要32位才可以。
*近利用才触摸屏往VW里面写值,我往里面写小数也可以写进去啊,并没有任何错误提示。
我想知道,比如我把32.55写入了VW100里面,真正存进去的是什么?
另外我还往QW里面写了0.8,也无报错,而且PLC输出也有了。到底怎么回事呢
侠士:
触摸屏只是显示几位小数,但输入到PLC里的还是整数。
你监控下PLC里的数据就知道了,看看输入的是整数值还是小数。
菜鸟:
224就一个口 和触摸屏连着呢 怎么监控cpu呢
侠士:
触摸屏可以在整数输入时设置小数部分的显示位数,例如输入12345,显示12.345,保存和传送给PLC的实际是整数。
菜鸟:
32.55写入了VW100里面,VW100里面应该是3255这个数。
侠士:
浮点数,浮动小数点的数字。在数制范围内任意移动。
整数,小数点固定在所有数字的*右侧的数值。
定点数,相对浮点数就好解释了。定点数只是小数点不像整数那样固定在*右侧而已。既然小数点固定了。那么数制里面不必包含小数点位置信息。可以用V W字保存。
所以32.55其实是3255。屏上只是为了视觉效果,把小数点点上了。你plc里面处理的值 不 也是3255吗?
菜鸟:
感谢大家耐心的回答。既然我不懂,我就问倒底吧。不弄懂,好像很难受啊。
在S7200里面,如果直接往VD100里面写数据,好像是两条指定。一个是MOV_DW 一个是MOV_R
但是如果我想把32.55这种小数直接写进去,只能MOV_R了,因为MOV_DW会报错。
那么我如果利用触摸屏写32.55进VD100,是怎么写进去的?
另外,如果我先利用MOV_R将32.55送到VD500,然后再用MOV_DW将VD500 送到VD100 程序不会报错,但是我监控的时候数据是不对的。
另外,我先将用MOV_W 将25送到VW100 再用I_DI 将VW100转成VD100 ,然后将DI_R将VD100转成实数,Z状态表监控的时候VD100显示25.0是对的,但是监控VW100 是16840
本来觉得数据类型很简单,可是仔细的越想越是不明白,不怕大家笑话 不明白就是不明白 希望大家不吝赐教
斑竹:
你上面分了四个问题。逐一回答。
1 你用编程方式传送32.55,的确要用movr。编程软件根据你的书写方式,已经认为你输入的是浮点数。这个毫无疑问。
2 你用屏写进去,你要问屏了。屏上的数据类型是什么就是什么。如果类型是实数,那么当然当做浮点数写进去。如果屏上只是整数,那么当然当做3255写进去,小数点只是视觉效果。
3 我认为监控的数据应该用浮点格式显示方式,在movd之前和之后应该都是对的。movd只是原封不动的传了一下。没必要发生变化。
4 在*后的R转换为分界点。之前的值都是整值。之后变成了浮点了。你必须用两种数据格式做监控,结果都是反映值是:二十五。
另外,我做一个比喻,生活是比喻。我在一个圆形形的纸条上写上一个图案。
你说这是个什么?
侠客:
是什么。就要视符写的那个人用什么方向来写。
人站在两点钟方向书写的话这个是小写的d字。
人站在七点钟方向写的话,这是大写P字。
屏,人,plc,是三个独立体。各自对同样一个东西有各自的看法。