技术论坛

wincc7.0输入输出域线性标定问题

作者 主题
侠士

经验值: 1096
发帖数: 123
精华帖: 0
主题:【求助】wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 2018-07-11 19:47:43

系统概况:原系统plc采用315-2PN/DP,触摸屏为MP277,在触摸屏的输入输出域中采用移动小数点的方式改变数据的输出格式,例如A变量在plc中为20,触摸屏的输出域显示为0.2,在触摸屏的输入域写0.2,对应的变量在PLC中显示为20,变量数据格式为INT.在触摸屏的输入输出域中通过修改移动小数点的位数即可修改倍率。

问题:现在增加一台上位机,用的wincc7.0,在wincc的输入输出域中要实现触摸屏的功能,输出域变量连接时用的表达式变量/100.0,可以把plc中INT格式的数据20在wincc中显示为0.2,在做输入域的时候怎么能实现在wincc上写0.2,到plc里为20呢?

说明,1,数据格式为16位整数,不是浮点数。

      2,不能改程序

      3,在变量里做线性标定无法实现小数部分

     


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1494637&b_id=5&s_id=0&num=16

版主

经验值: 43597
发帖数: 15780
精华帖: 61
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 1楼 2018-07-12 10:53:28

wincc中变量有线性标定:原始数据范围:0~1000,过程数据0.0~10.0,如果你的范围更大,把这个范围再放大就行了,不需要画面上再转换了。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 2楼 2018-07-12 11:21:00
以下是引用zhangli0在2018-07-12 10:53:28的发言 >1楼

wincc中变量有线性标定:原始数据范围:0~1000,过程数据0.0~10.0,如果你的范围更大,把这个范围再放大就行了,不需要画面上再转换了。

首先谢谢版主的答复,这个方法我试过了,大于1的数可以,0-1之间的小数不行,回头我再试下。


 
以下网友喜欢您的帖子:

  
版主

经验值: 43597
发帖数: 15780
精华帖: 61
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 3楼 2018-07-12 11:22:20
以下是引用wozuile01在2018-07-12 11:21:00的发言 >

首先谢谢版主的答复,这个方法我试过了,大于1的数可以,0-1之间的小数不行,回头我再试下。

你原始数据小于1?整数不是0就是大于等于1呀!


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
版主

经验值: 43597
发帖数: 15780
精华帖: 61
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 4楼 2018-07-12 11:23:10

如果原始数据小于1,那么这个0~1000的范围改成0.0~1000.0的实数范围就行了。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 5楼 2018-07-12 11:25:30
以下是引用zhangli0在2018-07-12 11:23:10的发言 >4楼

如果原始数据小于1,那么这个0~1000的范围改成0.0~1000.0的实数范围就行了。

数据类型为16位整数可以吗?


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 6楼 2018-07-12 11:26:52

用脚本可以实现吗?我对脚本不是太熟


 
以下网友喜欢您的帖子:

  
版主

经验值: 43597
发帖数: 15780
精华帖: 61
回复:wincc7.0输入输出域线性标定问题
精华帖精华帖星级5级 推荐帖


只看楼主 只看精华 7楼 2018-07-12 11:31:40
以下是引用wozuile01在2018-07-12 11:25:30的发言 >

数据类型为16位整数可以吗?

整数就是我说的那个呀!0~1000对应0.0~10.0就行了。有简单方法你为何非要自己去麻烦呢?脚本当然可以了。

定义一个wincc的内部变量,wincc的io域链接内部变量。

dim mytag

mytag=hmiruntime.tags("外部变量").read

mytag=mytag/100.0

hmiruntime.tags("内部变量").write mytag

界面显示内部变量。

dim mytag

mytag=hmiruntime.tags("内部变量").read

mytag=mytag*100.0

hmiruntime.tags("外部变量").write mytag

控制输出。



活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 8楼 2018-07-12 11:35:07

还有个疑惑,用动态对话框组态输入域时数据写不到plc里,但可以显示plc的数据,这是什么情况?


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 9楼 2018-07-12 13:21:12
以下是引用zhangli0在2018-07-12 11:31:40的发言 >7楼

整数就是我说的那个呀!0~1000对应0.0~10.0就行了。有简单方法你为何非要自己去麻烦呢?脚本当然可以了。

定义一个wincc的内部变量,wincc的io域链接内部变量。

dim mytag

mytag=hmiruntime.tags("外部变量").read

mytag=mytag/100.0

hmiruntime.tags("内部变量").write mytag

界面显示内部变量。

dim mytag

mytag=hmiruntime.tags("内部变量").read

mytag=mytag*100.0

hmiruntime.tags("外部变量").write mytag

控制输出。


以下是引用wozuile01在2018-07-12 11:25:30的发言 >:数据类型为16位整数...

引用详细内容:

数据类型为16位整数可以吗?

又反复在wincc7.0里测试了一下,对于输入域数据类型为整数型的小数点位无法实现,数据类型为实数的可以实现带小数点的数据写入。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 10楼 2018-07-12 14:19:09

非常感谢,谢谢版主的脚本,完美解决了,谢谢!


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 11楼 2018-07-12 14:20:55

用脚本定义的内部变量数据类型为实数,完美解决



 
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 12楼 2018-07-12 14:37:34

用版主的方法整理了一下

定义一个wincc的内部变量,变量数据类型为Real,wincc的io域直接链接内部变量。

1,wincc数据显示调整

在输入/输出域的事件----输入/输出---输出值----更改---vbs动作

dim mytag

mytag=hmiruntime.tags("外部变量").read

mytag=mytag/100.0

hmiruntime.tags("内部变量").write mytag

界面显示内部变量。

2,写入plc的数据调整

在输入/输出域的事件----输入/输出---输入值----更改---vbs动作

dim mytag

mytag=hmiruntime.tags("内部变量").read

mytag=mytag*100.0

hmiruntime.tags("外部变量").write mytag

控制输出。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:wincc7.0输入输出域线性标定问题
精华帖精华帖星级4级 推荐帖 推荐帖


只看楼主 只看精华 13楼 2018-07-13 15:50:13

没那么复杂。

wincc中定义一个浮点类型,然后在类型转换中选择浮点到整数,再在选择线性转换就OK了,不需要脚本

虽然用的是V7.4,7.0也是一样的




 
推荐帖推荐理由: 这是最好的解决方法,简单方便,同时还解决了曲线和归档的数据 (推荐人:wozuile01)
以下网友喜欢您的帖子:

  
侠士

经验值: 1096
发帖数: 123
精华帖: 0
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 楼主 14楼 2018-07-13 16:38:15
以下是引用shine在2018-07-13 15:50:13的发言 >13楼

没那么复杂。

wincc中定义一个浮点类型,然后在类型转换中选择浮点到整数,再在选择线性转换就OK了,不需要脚本

虽然用的是V7.4,7.0也是一样的



好思路好方法,试了一下没有问题。关键是要用浮点数转换成整数,非常感谢!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 15楼 2018-07-13 16:56:12
以下是引用wozuile01在2018-07-13 16:38:15的发言 >14楼

所有变量的地址都是原程序中定义好的,且地址是连续的,如果在wincc中定义为浮点数会不会影响数据的准确性?比如说DB60.DBW0和DB60.DBW2中各有一个数据,我在wincc中读DB60.DBW0中的数据,用的地址为DB60.DBD0,会把DB60.DBW2中的数据也读上来了吧。

以下是引用shine在2018-07-13 15:50:13的发言 >13楼:没那么复杂。wincc中...

引用13楼详细内容:

没那么复杂。

wincc中定义一个浮点类型,然后在类型转换中选择浮点到整数,再在选择线性转换就OK了,不需要脚本

虽然用的是V7.4,7.0也是一样的



不会。

wincc是安装格式转换后的类型到PLC中读取数据的,例子中的signedword,是一个16位带符号整数,然后在wincc中转换为float,这时做线性转换就不会舍去小数点后的数值了。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:wincc7.0输入输出域线性标定问题
推荐帖


只看楼主 只看精华 16楼 2018-07-14 09:09:26
修改线性标定中的范围值为带小数的数值并不会自动进行数值类型转换,必须手动指定转换的类型
 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
wincc7.0输入输出域线性标定问题
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。