示教(teach)

功能

将轴的坐标(绝对/机床)或表达式的值赋给宏变量或KUI自定义变量

参数

  • 控件地址: 被赋值的宏变量KUI自定义变量(自定义变量名称可以为小写字母或小写字母+数字,不支持大写字母,为了区别于系统数据,将自定义变量包含在大括号{}内,形如{v1})。此参数类型为字符串,写作 "#500"
  • 源数据地址: 描述的坐标地址(如X)或表达式(如F1000[u32]/1000),此参数类型为字符串,写作 " X "
  • 位置大小: 控件所在位置及所占空间大小,此参数类型为元组,写作 (a, b, c, d) 其中a/b/c/d都应该是正整形值分别表示控件的 起始行/起始列/所占行数/所占列数,其中c/d可以省略,省略时值均为1。
  • 颜色和背景色(不设为默认值)
  • 字体大小(不设为默认值)
  • 读写模式:取值可以为 确认/只读,此参数可以省略,默认为 确认,此参数非字符串类型,写作 只读
  • 线框格式:取值可为 隐藏/不隐藏,此参数可以省略,默认为不隐藏,此参数类型非字符串,写作 隐藏,会隐藏控件四周的线框。
  • enable表达式:当该表达式值不为0时该控件才可以修改或进行示教操作,等于0时控件不捕获光标,故不能操作。若不设置该参数,则可以操作。此参数为字符串类型,写作enable="#100",则只有当#100不等于0时才可以修改。
  • id:控件名称,用于标识控件,控件名称不可重复,如果不需要可以不设置,可以为数字或中英文字符串,写作 id="page1"id=1
  • group:控件所属示教组,属于同一示教组的控件可以同时示教。
  • action:为响应动作,可以通过设置action参数实现为data控件输入值时执行相应的动作,action取值可以为 运行脚本/运行脚本文件/程序段模板 ,在 确认 模式下使用。
    • 运行脚本:语法为:action=运行脚本("xxx"),括号中的字符串为符合KUI脚本语法的若干语句。当操作者手动改变控件数据值时,将执行这些语句。
    • 运行脚本文件:语法为:action=运行脚本文件("xxx.prg"),括号中的字符串为KUI脚本文件名称,文件需放到当前目录下或写入绝对路径。当操作者手动改变控件数据值时,将执行此文件。
    • 程序段模板:语法为:action=程序段模板('''xxx'''),括号中的字符串为一个程序模板段,当操作者手动改变控件数据值时,将以其为模板生成程序段,插入当前光标之后。程序模板段可以包含任意符合KUI脚本语法的语句和一些会生成程序的模板语句,模板语句中的字符在生成程序时不变,变量则用其值来替代。例如 ’’’ G01 X#500’‘‘在生成程序时(假设#500值为100),会生成程序"G01 X100;"。
  • password: 修改控件中的数据需要的密码id,需配合set_password()函数使用。此参数为字符串类型,写作 password=1,此时首次修改此控件数据时,需要输入密码"xxx",否则无法修改。
  • focus_in: 光标进入该控件时所触发的动作或动作列表,例如:focus_in=表达式("#500=10")
  • focus_out: 光标退出该控件时所触发的动作或动作列表,例如:focus_out=表达式("#500=0")
  • 光标顺序: left左边控件,right右边控件,prev上一控件,next下一控件(对应数控系统面板上的 “左”/“右”/“上”/“下"按键),当需要设置控件的光标顺序时将对应控件的id赋值给相应参数即可,4个参数可以设置0个或多个。此参数为字符串类型或数字类型,取决于跳转到的控件的id,写作 left="LA"left=1,则按系统面板上的"左"按键时,id为"LA”/1 的控件捕获光标。
  • min: 从此控件输入数据值时的最小值,小于此值时会报错,操作无法完成,写作 min=1
  • max: 从此控件输入数据值时的最大值,大于此值时会报错,操作无法完成,写作 max=1。(如果同时设置max和mix两个参数,则需要满足条件 “max >= min”,否则报错)(min和max两个参数仅限制从控件改变值时的输入范围,如果控件绑定的是系统变量,如宏变量#500,则当#500的值超出范围时可以正确显示,这两个参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • min_length: 从此控件输入数据值时的最小长度,长度小于此值时会报错,操作无法完成。小数点和数字的长度都为1,写作 min_length=1
  • max_length: 从此控件输入数据值时的最大长度,长度大于此值时会报错,操作无法完成。小数点的长度为1,写作 max_length=1。(如果同时设置max_length和mix_length两个参数,则需要满足条件"max_length >= min_length",否则报错)(min_length和max_length两个参数仅限制从控件改变值时输入值的长度范围,如果控件绑定的是系统变量,如宏变量#500,则当#500的值超出长度范围可以正确显示,这两个参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • anyof: 限制从此控件输入数据值时的所有值,用法为 anyof=[12, 13, 14],此时从控件输入数值时必须是12/13/14中的一个,否则报错,操作无法完成。
  • noneof: 限制从此控件输入数据值时不可取的所有值,用法为 noneof=[12, 13, 14],此时从控件输入数值时不能是12/13/14中的一个,否则报错,操作无法完成。(anyof和noneof两个参数仅限制从控件改变值时输入值的范围,如果控件绑定的是系统变量,如宏变量#500,则当#500的值超出范围可以正确显示,这两个参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • data_type: 限制从此控件输入数据值时的类型,可取的值共有三种类型 ‘int’/‘uint’/‘float’,分别代表 有符号整形/无符号整形/浮点型, 写作 `data_type=‘int’,则从此控件输入的数值仅可以是有符号整形,输入浮点型时报错。(此参数仅限制从控件改变值时输入值的类型,如果控件绑定的是系统变量,如宏变量#500,则当#500的类型与此参数不符时也可以正确显示,此参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • format: 对数值的显示进行格式化,格式为 format="%xxx" ,是C语言库函数printf的子集,目前仅支持几种简单的格式化,在下面列出。使用此参数时,必须使用data_type参数,且此时参数的格式化需要与data_type类型相对应。格式化时不会改变变量的值,但会改变其显示形式。一些情况可能会导致显示的值与变量真实值不符。(使用此参数时你需要明确知道你在做什么,并且不会给自己和用户带来困扰)。下面是目前支持的格式化形式。
    • textbox("{v1}", (1, 1), format="%.nf", data_type=‘float’) 此时将数据格式化为浮点型,n为正整形数值,此时控件会显示n位小数,剩余小数部分按四舍五入处理。此时必须设置data_type参数为’float’。".n"可以省略,省略时默认显示6位小数。例如:显示三位小数点textbox("{v1}", (1, 1, 30, 150), format="%.3f", data_type='float')
    • textbox("{v1}", (1, 2), format="%0nd", data_type=‘int’) 此时将数据格式化为带符号整形,n为正整形数值,此时控件中数据宽度为最小为n,左侧用0补齐,此时必须设置data_type参数为’int’或’uint’。“0n"可以省略,此时没有最小宽度限制。例如:显示有符号整数,宽度为4,左侧用0补齐textbox("{v1}", (1, 1, 30, 150), format="%04d", data_type='int')
    • textbox("{v1}”, (1, 3), format="%0nu", data_type=‘uint’) 此时将数据格式化为无符号整形,n为正整形数值,此时控件中数据宽度为最小为n,左侧用0补齐,此时必须设置data_type参数为’uint’。“0n"可以省略,此时没有最小宽度限制。例如:显示无符号整数,宽度为4,左侧用0补齐textbox("{v1}", (1, 1, 30, 150), format="%04d", data_type='int')
  • soft_keyboard: 设置虚拟键盘类型ID,支持系统键盘/无键盘,例如:soft_keyboard=系统键盘
  • visible: 是否显示:不显示visible=0

此控件的示教功能需要与相应的菜单一起使用。 详细说明见menu中的示教绝对示教机床示教表达式测量加输入部分表达式

常用示例

此控件用于将坐标值或表达式值一键读取到指定宏变量或KUI脚本的自定义变量中,也可用于将指定变量加上或减去控件的编辑值,类似于"测量"和"加输入"等功能。可以将同类型的示教控件置于一个示教组中实现同时示教。 例如,在对伺服台尾进行编程时,依次手动将台尾移动到合适的回退位置、快速位置、顶紧位置,在三个位置分别示教对应的teach控件,将对应的坐标值赋值给相应的变量,用于生成程序,完成伺服台尾的编程。

teach

with page(456, 800, id="page1", text=(白色, f20x10, 左对齐), bg_color=(24, 24, 24)):

    # 测量功能:当在teach控件输入一个编辑值50(不按确认按键),按下测量按键后实现赋值#500=#500-50
    # 加输入功能:当在teach控件输入一个编辑值50(不按确认按键),按下加输入按键后实现赋值#500=#500+50
    # 注意:测量和加输入可以同时对一个控件生效,但只针对含有$m的控件有效。
    label("测量/加输入功能", (50, 30, 40, 150))
    teach("#500", "#500+$m", (50, 180, 40, 150), 绿色, f24x12)

    # 当光标移动到含有轴名或coor变量的teach控件时,按下示教绝对后实现赋值#510=X轴的绝对坐标
    # 当光标移动到含有轴名或coor变量的teach控件时,按下示教机床后实现赋值#510=X轴的机床坐标
    label("示教绝对/机床", (90, 30, 40, 150))
    teach("#510", "X", (90, 180, 40, 150), 绿色, f24x12)

    # 示教表达式: 当光标移动到含表达式的teach控件时,按下示教表达式后实现赋值#520=#600*100+56
    label("示教表达式", (130, 30, 40, 150))
    teach("#520", "#600*100+56", (130, 180, 40, 150), 绿色, f24x12, group=1)

    label("示教表达式", (130, 360, 40, 150))
    teach("#521", "#601*50+21", (130, 510, 40, 150), 绿色, f24x12, group=2)

    # 示教部分表达式: 当在teach控件输入一个编辑值50(不按确认按键),按下部分表达式按键后实现赋值#530=(#530+50)+100
    label("示教部分表达式", (170, 30, 40, 150))
    teach("#530", "#530+$m", (170, 180, 40, 150), 绿色, f24x12)

    menu("第一页", "page1")
    menu("测量", 测量)   # 测量功能
    menu("测量", 测量(tip_str="这是测量弹窗显示内容"))   # 可以自定义测量示教时弹窗内容
    menu("加输入", 加输入)  # 加输入功能
    menu("加输入", 加输入(tip_str="这是加输入弹窗显示内容"))  # 可以自定义加输入示教时弹窗内容
    menu("示教绝对", 示教绝对)  # 示教绝对功能
    menu("示教绝对", 示教绝对(tip_str="这是示教绝对弹窗显示内容"))  # 可以自定义示教绝对示教时弹窗内容
    menu("示教机床", 示教机床)  # 示教机床功能
    menu("示教机床", 示教机床(tip_str="这是示教机床弹窗显示内容"))  # 可以自定义示教机床示教时弹窗内容
    menu("示教表达式", 示教表达式)  # 示教表达式功能
    menu("示教表达式", 示教表达式(tip_str="这是示教表达式弹窗显示内容"))  # 可以自定义示教表达式示教时弹窗内容
    menu("示教表达式", 示教表达式(group=1, tip_str="这是示教表达式弹窗显示内容"))  # 可以按组同时示教,可以自定义示教表达式示教时弹窗内容
    menu("部分表达式", 部分表达式("$v+100", tip_str="这是示教表达式弹窗显示内容"))  # $v=(#530+$m),可以自定义示教表达式示教时弹窗内容

特殊示例

V7版本的teach控件可以同时支持测量、加输入、示教表达式和部分表达式功能。其中,示教表达式可以使用coor1、#5101或#5201等轴绝对机床坐标相关的变量来实现坐标示教。

实现效果:针对同一个控件,可以将轴坐标示教到宏变量里,也可以对宏变量进行测量、加输入操作。

with page(456, 800, id="page1", text=(白色, f20x10, 左对齐), bg_color=(24, 24, 24)):

    # 通过select动态选择示教的源地址
    label("测量/加输入功能  示教表达式可以用于示教坐标  部分表达式功能", (50, 30, 40, 600))
    teach("#500", "select{F19000.0, (0, #500+$m), (1, #5101)}", (90, 30, 40, 150), 绿色, f24x12)

    menu("第一页", "page1")
    menu("测量", [表达式("F19000.0=0"), 测量(tip_str="这是测量弹窗显示内容")])   # 当F19000.0=0时选择#500+$m,并进行测量示教
    menu("加输入", [表达式("F19000.0=0"), 加输入(tip_str="这是加输入弹窗显示内容")])  # 当F19000.0=0时选择#500+$m,并进行加输入示教
    menu("示教表达式", [表达式("F19000.0=1"), 示教表达式])  # 当F19000.0=1时选择#5101,并进行机床宏变量示教
    menu("部分表达式", [表达式("F19000.0=0"), 部分表达式("$v+100", tip_str="这是示教表达式弹窗显示内容")])  # 当F19000.0=0时选择#500+$m,并进行部分表达式示教