作者 | 主题 |
---|---|
RENHQ 至圣 经验值: 68954 发帖数: 12234 精华帖: 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
|
威师爷 至圣 经验值: 37430 发帖数: 5126 精华帖: 47 |
5楼 2018-03-16 10:14:23
主题:回复:WINCC脚本学习 - 对象沿圆弧运动 不知道做电机的转速动态图有什么好办法?,例如0-1440RPM,0不转,1440转的频率最快,能否提供一下思路?
工业起重机防摇摆 QQ:404136820 AntiSwayControl
|
RENHQ 至圣 经验值: 68954 发帖数: 12234 精华帖: 59 |
6楼 2018-03-16 10:17:03
主题:回复:WINCC脚本学习 - 对象沿圆弧运动 用WINCC自带的仪表盘功能吧? 旋转的没意思,你1000和1200,如果做个风扇类似的东西转起来,你看起来也分辨不出来吧 和汽车仪表盘似的,一目了然,更直观一些
Q群:https://jq.qq.com/?k=9BDuEgf6
|