指令集总览

            

1、General

1)、Comment:: 注释指令。

2)、Image Window: 创建新的图像窗口。 True: 取像之后更新图像窗口显示;False: 有新图像时不更新图像窗口。取像成功返回true。

3)、Return: 流程指令”返回“。从子程序插入一个返回。

4)、Subrotine: 创建一个子程序。

5)、Test: 评估声明。

2、Array: Boolean(布尔数组指令)

     同 "Array: Number(整型数组指令)"

3、Array: Line(直线数组指令)

同 "Array: Number(整型数组指令)"

4、Array: Number(整型数组指令)

1)、AbsoluteValue: 求绝对值,array = |array|。

2)、Add / Subtract / Multiply: 两个数组求和 / 差 / 积,array = array_1 (+/-/*) array_2。

3)、Append: 将指定的元素添加到数组的结尾。

4)、AppendRep: 将指定的元素在数组结尾添加n次。

5)、ClipHigh / ClipLow: 将数组中>= / <=threshold的值替换成above。

6)、Concatenate: 将两个数组合并。

7)、ConstMulAdd: array = intput_array * mulConst + addConst。

8)、CopyArray: 将输入数组的全部或部分元素复制到一个新的数组。

9)、Correlate: 关联两个数字数组并输出生成的Pearson相关系数。 如果两个数组的大小不同,则使用较小数组的大小。

Pearson相关系数 (Pearson Correlation Coefficient)是用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系。其范围是-1~1,0表示无相关性或出错。

Pearson相关系数使用公式如下:

其中,X是array_1的值,Y是array_2的值。带上横线的X和Y分别是数组的平均值。

10)、Create: 创建一个含有n个元素的新数组并初始化为0。

11)、CreateInf: 用传入的值创建一个新数组。

12)、CreateRep: 创建一个含有n个元素的新数组并全部初始化为指定的值。

13)、Difference: 将array_1中含有但array_2中没有的元素输出到新的数组中。

14)、Erase: 删除指定索引处的元素。

15)、EraseRange: 删除指定索引范围内的元素。

16)、Extrema: 返回输入数组中的最大值和最小值以及对应的数组索引。

17)、GetAt / SetAt: 获取 / 设定指定索引处元素的值。

18)、GetRange: 输出是一个新的数组,它是输入数组的子集,包含从索引开始的Count个元素。

包含索引处的元素。 如果请求的元素太多,则仅返回可用的数字,而不发出错误信号。 换句话说,如果第一个数组的大小小于(index + count),则生成的数组可能小于count,并且函数返回时没有错误。

19)、SetRange: 将指定索引范围内的元素设为常量。

wrap选项允许设置的值范围离开数组的末尾并环绕到数组的开头,就像数组是圆形而不是线性一样。 例如,这有助于抑制找到的最大曲率(使用Array:Number:Maximum),以便在对象上找到其他最大值(角)。

19)、Insert: 在指定索引出插入新值,并将索引后边的元素后移。

20)、InsertRep: 在指定索引处插入n个元素,并全部赋以特定的值。

21)、Maxinum / Mininum / MeanAndVariance: 返回数组中元素的最大值、最小值、均值、方差和标准差。

23)、Resize: 将数组长度调整为特定的长度,根据需要删除或增加元素。

24)、Reverse: 将数组中的元素倒序输出。

25)、Size: 返回数组的长度。

26)、Smooth: 平滑的输入数组值,近似于高斯滤波器形状。(啥意思??没看懂)

27)、Sort: 将数组中的元素按升序(默认)或降序进行排序。

29)、Threshold: 将数组中>=threshold的值替换成above,其他的替换成below。

30)、ThresholdBand: 见数组中>=high threshold的值替换成above,<low threshold的值替换成below,其他的替换成between。

5、Array: Point(点数组指令)

1)、Remove Isolated Outliers: 删除不属于点之间最大距离度量集群的点。

此函数计算点数组中每个输入点与其前后两个近邻点之间的最大距离。然后基于“容差”将距离值聚类成组。不在最大集群(组)中的输入点将被删除并放入输出“bad points”数组中。 剩余的点在“good points”输出数组中返回。 这样可以很好地去除输入点数组中的少量的孤立“噪声”点,但如果存在许多噪声点则效果不佳,因为噪声点可能形成最大的簇(组)。

其他同 "Array: Number(整型数组指令)"

6、Array: String(字符串数组指令)

同 "Array: Number(整型数组指令)"

7、Boolean指令集

    1)、AND / OR / NOT: 与或非。

2)、SetBoolean: 将布尔值(输出值)设定为指定的值。

3)、XOR: 异或,如果奇数个输入为true,则为true。

8、Geometric指令集

1)、ADToLn: 根据一个弧度和一个距离(原点到直线的距离)来确定一条直线。

2)、AngleBisect: 计算在点point2处相交的两条线之间的角平分线(从点point1到点point2的直线和从点point3到点point2的直线)。

3)、AngleNormalize: 将角度转化成-π/2~π/2范围内的角度。

4)、CircleBoundingBox: 求一个圆的外切正方形的四个角点(左上、左下、右上、右下)

5)、CircleInTriangle: 求三角形的内切圆。

6)、CircleLineIntersect: 求一条直线和一个圆的交点数量及角点坐标。

7)、Convex Hull: 返回一个点集合的凸壳。

8)、Curvature: 求一段曲线(点集合表示)的曲率。

9)、Curvature-Hole: 求一段闭合曲线的曲率,并将设定曲率内的曲线用点标示出来。

10)、LnNormalize: 使直线的斜率强制转化为-1/2*Pi~+1/2*Pi之间,使之成为一条标准直线。

11)、LnParallel: 过一点求一条直线的平行线。

12)、LnPerpendicular: 过一点求一条直线的垂线。

13)、LnsBisect: 求两条直线的角平分线。

14)、LnSet: 把一条直线指定给一个线类型变量。

15)、LnsIntersection: 求两条直线的交点。

16)、LnToAD: 把一条直线的斜率和距离提取出来。

a表示直线的角度;d表示原点到直线的距离,直线在原点上方为负,下方为正,如右图所示。

通过a和d表示直线的方程:y=tan(a)*x+d/cos(a)。

17)、LnToLnAngle: 两条直线的夹角。

18)、LnToLnDist: 两条直线与第三条直线的两个交点之间的距离也就是P1和P2之间的距离。

19)、MakeAnchor: 求一个点(P1)在一个方向上,相同距离(dist)的两个对称点(P1’/P1’’)。

20)、PtAverage: 求点集合中所有点的中点。

21)、PtAverageInf: 求给定的一系列点的中点。

22)、PtMiddle: 求两个点的中点。

23)、PtRotate: 一个点绕另一个点转一个固定的角度,得到旋转之后的点。

24)、PtSet: 把一个点指定给一个点类型变量。

25)、PtsToBestAngle: 过两点的直线与图像X轴的夹角。

26)、PtsToBestCircle: 通过一个点数组集合中的点拟合一个圆。

27)、PtsToBestCircleInf: 通过给定的一系列点拟合一个圆。

28)、PtsToBestLine: 通过一个点数组集合中的点拟合一条直线。返回拟合所使用点的个数和数组、丢弃点的数组以及拟合的直线。

"percent outliers" -> 作为异常值丢弃的点的百分比。

“proprecess" -> 如果为true,请使用Remove Isolated Outliers作为预处理。

"tolerance" -> 从理想点到最差可接受点的最大距离。必须大于零。

29)、PtsToBestLnInf: 通过给定的一系列点拟合一条直线。

30)、PtsToBestLnMaxOut: 通过一个点数组集合中的点拟合一条直线。允许丢弃指定百分比的异常值以改善直线拟合。返回拟合所使用点的个数、丢弃点的数组、直线的最近和最远点以及拟合的直线。

31)、PtsToLnDist: 数组内的点到直线的距离。

32)、PtsToLnDistInf: 指定的一系列点到直线的距离。

33)、PtsToPtsDist: 一组点到另一组点的距离。

34)、PtToLnDist: 一个点到直线的距离。

”measurement point“ -> 垂足的坐标。

“measurement line” -> 垂线。

35)、PtToPtAngleDist: 求两点之间的距离以及两点拟合的直线与X轴的夹角。

36)、PtToPtDist: 一个点到另外一个点的距离、X的距离和Y的距离。

37)、PtToPtsDist: 一个点到一组点的距离、X的距离和Y的距离。

38)、PtToPtsDistMinMax: 一个点到一组点的距离以及最小最大距离。

39)、RakeLineFit: 通过Rake ROI中的点拟合一条直线。

”linear tolerance" -> 从理想点到最差可接受点的最大距离,即线性公差值。必须大于零。

"angular tolerance" -> 从理想点到最差可接受点的最大角度,即角度公差值。必须大于零。

此函数进行三次传递以细化异常值的删除。

第一次检查一个点与其前后两个近邻点之间的距离。如果距离大于线性公差值,则移除该点。这适用于孤立的“噪声”点,但不适用于分组的异常点。

第二次检查第一个点和阵列中每个连续点之间的角度。如果角度大于角度公差值,则移除该点。前两点必须是位于线上的“好”的数据。如果组很小,并且大多数点位于期望的线上,则可以更好地删除组合在一起的异常值。

第三次检查最后一个点和每个连续的前一个点之间的角度,向后工作。如果角度大于角度公差值,则移除该点。最后两点必须是位于线上的“好”的数据。与第二次一样,如果组小,并且大多数点位于期望的线上,则可以更有效地去除组合在一起的异常值。

该公式适用于孤立的“噪声”点,也适用于小组中的点,这些点形成少数采样点。组越接近期望的线,角度公差越不可能将它们全部移除(角度变小)。应移除形成深、窄凹口或凿孔的点。可能无法完全去除宽而浅的凹口。

40)、PtToXY: 求一个点的X/Y坐标。

41)、TwoPtsToLn: 用两个点拟合一条直线。

42)、XYToPt: 用X/Y坐标拟合一个点。

9、IO: Annotations(图像显示指令集)

    1)、Circle / Circles: 在图像中画一个圆 / 一系列等半径的圆。

2)、Line / Line Segment: 在图像中画一条直线 / 线段。

3)、Pixels: 在图像中把一些像素点标示出来。

4)、Point / Points: 在图像中画一个 / 组点。

5)、Polyline: 在图像中画一条多线段(折线)。

6)、Rectangle: 在图像中画一个矩形。

7)、Text: 在图像中显示一段文本。

10、IO: Calibration

1)、Calibrate Using a Grid: 使用网格重新校准。该指令允许从自定义前端程序执行目标或网格校准。以前只能从GUI界面获得网格或目标校准。

从GUI界面设定如下:

在程序中执行网格校准:

2)、Calibrate Using Point Arrays: 使用一系列点校准。分配校准系统。选择4个输入点,并提供相应的世界坐标。您应该已经在图像窗口中识别或创建了四个点。

3)、Calibrate Using Points: 使用输入点进行校准。分配校准系统。选择4个输入点,并提供相应的世界坐标。您应该已经在图像窗口中识别或创建了四个点。在程序窗口中,可以将点拖动到校准输入上。

4)、Calibrate Using Transformation Values: 使用转换值进行校准。分配校准系统,提供轴坐标原点和比例因子(乘数)。

5)、Load Calibration: 加载以前保存的校准数据文件。可以通过指令或从【图像窗口选项(双击图像窗口打开)】->【Calibration】导出(保存)校准数据。

注:此校准数据只在使用相同的相机、相同的镜头、相同的相机位置以及与目标物体相同的距离时有效。如果这些因素中任意一个发生变化,则校准数据无效。

6)、Pixels To World: 将点位置从像素坐标转化为世界坐标(或校准坐标)。

7)、Save Calibration: 将校准数据保存到文件中。

8)、Set Identity Calibration: 设置1对1(标识)校准,此功能将测量值返回到像素值,”取消校准“校准系统。

9)、World To Pixels: 将点位置从世界坐标(校准坐标)转换为像素坐标。

11、IO: Camera(相机参数设定指令集)

1)、Flush acquired images: 清除所有采集图像的相机缓冲区。

2)、Get bool / number / string feature: 返回相机的布尔 / 数字 / 字符串特征。返回[Boolean]类型的相机功能的当前值。可用功能及其值由相机制造商定义。(没懂什么意思,应该是相机本身的参数)

3)、Set bool / number / string feature: 设置相机的布尔 / 数字 / 字符串特征。

4)、Get camera count: 检测系统内连接相机的个数。

5)、Get missed frame count: 返回自当前采集开始以来丢失的帧数。

6)、Get number of acquired lines: 返回相机获取的行数。此指令适用于线扫相机,用以返回在可变帧模式下获取的行数。

7)、Halt camera ACQ: 停止相机的采集。

8)、Read register: 读取相机寄存器。

9)、Send command: 往相机写入一个命令字符串。

10)、Set Brightness: 设置白平衡。范围通常是0-100,但实际值由相机制造商定义。

该指令适用于PIC-2592相机。 如果Sapera网络驱动程序处于“使用Teledyne DALSA接口”模式,此指令适用于Genie系列相机,但不适用于Genie TS系列或其他相机。

11)、Set Lut: 设置相机查找表(Look-Up Table)。

12)、Set Shutter: 设置曝光时间。

13)、Set Trigger Delay: 设置抓取部件传感器触发和相机触发信号发出之间的延时。

14)、Write register: 往相机寄存器里边写值。

12、IO: ControlLogix

ControlLogix系统是基于机架的系统,可以提供对使用顺序控制、过程控制、运动控制和驱动控制的控制系统进行组态的选项,还可提供通信I/O功能。

注:必须预先在【Options】->【IO】 - > 【Control Logix】中定义控制器和句柄变量。

1)、Read / Write: 从ControlLogix控制器读取 / 写入单个值。 不适用于字符串类型。 数字被解释为字节,字,双字或实数值。

2)、Read Array / Write Array: 从控制器中读取 / 写入一组值。 不适用于长度前缀的字符串类型。 数字被解释为字节,字,双字或实数值。

3)、Read Bool / Write Bool: 从控制器读取 / 写入一个布尔值。

4)、Read Bool Array / Write Bool Array: 从控制器读取 / 写入一组布尔值。

5)、Read String / Write String: 从控制器读取 / 写入单个字符串。

6)、Read String Array / write String Array: 从控制器读取 / 写入一个字符串数组。

13、IO: Digital Input(IO输入信号指令集)

1)、Get input IO count: 获取IO输入口的数量。

2)、Read: 读取一个IO输入口的状态。

3)、Read Array: 读取一组IO输入口的状态。

4)、Read Decimal: 一次读取所有IO输入口的状态。最大数字通道数为32。

5)、Wait For Pulse: 等待一个IO输入口的脉冲信号。

6)、Wait For State: 等待一个IO输入口的常态信号。

14、IO: Digital Output(IO输出信号指令集)

1)、Advanced IO: Enqueue Decision: 排列高级I/O(AIO)决策。 必须存在并启用高级I/O功能。 高级I/O是VA21,VA31,VA40,VA41和NetSight II-MCA的硬件功能。 不适用于其他硬件。

Parameters: "Decision" -> Pass(0),Fail(1),Recycle(2)。

如果可用,则使用IFC Camera Configurator配置高级I/O硬件和时序。 参数保存在Camera Configuration文件中。

2)、Advanced IO: Initialize Queue: 排列初始I/O决策。 必须存在并启用高级I/O功能。 高级I/O是VA21,VA31,VA40,VA41和NetSight II-MCA的硬件功能。不适用于其他硬件。

如果存在,则使用IFC Camera Configurator配置高级I/O硬件和时序。 参数保存在Camera Configuration文件中。

3)、Async Pulse: 输出异步脉冲。将输出“channel”设置为和“state”相反。等待“time”时间(以ms为单位),然后将输出“channel”设置为“state”。Sherlock执行Async Pulse之后的下一个指令,无需等待此指令完成或脉冲执行。

4)、Get output IO Count: 获取IO输出口的个数。

5)、Pulse: 将输出“channel”设置为和“state”相反。等待“time”时间(以ms为单位),然后将输出“channel”设置为“state”。Sherlock执行Pulse之后的下一个指令之前需等待脉冲指令完成。

6)、Read: 读取IO输出口的状态。

7)、Read Array: 一次性读取多个IO输出口的状态。

对于channels数组中索引N处设置为1(True)的任何元素,读取相应的数字输出通道N,并且将该通道的值写入到索引N处的states数组中。

对于channels数组中设置为0(False)的元素,states数组中的相应位置会被设置为零(False)。 应忽略这些位置,因为它们不反映相应输出通道的状态。

8)、Read Decimal: 一次性读取所有IO输出口的状态(最大为32通道)。

9)、Schedule Async Pulse: 安排一个异步脉冲输出。

将channel设置为与state相反, 等待delay(单位ms)时长后将channel通道设置为state,再等待time(单位ms)时长后将channel设置为与state相反。Sherlock执行下一个语句时不用等待脉冲输出发生。

10)、Write: 将state写入到输出channel中。

11)、Write Array: 一次性写入多个IO输出口的状态。

对于在channels数组中索引N处设置为1(True)的任何元素,将数字输出通道N写入到索引N处的States数组中对应值的状态。

例如:下列的数组将0写入通道2,1写入通道3,通道0和1未写入值,因为’channels'值为0。

12)、Write Decimal: 一次性写入所有数字输出口(最大为32输出通道)。

‘value’ -> 写入到数字输出口的10进制(或16进制)数。该值被重新解释为一个二进制位模式,并写入到数字输出通道中。lsb(最低有效位)始终是输出通道0。

15、EtherNet/IP

EtherNet/IP是由RockWell开发的工业以太网通讯协定,是通用工业协定(CIP)的一部分。IP是Industrial Protocol(工业协议)的简称,和网际协议没关系。

注:在执行指令或运行一次(至少一次)之前,不会初始化EthernetIP通信。 如果指令尚未执行,PLC软件将无法访问运行Sherlock的系统。 或者,您可以在启动Sherlock时自动启动EthernetIP通信服务器。 在以下路径进行设置:菜单栏【Options】->【Application】->【Advanved】->【EthernetIP: start EthernetIP server on Sherlock startup】。

    1)、Read: 读取一组数值。

2)、Write: 写入一组数值。

16、IO:File(文档指令集)

1)、Append: 向文档内追加内容。下次写入不会覆盖掉之前的内容。

2)、Close: 关闭一个打开的文档。

3)、Open: 打开一个文档。

4)、Read: 读取文档中(已打开)的内容。

5)、Write: 往文档中写入内容。下次写入会把之前的覆盖掉。

17、GE Fanuc

GE(通用电气公司,GeneralElectricCompany)和FANUC(日本发那科公司)合资企业,目前在中国主要销售PLC(90-70 / 90-30)和软件(Intellution,IFix/Fix)。

注:必须先在【Options】->【IO】 - > 【GE Fanuc】菜单中定义控制器。

1)、Read: 从控制器读取单个数值。

2)、Read Bool: 从控制器读取单个布尔值。

3)、Write: 往控制器写入单个数值。

4)、Write Bool: 往控制器写入单个布尔值。

18、IO:Image Window(图像窗口指令集)

1)、Clear Image Log: 清除图像日志或序列。

2)、Copy to Cipboard: 复制图像至剪切板。

“graphics” -> 0: 只复制图像,不带图形和注释;1: 复制带有图形和注释的图像。

3)、Enable image Logging: 启用 / 禁用图像日志。

图像参数在图像窗口属性里定义,通过该指令无法修改其它参数。

4)、Get FTP Image Logging Status: 获取图像窗口的FTP日志记录状态。

此函数在调用时报告FTP子系统的状态(因为FTP客户端独立于程序 [ivs] 执行器工作),但应足够准确以捕获最重要的问题。

“tfp log active” -> 如果此窗口启用了FTP图像日志记录,则为TRUE。

“error” -> 上一条FTP错误说明。

“failed upload” -> 上一个上传操作失败的文件(如果有)。

“queze size” -> 排队等待上传的图像数量,如果没有可用信息则为-1。

“last queued” -> File last queued。文件最后队列。

“response” -> FTP服务器响应(如果可用)。

“last result” -> 成功返回TRUE,否则返回False。

5)、Get Image Attributes: 获取图像大小(像素)及每像素的字节数。

6)、Get Image Source: 输出描述所选图像窗口的图像源的字符串。

7)、Load Image: 加载一个图像文件。

8)、Log Image: 记录图像,或者将图像保存到图像文件的“图像日志”序列。

注:推荐不要使用和操作系统相同的驱动器分区(通常是C:驱动器)来记录图像。Windows NTFS文件系统中的缺陷会导致在不断将文件(如映像)写入操作系统分区时导致引导扇区损坏。

9)、Refresh: 刷新图像窗口。

10)、Reset Image Log: 复位图像日志的日志索引,将四位数的日志索引设置为零。(可选)可以刷新图像队列。

11)、Save Image: 保存图像到指定文件。

12)、Save Image with Graphics: 将带有图形和注释的图像保存到文件中。

13)、Save Image with Graphics to Buffer: 将带有覆盖图形的给定图像窗口保存到“临时”缓冲区。

14)、Set Camera: 为图像窗口指定相机(如果采集硬件支持多个相机的话)。

15)、Set External Trigger: 设置相机为外部触发模式。

16)、Set Palette: 设置单色图像显示的调色板方法。

选择预定义的调色板或可选的自定义调色板。自定义调色板方法需要包含一个256个元素的输入素组,否则会发生错误。该数组的大小应精确为256个元素,但如果更大,则忽略255之后的索引并生成警告。较小的数组会产生错误。除Custom之外的所有方法都会忽略调色板输入数组。

17)、Start Camera Acquisition: 从所选的活动图像源开始采集。

19、IO: Keyboard

1)、Test any key: 测试任意按键。如果在执行此指令期间按下任意键(绑定或预定义的快捷键/加速键除外),则输出"keypress"为真。如果"keypress"为false,则输出键码"keycode"为false。

2)、Test one key (number) / Test one key (string): 测试特定键。如果在执行此指令期间按下与给定键码匹配的键,则输出为true。KeyCode是Windows虚拟键码。

20、IO: Melsec FX/Q/Tcp

MELSECNET是三菱为其产品开发的专用数据链路系统。

    1)、MC FX serial read word: 使用串行协议从设备读取字。

该指令使用格式1和4实现Melsec-FX协议。

必须正确配置PC的串行端口设置(波特率,数据大小,奇偶校验)以匹配Melsec PLC设置。 然后必须将该指令中的其他参数配置为与Melsec PLC一致。

2)、MC FX serial write word: 使用串行协议从设备写入字。

该指令使用格式1和4实现Melsec-FX协议。

必须正确配置PC的串行端口设置(波特率,数据大小,奇偶校验)以匹配Melsec PLC设置。 然后必须将该指令中的其他参数配置为与Melsec PLC一致。

3)、MC Q serial read word: 使用串行协议从设备读取字。

该指令使用帧4C和格式5(二进制通信)实现Melsec-Q协议。

必须正确配置PC的串行端口设置(波特率,数据大小,奇偶校验)以匹配Melsec PLC设置。 然后必须将该指令中的其他参数配置为与Melsec PLC一致。

4)、MC Q serial write word: 使用串行协议从设备写入字。

该指令使用帧4C和格式5(二进制通信)实现Melsec-Q协议。

必须正确配置PC的串行端口设置(波特率,数据大小,奇偶校验)以匹配Melsec PLC设置。 然后必须将该指令中的其他参数配置为与Melsec PLC一致。

5)、MC tcp read word: 使用TCP/IP协议从设备读取字。

6)、MC tcp write word: 使用TCP/IP协议从设备写入字。

21、IO: Modbus Master/Slave

注:必须现在【Options】->【IO】->【Modbus】中定义Modbus设备。

1)、Read Multiple Discretes: 读取多个离散的输入或输出。

2)、Read Multiple Registers: 从多个寄存器读取值。

3)、Read single Discrete: 读取单个离散的输入或输出。

4)、Read Single Register: 从寄存器读取值。

5)、Write Multiple Ciols: 将值数组写入多个线圈。(线圈(Coil)是个什么鬼????)

6)、Write Multiple Registers: 将值数组写入顺序寄存器。

7)、Write Single Coil: 将值写入单个线圈。

8)、Write Single Register: 将值写入寄存器。

9)、Read Discrete: 读取单个离散的输入或输出。

10)、Read Register: 从寄存器读取值。

11)、Write Discrete: 写入单个离散输出。

12)、Write Register: 将值写入寄存器。

22、IO: Omron Ethernet/Host Link

1)、UDP read word: 使用UDP协议从设备读取字。该指令从Omron PLC上的数据区(DM区)一次读取1到70个字值。

注:1)  必须先在【Options】->【IO】->【Udp/Ip】中定义以太网连接。

2)  在执行指令或运行一次(至少一次)之前,Profinet通信不会初始化。 如果指令尚未执行,PLC软件将无法访问运行Sherlock的系统。 或者,您可以在启动Sherlock时自动启动EthernetIP通信服务器。 在以下路径进行设置:菜单栏【Options】->【Application】->【Advanved】->【EthernetIP: start EthernetIP server on Sherlock startup】。

2)、UDP write word: 使用UDP协议从设备写入字。

3)、Serial read word: 使用串行协议从设备读取字。该指令从Omron PLC上的数据区(DM区)一次读取1到29个字值。

必须正确配置PC的串行端口设置(波特率,数据大小,奇偶校验)以匹配Omron PLC设置。 然后必须将该指令中的其他参数配置为与Omron PLC一致。

4)、Serial write word: 使用串行协议从设备写入字。

23、IO: Profinet

PROFINET是由PROFIBUS国际组织(PROFIBUS International,PI)推出的新一代基于工业以太网技术的自动化总线标准。

注:1) 在执行指令或运行一次(至少一次)之前,Profinet通信不会初始化。 如果指令尚未执行,PLC软件将无法访问运行Sherlock的系统。 或者,您可以在启动Sherlock时自动启动Profinet通信服务器。 在以下路径进行设置:菜单栏【Options】->【Application】->【Advanved】->【Profinet: start Profinet server on Sherlock startup】。

2) Profinet通信仅适用于32位Windows环境,而不适用于64位环境。

1)、Read: 读取一组数值(数值数组)。

要从PLC输出标签表中读取值,需要计算GEVA空间中的正确偏移量(从256开始)。 使用标记索引减去256(GEVA起始地址)除以元素类型中的字节数。

2)、Read String: 读取已知长度的ASCII字符串。

3)、Write: 写入一组数值(数值数组)。

4)、Write String: 写入一个ASCII字符串。

24、IO: Reporter

1)、Clear: 清除报告。

2)、Print: 打印报告窗口。

25、IO: Roi(ROI指令集)

    1)、Check In Image: 确定(检查)ROI是否位于图像窗口内。

2)、Enable Preprocessor: 在ROI中启用或禁用预处理器。此IO指令的效果与检查或清除ROI处理窗口中预处理器旁边的复选框相同。该预处理器是禁用,并非删除。

3)、Get Bounding Box: 获取ROI检测框的边框点和中心点。

4)、Get Coord: 获取ROI(元素或角)的坐标、旋转角度和元素(角)的数量。

5)、Set Coord: 将ROI移动至指定的坐标位置,如果refresh为true则重绘。

注:使用过程中应确保使用的坐标有效,因为Sherlock并不会检查坐标的有效性。

特别地,对于矩形或者靶式(Rake)ROI,应确保左上角坐标的x/y分别小于右下角坐标的x/y,否则运行时会导致错误“无法分配第一个图像缓冲区以进行提取”。

6)、Get/Set Display Outline: 获取 / 设定ROI属性中display->outline的值(选择为true,不选择为false)。

7)、Get / Set Element Count: 获取 / 设定复合ROI中元素(角点)的数量。

8)、Get / Set Rotation: 获取 / 设定ROI的角度。

9)、Offset: 通过给定的偏移值移动ROI,如果refresh为true则重绘。

10)、Rotate: 绕着输入的中心点将ROI旋转指定的角度。这会重新计算ROI的坐标,但不会改变ROI的角度属性。

注:重新计算坐标会导致累积错误,不要在循环内或者连续旋转中使用此指令。

11)、Set Alignment: 设定要使用的ROI对齐方式。可以结合IfElse语句实现在不同情况下选择使用不同的对齐方式(Alignment),或者是否使用对齐方式。

       

12)、Set Interpolate: 在移动或旋转ROI时启用像素值的插值。启用时,使用双线性插值来估计像素值;禁用时,使用最邻近插值来估计像素值。

13)、Set Pass/Fail Flag: 通过设置ROI的Pass(true) / Fail(False)标志,来更改图像窗口中显示的ROI轮廓的颜色,便于在具有多个ROI的图像中指出是哪个ROI导致错误。这不会对程序造成其他的影响。

26、IO: Serial(串口通讯指令集)

    1)、Purge Buffer: 清除指定的缓冲区。

在尝试使用串行端口之前,应使用此指令将串行端口的缓冲区清除或重置为已知状态。对于TX缓冲区,不传输已删除的字符。

2)、Receive Characters: 从串行端口接收字符。 如果在超时之前未收到最小字符数,则超时。

3)、Receive Line: 从串行端口接受一行字符。接收字符,直到收到终止字符。如果在超时之前未收到终止字符,则超时。

4)、Send String: 将字符串发送到串行端口,以便立即传输。

注:使用'\ r'结束字符串以发送回车符,或'\ n'发送换行符。

27、IO: SPC

1)、Get SPC values: 无输入参数,输出参数如下:

"sample count" - SPC中的零件数量或检验样本数量。

"min / avg / max / std / 3std" - 最小值 / 平均值 / 最大值 / 标准差 / 3*标准差。

"range" - 范围。

"Cp / Cpk / CpkLo / CpkHi / LoLim / HiLim" - 能力指数...

2)、Reset SPC: 复位或者清除SPC数据。

3)、Save SPC report: 保存SPC报告。

28、IO: System(系统指令集)

   1)、Beep: 声卡或扬声器发出哔声。

2)、DiskSpace: 返回指定磁盘剩余空间和总空间大小。

3)、Exit Application: 关闭应用,可在关闭之前选择保存程序。

4)、FileCopy: 将源文件复制到目标文件。

5)、FileDelete: 删除指定的文件,即使指定的文件不存在也表示删除成功,返回true。

6)、FileExists: 判断指定的文件是否存在。

7)、FileMove: 将源文件移动到指定的目录。

8)、FolderCreate / FolderDelete: 创建 / 删除具有指定名称的文件夹。

9)、Generate Engine Control Event: 创建一个在VEngine Control(IpeEngCtrl.dll)中调用的事件。该指令将创建按一个事件句柄,用于在VB / VC / C#程序中调用。

该指令将导致SherlockCOM引擎接口生成事件“UserProgramEvent(long nEventId)”。 在使用Sherlock COM引擎并处理此事件的自定义GUI应用程序中,将允许混合执行Sherlockprogram代码和用户VB / VC / C#/(等)代码。

典型情况是:

1、Sherlock程序执行IO: System -> UserProgramEvent;

2、SherlockCOM引擎创建UserProgramEvent COM事件;

3、UserProgramEvent COM事件被调用,用户代码被执行;

4、用户完成对UserProgramEvent COM事件的处理,Sherlockresumes执行程序。

注:"UserProgramEvent(long nEventId)"仅在程序使用SherlockCOM引擎时有用。

10)、GetData / GetTime: 以dd/mm/yy和hh:mm:ss的格式返回本地日期和时间,时间采用24小时制。

11)、GetDataFormat / GetTimeFormat: 以指定格式返回本地日期 / 时间。

12)、GetEnv / SetEnv: 获取 / 设定指定环境变量的值。

13)、GetEnvNames: 返回一个字符串数组,其每个元素包含一个环境变量的名称。

14)、GetEnvVars: 返回一个字符串数组,其每个元素包含一对ENV_Var=String形式。

15)、GetMiliSecCount: 获取系统毫秒计数。获取双精度毫秒计时器,用于计时检测等。

16)、GetTimeDiff: 以ms为单位返回当前时间和指定时间的时间差。

17)、InputBox: 显示一个对话框,等待用户输入一个字符串并将其关闭,在此期间停止程序的执行。

18)、Log: 在应用程序日志中记录消息。

19)、Message Beep: 为所选事件生成系统提示音。

20)、Message Box: 显示一个对话框并等待用户将其关闭,在此期间停止程序的执行,消息框为应用程序模式。

按钮返回值为:1表示“OK”,2表示“取消”,3表示“中止”,4表示“重试”,5表示“忽略”,6表示“是”,7表示“否”。

button(s): OK、OK/Cancel、Retray/Cancel、Yes/No、Yes/No/Cancel、Abort/Retray/Ingore。

icon: Information、Warning、Question、Error。

default button: Button1、Button2、Button3。

注意:如果远程执行包含消息框的程序,它将挂起,直到在服务器上按下按钮。

21)、Pass Fail Dialog: 显示通过/失败对话框。

          

22)、Play Wav: 播放一个WAV文件(波形声音文件)。

23)、Random: 随机生成0.00~1.00减的任意数值。

24)、Set error handing strategy: 通过修改默认行为来定义错误处理策略。

此指令旨在用于“执行错误”的子例程,并允许你定义要采取的操作。没有此指令的默认行为是在子例程结束时停止错误。

25)、Sleep: 程序暂停执行(休眠)指定的时间(ms)。

26)、Stopwatch Start: 在指定索引处启动秒表,如果秒表在运行状态则重启。

注:在循环内放置秒表开始将在循环的每次迭代时重新启动秒表计数。

    27)、Stopwatch Stop: 在指定索引处关闭秒表,如果秒表不在运行则返回0。

29、IO: Tcp/Ip

1)、Reveive Buffer: 从给定的连接处接受一些字符。TCP/IP设备或连接必须在Options->IO中预先定义。

     

2)、Receive Byte Array: 接收指定数量的字节数并将它们放入一个数字数组中。不在0~255范围之内的值会被截去掉,256->0,257->1;负数会被转换成正的,-1->255,-2->254。

         

注:如果预期的字节数在超时时间内到达,则以字节为单位返回;bytes recvd返回接收的字节数(等于元素数);并且结果返回True。

如果预期字节数未在超时时间内到达,则字节为空; bytes recvd返回已接收的字节数(如果有); 并且结果返回False。

3)、Receive Line: 从给定连接处接收一行字符,直到接收到目标字符串。

4)、Send Byte Array: 将整数数组作为字节发送。不在0~255范围之内的值会被截去掉。

      

注:只有在执行发送字节数组时尚未建立服务器/客户端连接时,结果才会返回false。这意味着执行指令时应用程序不必时刻主动侦听数组。

5)、Send Line: 发送一行字符至给定的连接。

30、IO: Udp/Ip

    1)、Receive Byte Array: 从远程主机接收指定数量的字节数并将它们存储到一个数字数组中。该指令允许”任何”主机IP值。UDP/IP连接必须预先在Option->IO->UDP/IP中定义。

字符串和字节数组的最大大小为1400个字节。

2)、Receive String: 从远程主机接受一个字符串,该指令允许”任何”(不关心)主机IP值。

3)、Send Byte Array: 通过UDP把整数数组作为字节发送到单个远程主机,只截取0~255范围内的值。

4)、Send String: 通过UDP把字符串(包括终结符)发送至单个远程主机。

31、Numeric(浮点型数据处理指令集)

    1)、Abs / Max2 / Min2 / Pow / Sqrt / Square: 绝对值 / 最大值 / 最小值 / 乘幂 / 平方根 / 平方。

2)、Add / Subtract / Multiply / Divide / Remainder: 加减乘除求余。

3)、Copy: 复制输入的数字。

4)、Increment / Decrement: 加减1。

5)、Eq / NotEq / Greater / GreaterOrEq / Less / LessOrEq: 如果n1(= / != / > / >= / < / <=)n2,则返回true,否则返回false。

6)、Truncate / Fractional: 返回数字的整数 / 小数部分。

7)、Integer Divide: 两个整数相除,返回商(整数),如7/2=3。

8)、Negate: 返回数字的否定值。

9)、NumToString: 数字转换成字符串。

10)、StringToNum: 返回从给定字符串扫描得到的数字。比如:12er345-->12(true);er445-->0(false)。

11)、Round: 返回最接近的整数。比如:0~0.5返回0(包括0.5),0.5~1返回1(不包括0.5)。

12)、SetNumber: 设定输出为特定的数值。

32、Statistics(数据处理指令集)

   1)、Cp: 返回过程能力指数CP。

2)、CpArr: 返回数组参数中所有值的过程能力指数CP。

3)、Cpk: 返回过程能力指数CPK(双边规格限制)。

4)、CpArr: 返回数组参数中所有值的过程能力指数CPK(双边规格限制)。

5)、Max / Min / Mean / Variance: 返回作为参数接收的所有数字的最大值 / 最小值 / 均值 / 方差。

6)、MaxArr  / MinArr / MeanArr / VarianceArr / SumArr: 返回数组参数中所有值的最大值 / 最小值 / 均值 / 方差 / 和。

33、String(字符串指令集)

1)、AddStr: 将两个字符串首尾相接来创建一个新的字符串。

2)、CharToNum: 返回字符窜字符值对应的ASCII数值。

3)、CompStr: 比较两个字符串的大小,如果String1>String2,则返回1;如果String1=String2,则返回0;如果String1<String2,则返回-1。默认情况下区分大小写。

4)、CopyStr: 复制字符串。

5)、CreateStrInf: 用输入的字符串创建一个新的字符串。

6)、FindStr: 在源字符串中前向搜索目标字符串,并返回第一个匹配项的位置(如果有)或-1(如果未找到)。区分大小写。

7)、FindStrNth: 在源字符串的前向搜索中返回第n次出现目标字符串的位置,如果没找到则返回-1。区分大小写。

8)、FindStrReverse: 在源字符串中反向搜索目标字符串的位置,如果没找到则返回-1。区分大小写。

9)、GetAt: 返回字符串指定索引处字符的ASCII值。

10)、GetWordLength: 获取字符串中最小和最大单词的长度(以字符为单位),并且返回单词的个数。

比如: ”This is a string“ 中最小、最大单词长度分别是1、6,单词个数是4。

11)、InsertAtStr: 在源字符串指定索引处插入参数字符串。

12)、LeftStr / RightStr / MidStr: 截取输入字符串左边 / 右边 / 指定索引处开始的n个字符组成一个新的字符串。

13)、LenStr: 返回字符串的长度。

14)、NumToChar: 返回由ASCII值数组构建的字符串。将数字(ASCII值)转换为字符。

15)、PackStr: 连接输入的字符串,返回新的字符串。

16)、PrintfNum: 将一个数字格式化为字符串,类似于C语言中的"sprintf"命令。

格式:%[-]n.mf

其中,"n"表示小数点左边的最大字符数;

"m"表示小数点右边的最大字符数;

"f"表示浮点数;

"-"(可选)表示如果小数点左边的实际字符数小于"n",则将字符串向左移。

17)、ReplaceStr: 将源字符串中指定的字符串部分替换成新的字符串。

18)、SetAtStr: 设置源字符串指定索引处字符的值。

19)、SetString: 给字符串赋值。

20)、TrimStr: 删除源字符串的前m个字符和后n个字符,获得一个新的字符串。

34、Trigonometric(三角函数指令集)

1)、Sin / Cos / Tan / ArcSin / ArcCos / ArcTan

2)、RadToDeg: 弧度转化为角度。

3)、DegToRad: 角度转化为弧度。

    4)、GetPi / GetPiDiv2 / GetPiDiv4: 检索π,π/2,π/4的值(由应用程序内部使用)。

Sherlock之Instructions指令介绍(Sherlock Version: 7.2.5.1 64-bit)的更多相关文章

  1. C#中的预编译指令介绍

    原文:C#中的预编译指令介绍 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量 ...

  2. corosync+pacemaker的crmsh的常用指令介绍

    配置crmsh的yum仓库,此仓库的RPM包有openSUSE提供,将这个network:ha-clustering:Stable.repo文件直接下载到本地并且命名为crmsh.repo wget ...

  3. C++编译器详解(二)常见precompiling 指令介绍

    VC++编译器中一些常见precompiling 指令介绍 我们在利用vc6.0 project wizard生成的代码中,经常看到大量的precompiling指令.本文讲解了常见的这些指令的作用 ...

  4. Docker学习(三): Dockerfile指令介绍

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  5. 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码

    浅析VS2010反汇编 2015年07月25日 21:53:11 阅读数:4374 第一篇 1. 如何进行反汇编 在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的反汇编信息.如下图所示. ...

  6. Modbus RTU新版本指令介绍

    Modbus RTU新版本指令介绍 TIA V13 SP1版本软件中提供了2个版本的Modbus RTU指令: 图1. 两个版本Modbus RTU指令 早期版本的Modbus RTU指令(图1. 中 ...

  7. nginx的access的阶段的access模块、auth_basic模块、auth_request模块及satisfy指令介绍

    access 模块 示例从上向下匹配 location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 200 ...

  8. vue第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法)

    第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法) #课程目标 了解 vue 框架的特点 掌握创建 vue 实例 掌握 data ...

  9. docker创建image方法以及常用指令介绍

    docker -help    # 显示帮助 docker COMMAND -help    # 帮助信息更详细 docker start “容器名称”    # 启动一个或多个容器 docker s ...

随机推荐

  1. element 上传组件 el-upload 的经验总结

    前言 最近在做后台管理项目,采用的 vue-element-admin ,上传图片是一个很常用的功能,也遇到了很多问题,刚好趁此机会做一些总结. 初步总结下会提到的问题,目录如下: el-upload ...

  2. jQuery 小测试

    1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has() 答案: $(div:has(s ...

  3. java反射原理及Class应用

    反射:框架设计灵魂 框架:半成品软件,可以在框架基础上进行软件开发,简化编码 反射:将类的各个组成部分封装我其他对象,这就是反射机制 好处:  1.可以在程序运行过程中,操作这些对象  2.可以解耦, ...

  4. phpStudy 升级 MySQL 到 5.7.21

    1.备份原来的MySQL 我的路径是D:\phpStudy2018\PHPTutorial\MySQL\bin 修改文件名为MySQL-backup 2.下载新的MySQL 5.7.21 网址:htt ...

  5. 一文掌握 Spring Boot Profiles

    Spring Boot Profiles 简介 Profile 的概念其实很早在 Spring Framework 就有了,在 Spring Framework 3.1 版本引入了注解 @Profil ...

  6. 【iOS】“找不到使用指定主机名的服务器”

    今天用 Application Loader 提交 APP 的时,遇到了这个奇葩的问题,如下图: 后来换个网络解决了……我也不知道什么原因,就这么奇葩的弄好了……

  7. 【Android】Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT

    刚遇到了这个问题: Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT 解决方法: 修改 A ...

  8. Java代码计算运行时间

    突然想准确的测试一下Java代码的执行时间,在网上找了一会.发现基本有以下两种方法:第一种是以毫秒为单位计算的. Java代码 //伪代码 long startTime=System.currentT ...

  9. 深入了解String和intern

    引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...

  10. Windows上的Linux容器

    翻译自:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-contai ...