一、灵感背景
一个自动化朋友在做项目时候,有一个罐车,里面装满液体,罐体在运输途中,液体晃动角度不能够太大,要进行倾斜角度显示,直接在mcgs触摸屏上用数值显示客户反应不够直观,说有没有办法能够做一个动图显示示意角度,让我给帮忙给编写一下教程,在这里我就给大家讲解一下如何显示角度动图。
二、思路
用过mcgs触摸屏的都了解在mcgspro软件组态中没有旋转动图相关设置,只有大小变化和垂直变化,这样是无法做倾斜角度显示的。
1、思路一
用图片状态显示,将不同角度图片用多状态指示控件显示图片,此方法麻烦,并且对mcgs触摸屏内存有要求,毕竟要很多图片进行显示,此方法我门也不考虑。
2、思路二
采用mcgs旋转仪表控件,此方法能够动态显示角度,但是不够直观,和直接显示角度数值相比还差一些,此方法我们也不采用。
3、思路三
我们再考虑一下是否还有其他方法能够直观显示倾斜角度方法,想要直观显示,我们最好要有参照物,XY坐标系就可以直观显示相对于X轴角度和Y轴角度,有了思路我们接下来就是考虑如何实现用坐标系进行显示倾斜角度。
三、编程
1、制作罐车画面
因为是罐车,装载液体,制作画面比较简单,在mcgs组态构建里面就有,直接拖拽出来即可。
2、建立坐标系
2.1"XY曲线"控件
建立坐标系,我们可以用"XY曲线"控件。进入属性按照下面参数设置。
基本属性设置如下
标注属性如图
曲线属性如下图,x值,y值为全局变量字符串。
将xy曲线控件移动罐车图上,如图
2.2脚本编写
我们编写脚本,首先要明白xy曲线控件字符串如何显示,下面是设置说明
字符串:
(a) X值与Y值取自不同字符串,数据取自XY字符串
(b) XY字符串,点击按钮选择一个字符串变量
(c) X字符串,点击按钮选择一个字符串变量
(d) Y字符串,点击按钮选择一个字符串变量
(e) X步进值,点击按钮选择一个整数变量,可输入常量,为趋势图时有效
备注:字符串的分隔符支持逗号(,),换行符(0x0D 0x0A),回车符(0x0D),换行符(0x0A)。
示例1: 10,20,30,40,50,60
示例2:组态脚本为:”10”+!I2Ascii(13)+!I2Ascii(10) +”20”+!I2Ascii(13)+!I2Ascii(10) +”30”+!I2Ascii(13)+!I2Ascii(10) +”40”+!I2Ascii(13)+!I2Ascii(10)产生如下4行字符串:
10
20
30
40
l 线型:设置曲线的线宽;
l 颜色:设置曲线的颜色;
l X值(检视输出):绑定变量用于显示检视点的X值检视输出;
l Y值(检视输出):绑定变量用于显示检视点的Y值检视输出。
l 曲线类型为xy曲线时,检视点为十字检视线交叉点。
l 曲线类型为趋势图时,检视点为竖线,检视输出下一个数据点,如果只有一个点,则只当检视线在点附近4像素内才输出,否则输出无效值。
根据帮助说明我们可以设置曲线字符串:x值=-100,100 y值=-100,100 ,曲线就会成45度
我们在窗口循环脚本里面编写脚本,将循环时间改成500ms,使其刷新快一些,现在已经知道角度值,和线段长度-100到100,如何计算曲线坐标,这就用到三角函数x1=-100*cos弧度 x2=100*cos弧度,y1=-100*sin弧度,y2=100*sin弧度。
这里我们需要将角度转化成弧度,用到函数
ToRad(x)
函数意义: 将角度转换为弧度
参 数: x,浮点数
返 回 值: 浮点数
实 例: ret =!ToRad(45),ret = 0.785398
计算完后再将数值转换成字符,用函数
Str(x)
函数意义: 将浮点数变量x的值转换成字符串
参 数: x,浮点数
返 回 值: 字符串
实 例: ret = !Str(0.712),ret ="0.712"
ret = !Str(12345678),ret ="1.23457e7"
注意事项: 自动选择指数形式或普通小数形式(保留6位)
我们编写脚本,这里角度为浮点数全局变量
''''''角度动图显示'''''''
'''角度为整数,X值/Y值为字符串
x值=!Str(-100.0 * !cos(!ToRad(角度))) + ","+!Str(100.0 * !cos(!ToRad(角度)))'X曲线字符串
y值=!Str(-100.0 * !sin(!ToRad(角度))) + "," +!Str(100.0 * !sin(!ToRad(角度)))'y曲线字符串
再刷新一下控件6.就是xy曲线构建
窗口0.控件6.Refresh( )'刷新构建
这样我们就完成角度动图,在窗口添加输入框连接角度变量,模拟运行