签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
系统概况:原系统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
wincc中变量有线性标定:原始数据范围:0~1000,过程数据0.0~10.0,如果你的范围更大,把这个范围再放大就行了,不需要画面上再转换了。
首先谢谢版主的答复,这个方法我试过了,大于1的数可以,0-1之间的小数不行,回头我再试下。
你原始数据小于1?整数不是0就是大于等于1呀!
如果原始数据小于1,那么这个0~1000的范围改成0.0~1000.0的实数范围就行了。
数据类型为16位整数可以吗?
用脚本可以实现吗?我对脚本不是太熟
整数就是我说的那个呀!0~1000对应0.0~10.0就行了。有简单方法你为何非要自己去麻烦呢?脚本当然可以了。
定义一个wincc的内部变量,wincc的io域链接内部变量。
dim mytag
mytag=hmiruntime.tags("外部变量").read
mytag=mytag/100.0
hmiruntime.tags("内部变量").write mytag
界面显示内部变量。
mytag=hmiruntime.tags("内部变量").read
mytag=mytag*100.0
hmiruntime.tags("外部变量").write mytag
控制输出。
还有个疑惑,用动态对话框组态输入域时数据写不到plc里,但可以显示plc的数据,这是什么情况?
引用详细内容:
又反复在wincc7.0里测试了一下,对于输入域数据类型为整数型的小数点位无法实现,数据类型为实数的可以实现带小数点的数据写入。
非常感谢,谢谢版主的脚本,完美解决了,谢谢!
用脚本定义的内部变量数据类型为实数,完美解决
用版主的方法整理了一下
定义一个wincc的内部变量,变量数据类型为Real,wincc的io域直接链接内部变量。
1,wincc数据显示调整
在输入/输出域的事件----输入/输出---输出值----更改---vbs动作
2,写入plc的数据调整
在输入/输出域的事件----输入/输出---输入值----更改---vbs动作
没那么复杂。
wincc中定义一个浮点类型,然后在类型转换中选择浮点到整数,再在选择线性转换就OK了,不需要脚本
虽然用的是V7.4,7.0也是一样的
好思路好方法,试了一下没有问题。关键是要用浮点数转换成整数,非常感谢!
所有变量的地址都是原程序中定义好的,且地址是连续的,如果在wincc中定义为浮点数会不会影响数据的准确性?比如说DB60.DBW0和DB60.DBW2中各有一个数据,我在wincc中读DB60.DBW0中的数据,用的地址为DB60.DBD0,会把DB60.DBW2中的数据也读上来了吧。
引用13楼详细内容:
不会。
wincc是安装格式转换后的类型到PLC中读取数据的,例子中的signedword,是一个16位带符号整数,然后在wincc中转换为float,这时做线性转换就不会舍去小数点后的数值了。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录