技术论坛

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

返回主题列表
作者 主题
RENHQ
版主

经验值:68949
发帖数:12232
精华帖:59
楼主    2018-03-15 22:38:23
主题:WINCC脚本学习 - 对象沿圆弧运动

        在西门子找答案上上看到有网友提出想要根据工艺对象,让一个对象围绕一个圆心根据实际位置进行显示。开始想了想比较麻烦,需要根据公式计算实际位置,而数学公式都快还给老师了,不如沿矩形运行来的简单,当时给出了注意,多做几个圆,根据角度判断显示还是隐藏。也基本上能满足要求,后来没事,又百度了一下公式啥的,好像也不是很难就做了出来。下面说说如何实现的

0、   创建对象。

主要是一个小黑点(C_CENTER)代表圆心,一个大圆背景透明,只显示边框,用来显示运动轨迹

一个稍微大点的圆(C_ARC),代表运动对象。

一个滚动条,设置范围是0-360,对象的旋转角度。

还做了一个静态文本显示当前旋转的角度,对象名称:JIAO。

1、   计算公式。

开始的时候我以为很难,记得看过一个编程相关的视频,也是计算一个对象的旋转后的位置,后来用我还记得的数学知识算了一下好像不难。根据下图:


可以算出:

x=R *cos(α);y=R *sin(α);R是旋转半径

在WINCC里面,旋转对象的圆心不可能是在原点的,假设圆心的坐标为:xc,yc所以那实际旋转对象的坐标就是:

x=xc+R *cos(α);y=yc+R *sin(α)

2、   最终实现

在滚动条的事件==>其他==>过程驱动连接里面写脚本,采用VBS脚本实现:


由于我圆心和旋转对象都是圆,需要计算圆心的位置和旋转对象的圆心旋转后,该对象的坐标,所以稍麻烦了一些。如果圆心能有个固定的坐标的话,以常量方式给定,可能会更简单一些。

3、   最终效果。


基本达到目标了,不过估计也是公式的原因,0度变成了在原点的下方,如果需要的话角度再增加或者减小90度,也就在水平方向了

4、   应用

在实际使用中,可以把上面的代码放到全局脚本里面,然后利用角度的变量触发,而且设置对象的方式可能也要有所不同,前面需要加上HMIRuntime。这个相对来说是简单一些的,椭圆好像更复杂,看了看,怎么找椭圆上面的点就没看明白。下期再说吧。
Q群:https://jq.qq.com/?k=9BDuEgf6
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。