信捷机器视觉脚本编程使用说明书_第1页
信捷机器视觉脚本编程使用说明书_第2页
信捷机器视觉脚本编程使用说明书_第3页
信捷机器视觉脚本编程使用说明书_第4页
信捷机器视觉脚本编程使用说明书_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信捷机器视觉脚本编程使用说明书 V2.3.0 目录目录 一、 脚本基本语法说明 . 2 1、 数据类型 . 2 (1) Int:整型 . 2 (2) Float:浮点型 . 2 (3) Object:复杂对象 . 3 (4) Array:数组 . 3 2、 语句支持及风格介绍 . 3 (1) 条件判断语句 :见附录 1 . 3 (2) 循环语句:见附录 1 . 3 (3) 算数运算符、逻辑运算符:见附录 2 . 3 二、 脚本本地方法说明 . 4 1、 本地方法列表 . 4 2、 本地方法说明 . 9 (1) 方法定义说明 . 9 3、 本地方法使用示例 . 10 (1) 构建对象 . 10 (2) 取得计算数值 . 11 (3) 批量访问全局变量 . 12 三、 关于动态数组与复杂对象的详细说明及示例 . 14 1、 基本概念 . 14 (1) 动态数组 . 14 2、 实际应用 . 15 (1) 取出点计数中的第二个点的 X 坐标 . 16 (2) 取出点计数中的第三个点的 Y 坐标 . 16 (3) 求点计数中第一点与第二点的距离 . 16 (4) 取出 目标计数组合集合0目标中心X. 17 一、 脚本基本语法说明 1、 数据类型 在 V2.1.3a 版本中,一共有 int、float、object、array 四种数据类型。 (1) Int:整型 脚本中的 int 变量拥有 Int 变量 变量是否自清除 全局变量 局部变量 变量位数 16 位 其中全局变量不会自清除,即在相机运行完一次后,变量中的值不会回复初 始值, 例如: 有全局变量 tool1.a, 当运行完第一次后为 10, 则第二次运行时 tool1.a 的初始值也为 10. 局部变量会自清除,第二次运行时,其值恢复为其初始值。 (2) Float:浮点型 脚本中的 float 变量拥有 float 变量 变量是否自清除 全局变量 局部变量 变量位数 16 位 (3) Object:复杂对象 脚本中的 object 变量拥有 object 变量 变量是否自清除 全局变量 局部变量 变量位数 16 位的倍数 (4) Array:数组 脚本中的 array 变量拥有 object 变量 变量是否自清除 全局变量 局部变量 变量位数 16 位的倍数 2、 语句支持及风格介绍 (1) 条件判断语句 :见附录 1 (2) 循环语句:见附录 1 (3) 算数运算符、逻辑运算符:见附录 2 二、 脚本本地方法说明 1、 本地方法列表 归类归类 函数名函数名 说明说明 视 觉 工 具 的 运 算 补 充 Public static native float dotdotdis(Object ptrP1,Object ptrP2); 点点距离:两点之间的距 离 public static native float dotlinedis(Object ptrP1,Object ptrLine); 点线距离:点到直线的距离 public static native float linelinedis(Object ptrLine1,Object ptrLine2); 线线距离:第一条线上所有 点到第二条线距离均值 public static native float linelineang(Object ptrLine1,Object ptrLine2); 线线角度:2 条线的夹角 public static native float dotdotang(Object ptrDot1,Object ptrDot2); 点点方向性角度 取 含 偏 移 量 数 值 public static native Object get_address(Object ptr,int offset); 在偏移地址取得地址 public static native Object get_object(Object ptr,int offset); 在偏移地址取得对象 public static native int get_int(Object ptr,int offset); 在偏移地址取得 int 值 public static native void set_int(Object ptr,int offset,int value); 在偏移地址设置 int 值 public static native float get_iq8float(Object ptr,int offset); 在偏移地址取得float值(视 觉 iq8 类型) public static native void set_iq8float(Object ptr,int offset,float value); 在偏移地址设置float值(视 觉 iq8 类型) public static native float get_iq15float(Object ptr,int offset); 在偏移地址取得float值(视 觉 iq15 类型) public static native void set_iq15float(Object ptr,int offset,float value); 在偏移地址设置float值(视 觉 iq15 类型) public static native float get_float(Object ptr,int offset); 在偏移地址取得 float 值 public static native void set_float(Object ptr,int offset,float value); 在偏移地址设置 float 值 public static native int get_short(Object ptr,int offset); 在偏移地址取得 short 值 public static native void set_short(Object ptr,int offset,int value); 在偏移地址设置 short 值 public static native int get_byte(Object ptr,int offset); 在偏移地址取得 byte 值 public static native void set_byte(Object ptr,int offset,int value); 在偏移地址设置 byte 值 public static native int getbit(int val,int offset); 取得某一位的值 public static native int setbit(int val,int bitval,int offset); 设置某一位的值 public static native int getbits(int val,int offset,int length); 取得某几位的值 public static native int setbits(int val,int bitval,int offset,int length); 设置某几位的值 数 学 运 算 函 数 public static native float sqrt(float val); 开跟号 public static native float sin(float val); 求 sin 值 public static native float hypot(float x,float y); 返回直角三角形的斜边的 长度 public static native float ceil(float x); 求不小于 x 的最小整数 public static native float floor(float x); 求不大于 x 的最大整数 public static native int abs(int x); 求整数 x 的绝对值 public static native float fmod(float x,float y); 求 x/y 的余数 public static native float fabs(float x); 求浮点数 x 的绝对值 public static native float exp(float x); 求 e 的 x 次幂 public static native float log(float x); 返回 log 值 public static native float log10(float x); 返回 log10 值 public static native float pow(float x,float y); 返回 x 的 y 次方 public static native float sqrt(float x); 计算 x 的平方根 public static native float sin(float x); 求 x(弧度表示)的正弦值 public static native float cos(float x); 求 x(弧度表示)的余弦值 public static native float tan(float x); 求 x(弧度表示)的正切值 public static native float asin(float x); 求 x(弧度表示)的反正弦 值 public static native float acos(float x); 求 x(弧度表示)的反余弦 值 public static native float atan(float x); 求 x(弧度表示)的反正切 值 public static native float sinh(float x); 求 x 的双曲正弦值 public static native float cosh(float x); 求 x 的双曲余弦值 public static native float tanh(float x); 求 x 的双曲正切值 动 态 数 组 public static native int listcount(Object ptr); 取得动态数组个数 public static native Object listitem(Object ptr,int index); 取得动态数组中某一项 public static native Object getdynobject(Object ptr); 取得动态对象 public static native int checkmem(Object ptr); 检查对象是否合法 全 局 变 量 public static native int fieldsgetint(int index); 读取当前脚本成员变量的 int 值 public static native float fieldsgetfloat(int index); 读取当前脚本成员变量的 float 值 public static native void fieldssetint(int index,int val); 将int值写入当前脚本成员 变量 public static native void fieldssetfloat(int index,float val); 将 float 值写入当前脚本成 员变量 数 组 public static native Object arraynew(int count); 创建 int 型或 float 型数组 public static native void arraysort(Object arr); 数组排序 public static native int arraygetint(Object arr,int index); 取得数组中某一项 int 值 public static native void arraysetint(Object arr,int index,int val); 设置数组中某一项 int 值 public static native float arraygetfloat(Object arr,int index); 取得数组中某一项 float 值 public static native void arraysetfloat(Object arr,int index,float val); 设置数组中某一项 float 值 public static native void arraycopy(Object source,int sourceIndex,Object dest,int destIndex,int count); 数组拷贝 创 建 对 象 public static native Object pointnew(float x,float y);? 创建一个点? public static native Object dotdotmiddot(Object ptrDot1,Object ptrDot2); 点点中点:2 个点之间的中 点 public static native Object dotdotmidline(Object ptrDot1,Object ptrDot2); 点点中线:2 个点的中垂线 public static native Object linelinedot(Object ptrLine1,Object ptrLine2); 线线交点:2 条线的交点 public static native Object dotlineparallel(Object ptrDot,Object ptrLine); 点线平行线 public static native Object dotdotline(Object ptrDot1,Object ptrDot2); 点点连线:2 个点的连线 public static native Object linenew(float x1,float y1,float x2,float y2); 创建一根线? 对 外 使 用 函 数 public static native void saveimage(); 保存图片(在应用程序目 录下的 ErrImage 目录下) public static native int getpixelgray(int x,int y); 获取图像灰度值 public static native void settrigger(int jobindex); 下个扫描周期对选择的作 业(要触发作业 1 则在”()” 中输入”1”)进行一次触发 (上位机无效) public static native return(); 返回值,0 为失败,1 为成 功 public static native writeoutput(int portnum, int val); 写外部端子(端口号,数 值),其中数值 1 为 ON, 数值 0 为 OFF。只有 0-3 号 口有效 public static native readinput(int portnum); 读输入口(端口号),1 为 ON,0 为 OFF。 映 射 区 public static native int mapdatagetshort(int addr); 从映射数据区获取short值 public static native void mapdatasetshort(int addr,int val); 从映射数据区设置short值 public static native int mapdatagetint(int addr); 从映射数据区获取 int 值 域 数 据 存 取 public static native void mapdatasetint(int addr,int val); 从映射数据区设置 int 值 public static native float mapdatagetfloat(int addr); 从映射数据区获取 float 值 public static native void mapdatasetfloat(int addr,float val); 从映射数据区设置 float 值 public static native Object mapdatagetobject(int addr); 从映射数据区获取 object 值 2、 本地方法说明 (1) 方法定义说明 1) 参数类型 参数类型可能出现 int、float、object、array。 2) 方法名(函数名) 方法名即为方法使用时所需要输入的函数名。 3) 返回值类型 即为调用函数后,返回值的类型,可能是 int、float、object、array。 4) 本脚本不考虑部分 这些部分是脚本后台代码。 3、 本地方法使用示例 (1) 创建对象 下面表格显示了所有能够构建对象的本地方法。 Public static native Object dotdotmiddot(Object ptrDot1,Object ptrDot2); 点点中点:2 个点之间的中点 public static native Object dotdotmidline(Object ptrDot1,Object ptrDot2); 点点中线:2 个点的中垂线 public static native Object linelinedot(Object ptrLine1,Object ptrLine2); 线线交点:2 条线的交点 public static native Object dotlineparallel(Object ptrDot,Object ptrLine); 点线平行线 public static native Object dotdotline(Object ptrDot1,Object ptrDot2); 点点连线:2 个点的连线 public static native Object pointnew(float x,float y);? 创建一个点? public static native Object linenew(float x1,float y1,float x2,float y2); 创建一根线? 1) pointnew,创建一个点 代码: Object onepoint; onepoint = pointnew(240f,258f); 其中: 240f 和 258f 的含义是强制240这个数字转换成 float 类型 。 onepoint 即为我们所需要的点对象,可以用于所有点的本地方法。 2) dotdotmiddot,点点中点 在图像中使用两个点定位,如图 2-1 其工具列表如图 2-2。其脚本代码为 Object middot; middot = dotdotmiddot(tool1.Out.point,tool2.Out.point); 图 2-1 两个点定位 图 2-2 点点中点工具 代码解释: 首先定义对象 middot,将两点定位工具定位到的点的中点赋给 middot。 3) arraynew,创建数组 定义一个有 3 个元素的数组,并分别赋值为 10、11、13,代码如下 Object arr = arraynew(3); arraysetfloat(arr,0,10f); arraysetfloat(arr,1,11f); arraysetfloat(arr,2,13f); (2) 取得计算数值 下面表格显示了所有能够运算对象之间距离、角度的本地方法。 Public static native float dotdotdis(Object ptrP1,Object ptrP2); 点点距离:两点之间的距离 public static native float dotlinedis(Object ptrP1,Object ptrLine); 点线距离:点到直线的距离 public static native float linelinedis(Object ptrLine1,Object ptrLine2); 线线距离:第一条线上所有点到 第二条线距离均值 public static native float linelineang(Object ptrLine1,Object ptrLine2); 线线角度:2 条线的夹角 public static native float dotdotang(Object ptrDot1,Object ptrDot2); 点点方向性角度 1) dotdotdis,两点距离(点点距离) 其中工具同点点中点 ,其使用局部变量的代码如下: float dotdis; dotdis=dotdotdis(tool1.Out.point,tool2.Out.point); 这样,dotdis 的值就是两个点之间的距离了,其单位为像素,类型为 float。 如果需要将这个距离输出到外部,必须使用全局变量,如图 2-3。 图 2-3,使用全局变量 2) dotdotang,两点连线形成的方向角(点点角度) 其中工具同点点中点 ,其使用局部变量的代码如下: float dotang; dotang=dotdotang(tool1.Out.point,tool2.Out.point); 这样,dotang 的值就是两个点的连线与水平线之间的夹角,其单位为度 。 (3) 批量访问全局变量 下面是在脚本中批量访问全局变量的本地方法: public static native int fieldsgetint(int index); 读取当前脚本成员变量的 int 值 public static native float fieldsgetfloat(int index); 读取当前脚本成员变量的 float 值 public static native void fieldssetint(int index,int val); 将 int 值写入当前脚本成员变量 public static native void fieldssetfloat(int index,float val); 将 float 值写入当前脚本成员变量 在这里只给出 int 全局变量的示例。 1) fieldsgetint,批量读取全局变量数值 如下图: 运行完上面的脚本后,数组 arr 中元素中的值则为: arr0=1 arr1=2 arr2=3 arr3=4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论