电工学习网

 找回密码
 立即注册
查看: 5193|回复: 0
打印 上一主题 下一主题

WINCC脚本学习 - 对象沿圆弧运动

[复制链接]
跳转到指定楼层
楼主
发表于 2018-3-16 07:17:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
      在西门子找答案上上看到有网友提出想要根据工艺对象,让一个对象围绕一个圆心根据实际位置进行显示。开始想了想比较麻烦,需要根据公式计算实际位置,而数学公式都快还给老师了,不如沿矩形运行来的简单,当时给出了注意,多做几个圆,根据角度判断显示还是隐藏。也基本上能满足要求,后来没事,又百度了一下公式啥的,好像也不是很难就做了出来。下面说说如何实现的
0、   创建对象。
主要是一个小黑点(C_CENTER)代表圆心,一个大圆背景透明,只显示边框,用来显示运动轨迹
一个稍微大点的圆(C_ARC),代表运动对象。
一个滚动条,设置范围是0-360,对象的旋转角度。
还做了一个静态文本显示当前旋转的角度,对象名称:JIAO。
1、   计算公式。
开始的时候我以为很难,记得看过一个编程相关的视频,也是计算一个对象的旋转后的位置,后来用我还记得的数学知识算了一下好像不难。根据下图:
WINCC脚本学习 - 对象沿圆弧运动

可以算出:
x=R *cos(α);y=R *sin(α);R是旋转半径
在WINCC里面,旋转对象的圆心不可能是在原点的,假设圆心的坐标为:xc,yc所以那实际旋转对象的坐标就是:
x=xc+R *cos(α);y=yc+R *sin(α)
2、   最终实现
在滚动条的事件==>其他==>过程驱动连接里面写脚本,采用VBS脚本实现:
WINCC脚本学习 - 对象沿圆弧运动

由于我圆心和旋转对象都是圆,需要计算圆心的位置和旋转对象的圆心旋转后,该对象的坐标,所以稍麻烦了一些。如果圆心能有个固定的坐标的话,以常量方式给定,可能会更简单一些。
3、   最终效果。
WINCC脚本学习 - 对象沿圆弧运动

基本达到目标了,不过估计也是公式的原因,0度变成了在原点的下方,如果需要的话角度再增加或者减小90度,也就在水平方向了
4、   应用
在实际使用中,可以把上面的代码放到全局脚本里面,然后利用角度的变量触发,而且设置对象的方式可能也要有所不同,前面需要加上hmiRuntime。这个相对来说是简单一些的,椭圆好像更复杂,看了看,怎么找椭圆上面的点就没看明白。
本文转载自:西门子工业技术论坛

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-27 01:55

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表