本使用手册及样例包目录内所包含文档、PLC程序、机床可执行程序(MPF、SPF、…)、电气图,可能与用户实际使用不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任,使用该例程的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系中国东方数控有限公司技术支持与服务部门。
对于在使用中发生的人员、财产损失本公司不承担任何责任,由使用者自行承担风险。
以上声明内容的最终解释权归中国东方数控有限公司所有,后续内容更新不做另行通知。
另在本文的编写过程中得到了西门子公司成飞工程师的指导与帮助,在此表示感谢!
“RunMyScreens”界面设计开发功能在早期的SINUMERIK版本软件中被称为“EasyScreen”界面开发功能,其编程句法虽然相对专业计算机编程语言已经算是简单“EasyScreen”了,但是其对屏幕、按键、变量的定义句法仍然略显冗长和相对封闭,不太灵活。相信有在早期使用过EasyScreen的小伙伴一定深有体会,这个问题从SINUMERIK Operate V4.7开始就已经得到改善了。
自SINUMERIK Operate V4.7 起,“RunMyScreens”提供了用于屏幕定义、变量定义、软键定义以及表格列定义的简化句法,该句法改善了可读性并缩短了等待时间。特性和属性可以任意顺序给定,空白记录被取消。相比于以前的句法,特性和属性列表不再使用圆括号 “ (” 和 “)” ,而是使用圆弧括号 “{” 和 “}”, 但是以前的传统句法仍然是兼容的。
特性和属性按以下方式给定:
{<名称> = <值>, <名称> = <值>, …}
变量参数仍然很多,但是只需掌握常见的几种参数名称以及书写格式即可轻松完成一般性界面设计工作,比如变量定义中的变量类型TYP,输入模式WR,短文本位置TXT_X,TXT_Y等等。
• V4.7+SP02
5.1.1 软键定义
1. 软键定义的扩展句法如下:
SK = {[ST=<名称>] [,AC=<访问级>] [,SE=<状态>]}
示例:
HS1={ST="""MySk""", AC=6, SE=1}
HS3={ST="SOFTKEY_CANCEL"}
HS5={ST="[$81251,""\\sk_ok.png""]"}
HS8={ST="[""Test"",""\\sk_ok.png""]"}
软键定义参数不算多,从扩展句法的示例可以看出,这种书写格式与传统句法相比相差不大,但是引号的使用需要引起注意。
2. 软键定义的传统句法格式:
SK = (文本[,访问等级][,状态][,软键图对齐][,以软键图为基准的文本对齐])
但通常只用到文本、访问等级、和可见状态这3个参数,所以对于软键的定义,觉得仍然使用传统句法比较方便,对于常见的软键定义可按照下面格式即可
HS1=(“按键1”,ac7,se1)
或者带按键图片的,就如下编写:
HS1=(“按键1”,”\\**.png”,ac7,se1)
举例:HS5=([“Test”,”\\sk_corinco.png”]),显示效果如下
5.1.2 屏幕定义
1.Operate 对话框结构
屏幕定义也就是通常所说的对话框定义。
对话框是操作界面上的一个组成部分, 操作界面的基本结构如下图所示
3号框内的图片,可以是屏幕定义中的帮助图片HLP=<图片>,并通过HLP_X、HLP_Y来设定位置,也可以是变量定义中的帮助图片,但位置沿用屏幕定义中的HLP_X、HLP_y,分别如下图所示
2.屏幕定义的扩展句法如下:
//M {<屏幕名称> [,HD=<标题>] [,HLP=<图片>] [,X=<X 位置>] [,Y=<Y 位置>] [,W=<宽度>][,H=<高度>] [,VAR=<>系统变量或用户变量] [,HLP_X=<辅助画面X 位置>] [,HLP_Y=<辅助画面Y 位置>] [,CM=<列对齐>] [,CB=对话框打开方式] [,XG=<将辅助画面编译为X3d 图片>] [,PANEL=<已链接FormPanels 的名称>][,MC=<屏幕背景色>][,HD_AL=<屏幕标题对齐>][,LANGFILELIST=<屏幕专用语言文件列表>]}
示例:
//M{VariantTest, HD="My Mask"}
3.屏幕定义传统句法的格式:
//M(名称/[标题]/[图形]/[尺寸]/[系统或用户变量]/[图形位置]/[属性]/屏幕专用语言文件列表)
如果上图中屏幕用传统句法编写,如下所示:
//M(Mask1/”功能测试:CALL”/”corinco.png”///15,15,0,0)
这里能看出,必须严格按照书写位置和顺序排列,即使屏幕尺寸“[尺寸]”以及“[系统或用户变量]”没有,但是要用“/”空出他们的位置,虽然后面的“[属性]/屏幕专用语言文件列表”也可以省去,但显然没有扩展句法来得方便,这一点在变量定义中体现的更加明显。
5.1.3变量定义
1.变量定义的扩展句法如下:
DEF <变量名称> = {[TYP=<类型>] [,MIN=<最小值>] [,MAX=<最大值>] [,TGL=<转换值>][,VAL=<预设值>] [,LT=<长文本>] [,ST=<短文本>] [,GT=<图片文本>] [,UT=<单位文本>][,TT=<提示框文本>] [,TG=<转换选项>] [,WR=<输入模式>] [,AC=<访问级>] [,AL=<文本对齐>] [,FS=<字体大小>] [,LI=<极限值处理>] [,UR=<刷新率>] [,CB=<对话框打开方式>][,HLP=<辅助画面>] [,VAR=<系统变量和用户变量>] >] [,TXT_X=<短文本X 位置>][,TXT_Y=<短文本Y 位置>] [,TXT_W=<短文本宽度>] [,TXT_H=<短文本高度>] [,X=<输入/输出栏X 位置>] [,Y=<输入/输出栏Y 位置>] [,W=<输入/输出栏宽度>] [,H=<输入/输出栏高度>] [,UT_DX=<输入/输出栏之间的间距和单位文本>] [,UT_W=<单位文本宽度>] [,BC=<输入/输出栏背景色>] [,FC=<输入/输出栏前景色>] [,BC_ST=<短文本背景色>] [,FC_ST=<短文本前景色>] [,BC_GT=<图片文本背景色>] [,FC_GT=<图片文本前景色>] [,BC_UT=<单位文本背景色>] [,FC_UT=<单位文本前景色>] [,SC1=<进度条信号色1>] [,SC2=<进度条信号色2>] [,SVAL1=<进度条阈值1>] [,SVAL2=<进度条阈值2>] [,DT=<显示类型>] [,DO=<显示对齐>] [,OHLP=<在线帮助>][,LINK_TGL=<已链接转换变量的名称>]}
示例:
DEF MyVar5={TYP="R2", ST="MyVar5", VAL=123.4567, OHLP="myhelp.html", MIN=100.1,MAX=200.9}
DEF MyVar2={TYP="I", TGL="*1,2,3", VAL=1}
DEF MyVar3={TYP="R2", TGL="*0=""Aus"", 1=$80000", VAL=1}
DEF MyVar4={TYP="R2", TGL="*MyArray",VAL=1}
DEF MyVar1={TYP="R2", TGL="%grid99", X = 0, W=300, H=200}
DEF MyVar6={TYP="R2", TGL="+$80000", VAR="$R[10]", ST="Textoffset"}
2.变量定义的传统句法,如下:
DEF Var1=([变量类型]/[限值,切换字段或表格标识符]/[默认值]/[文本]/[属性]/[帮助显示]/[系统或用户变量]/[短文本的位置]/[输入输出框位置]/[颜色]/[在线帮助文件]/[单元选择框])
像其中[文本]、[属性]、[颜色]等的细分种类又特别多,总的原则是斜杠”/”不能少(除非末尾不需要写的参数可以省去),细分参数中间的逗号”,”不能省,以及排布位置不能错。
再来看看“屏幕定义”例子中的这幅图中的变量VAR2,
如果图中的变量VAR2用传统句法书写,情况如下:
DEF VAR2=(I//0/”长文本测试”,”+”,”\\turn.png”,””/wr2///330,,20,/355,,80,/)
这里从左到右,分别空出了:[限值,切换字段或表格标识符],文本中的[单位文本]位置,以及[帮助显示]/[系统或用户变量],短文本和输入输出框中的[Y方向坐标值]和[高度值]以及最后的[颜色] /[在线帮助文件]/[单元选择框]
扩展句法在变量定义中的优点则更加明显,只需要记住常见的参数名称,比如这个变量定义中的变量类型TYP,默认值VAL,长文本LT,短文本ST,输入模式WR,短文本位置TXT_X、TXT_Y、TXT_W、TXT_H,输入输出框位置X、Y、W、H,系统或用户变量VAR等即可,用到哪一个就写哪一个,位置不限,字母大小写不限。
比如也可以写成:
DEF VAR2={typ=”I”,wr=2,LT=”长文本测试”,val=0,st=”+”,hlp=”turn.png”,txt_x=330,txt_w=20,x=355,w=80}
在使用RunMyScreens进行界面设计的过程中,另外一个常见的,容易给我们的编程带来较大工作量的就是短文本位置和输入输出框的位置计算。那么除了一点一点根据我们的设计来修改数值,再反复观察效果,再修改数值外,有没有一些便捷的规律或者原则可循,从而减轻我们的编程工作呢?答案当然是肯定的。
短文本和图形文本形成一个输入单元,以及输入/输出栏和单位文本也形成一个输入单元,即短文本的位置数据对图形文本数据有效,输入/输出栏数据对单位文本数据有效。
总结起来有如下几点原则:
• 覆盖原则:如果下一对话框单元没有设计位置数据,则采用上一对话框单元的数据
• 默认值原则:如果对话框单元没有规定位置,则使用预设置
• 图像占用短文本位置:图像默认占用短文本宽度,如果单独设计图像宽度,则不占用短文本宽度
• 单位占用输入输出位置:单位文本默认占用输入输出框宽度,如设计单位文本宽度,则不占用输入输出栏宽度
们通常会用“默认值原则”来减少Y方向位置编程工作量,还有通过了解单位文本的宽度设计占用输入输出栏宽度原则,我们可以设计参数UT_W来增加较长单位文本的完整显示(比如mm/min)。
举例1:
//M{Mask1,hd="变量展示:文本"}
DEF NULL1={WR=4}
DEF TXT1={WR=0,txt_x=50,ST="文本1",txt_w=140 },
VAR1={TYP="I", WR=2,TXT_x=180,TXT_w=120,st="_AA1",lt="长文本:变量的更多描述",tt="浮窗-提示",bc_st=5,bc_gt="#00ffff",bc=6,bc_ut=9,x=310,w=120,GT="_SETV[0]",ut="mm"}
DEF TXT2={WR=0,txt_x=50,ST="文本2",txt_w=140 },
VAR2={TYP="I", WR=2,TXT_x=180,TXT_w=120,st="_AA2",lt="长文本:变量的更多描述",tt="浮窗-提示",bc_st=5,bc_gt="#00ffff",bc=6,bc_ut=9,x=310,w=120,GT=""}
DEF TXT3={WR=0,txt_x=50,ST="文本3",txt_w=140 },
VAR3=(I///"C","_AA3","GT","mm","tt"////180,,120/310,,120/0,2,0,4,0,"#00ffff",0,9,)
DEF NULL2={WR=4}
DEF TXT4={WR=0,txt_x=50,ST="文本4: 单位转换",txt_w=140 }, VAR4={TYP="I",WR=2,TXT_x=180,TXT_w=60,x=250,w=100,bc_st="#00aa7f",bc="#eeaa00",st="_AA4",TG=1,LINK_TGL="VARTGL1",ut_dx=5},
VARTGL1={TYP="S",TGL="*0=""mm"",1=""inch"",2=""cm"""}
DEF NULL4={WR=4}
DEF NULL5={WR=4}
DEF TXT5={WR=0,txt_x=50,ST="文本5: 图片显示",txt_w=140 },
VAR5={WR=0,txt_x=180,ST="\\hlp/hlp1.png",txt_w=140,txt_h=100}
DEF TXT6={WR=0,txt_x=50,ST="文本6: 文本对齐",txt_w=140 },
VAR6={WR=2,txt_x=180,ST="_AA6",txt_w=60,bc_st="#00FF7F",X=260,W=80,AL=0}
DEF VAR7={WR=2,txt_x=180,ST="_AA6",txt_w=60,bc_st="#00FF7F",X=260,W=80,AL=1}
DEF VAR8={WR=2,txt_x=180,ST="_AA6",txt_w=60,bc_st="#00FF7F",X=260,W=80,AL=2}
VS8=(softkey_back)
PRESS(VS1)
TXT1.fs=1
END_PRESS
PRESS(VS8)
EXIT
END_PRESS
load
TXT1.fs=2
end_load
//END
对应界面如下图所示:
如果仔细观察上面的程序,我们可以发现其短文本和输入输出框的Y位置均未编程,那么他是如何做到Y方向的正确排布的呢?这就是利用了“默认值原则”,Y方向没有编程,采用了系统预设值。所以我们会发现“DEF NULL1={WR=4}”以及变量NULL2,NULL4,NULL5等这些变量的实际作用就是占用了一个空行位置。
通过仔细观察这个例程,我们还可以发现另外一个知识点,就是“定义多列对话框”。
“多列对话框”是指在对话框中,一行可以显示多个变量,每个变量定义之间使用逗号“,” 隔开,这样不同的变量可以换行显示,方便查阅,但是关键字“DEF”总是表示新的一行的开始。也就是说一个DEF只定义一行,但这一行可以有若干个变量,变量定义之间用逗号分开,而且可以换行编程不同的变量。比如其中的变量TXT1和VAR1,它们之间用“,”隔开,前面只有一个DEF,这表示他们被定义在一行。后面的TXT2,VAR2等都是这种定义多列对话框的编程方法,他们同样在同一行,并且都不需要对Y方向坐标进行编程。如下图所示
举例2:
我们在进行单位文本设计的时候,在传统句法中,我们往往在文本位置写下单位名称即可,但是单位文本不单独设定的情况下是默认以50像素的宽度占用输入输出框的宽度,即无论定义输入输出框多宽,单位文本始终以50像素的宽度占用输入输出框的后面50像素宽度的位置,那么当我们输入mm/min这种宽度大于50像素的时候,就显示不完整了,如下图所示:
当我们知道了这个默认值原则后,采用扩展句法,只需要在变量定义参数中输入ut_w=60即可解决这个问题,修改后显示效果如下图所示:
1. SINUMERIK 828D开机调试手册 08/2018
2. 《SINUMERIK 828D_840Dsl_工具_RunMyscreens_例程合集》成飞
ZhuYuanji
2022.5.24
版本 | 日期 | 修改内容 |
V1.0 | 2022.5.24 |