首页 > 编程语言 >Epson机器人编程初级阶(二)

Epson机器人编程初级阶(二)

时间:2024-07-15 18:18:21浏览次数:13  
标签:语句 ... Epson 10 编程 托盘 Else 初级 表达式

Wait

等待时间与信号控制,时间默认单位是秒

Wait Sw(0) =On:等待输入0变为On状态
Wait 60.5:等待60.5秒后执行
Wait Sw(0) = Off And Sw(1) = On:等待输入0变为Off并且出入1变为On状态
Wait Memsw(0) = On Or Memsw(1) = On:等待储存位0变为啥On或存储位1变为On状态
Wait 1;On 1:等待1秒钟,然后将输出1变为On
Wait In(0) Mask 7 = 1:在输入端口0的低3位变为1之前进行待机
Wait giCounter > 10:等待变量的值大于10
Wait giCounter = 30000,10:在变量的值到达30000之前,待机10秒钟

 

Tmr 函数

用于以秒为单位返回计时器开始计时之后的经过时间。
格式 :Tmr (计时器编号)
参数 :计时器编号以表达式或数值指定整数(0~63),以确定对 64 个计时器中的哪个计时器进行检查。
返回值 :以实值(单位:秒)返回指定计时器的经过时间。计时器的范围为 0~约 1.7E+31。计时器的分辨率为0.001 秒。

说明 :用于返回指定计时器开始计时之后的经过时间。与 ElapsedTime 函数不同,此函数还要将程序暂停状态的时间作为经过时间来计算。

可利用 TmReset 重置计时器。

Real overhead
TmReset 0
overHead = Tmr(0)
参阅 ElapsedTime 函数、TmReset

Tmr 函数使用示例 :

TmReset 0 '重置计时器 0
For i = 1 To 10 '执行 10 次
GoSub Cycle
Next
Print Tmr(0) / 10 '计算并显示循环时间

 

DO...LOOP

在条件一致期间或者在不一致时到条件一致为止,反复 DO...LOOP 区段。

格式 1无限循环:

Do [{ While | Until } 条件表达式]
    [语句]
[Exit Do]
    [语句]
Loop

格式2指定条件下循环:

Do
    [语句]
[Exit Do]
    [语句]
Loop [{ While | Until } 条件表达式]

Do Loop 语句格式中有条件表达式和语句。

条件表达式 :表示 True 或 False 的数字或字符串表达式。当条件表达式为空(Null)时,条件将作为 False 来处理。可省略。

  作为退出 Do...Loop 的另一种方法,在 Do...Loop 中可以随时随地插入 Exit Do 语句。Exit Do 常在用于评价 If...Then 等几个条件之后使用。如果在 If...Then 中使用 Exit Do 语句,则将控制移至 Loop 的 下一语句。

如果在嵌套的 Do...Loop 语句中使用,则 Exit Do 将控制移至发生循环的上 1 级循环

 

If…Then…Else…EndIf 

按照指定的条件转移执行命令。

格式1 :

If 条件表达式 Then
    语句 T1
[ElseIf 条件表达式 Then]
    语句 T1
[Else]
    语句 F1
EndIf

 

格式2:

If 条件表达式 Then 语句 T1 [;语句 T2...] [Else 语句 F1 [;语句 F2...]]

参数

条件表达式:返回真伪值(True/False 的值)的有效条件表达式。真(True)时返回“0”以外的数值,伪(False)时返回“0”。(请参阅下述条件表达式示例。)
语句 T1 :条件表达式的值为真(True)时,也就是满足条件时执行语句。(可以将多个语句记述在 If...Then...Else 形式的区段中。)
语句 F1 :条件表达式的值为伪(False)时,也就是满足条件时执行语句。(可以将多个语句记述在 If...Then...Else 形式的区段中。)

说明

  (1) If...Then...Else 在满足条件时,执行 T1 以后的语句。如果不满足条件,执行 F1 以后的语句。If...Then...Else 命令的 Else 部分可省略。如果省略 Else 部分而又未满足条件,将执行 EndIf 以 后的语句。请用 EndIf 结束 If...Then...Else 语句段,而与有无 Else 无关。

  (2) If...Then...Else 还可以通过段以外的形式使用。是将 If...Then...Else 的所有语句都记述在同一行的 方法。按照此方法使用 If...Then...Else 时,不需要 EndIf。如果满足此行记述的条件表达式(如果 有相对于条件表达式的真值(True)),将执行 Then 与 Else 之间的语句。如果不满足条件表达式 (如果有相对于条件表达式的伪值(False)),将执行 Else 后面的语句。If...Then...Else 的 Else 部分 不是必须的。在不满足条件表达式的情况下(相对于条件表达式是伪值(False)),如果没有 Else 关 键字,控制将转至程序中的下一个语句。

在真值(True)时,条件语句输出 “1” 以外的数值,伪值(False)时输出 “0”。

 

GoSub

用于将程序控制移交给子例程。如果结束执行子例程,控制将返回至 GoSub 命令的下一行。

格式 :GoSub {标签}
标签:以标签指定移动目标。程序执行将转至有该标签的行。标签名请指定在 32 字符以内。
但是,开头字符不能使用数字,请务必使用字母。便签名+”:”定义标签,需要在代码块中能找到,标签名区分大小写。

GoSub 使用示例 :

Function main
  Integer var1, var2
  GoSub checkio '使用标签执行 GoSub
    On 1
    On 2
  Exit Function
  checkio: '子例程的起始位置,定义标签
    var1 = In(0)
    var2 = In(1)
  If var1 = 1 And var2 = 1 Then
    On 1
  Else
    Off 1
  EndIf
  Return '子例程的结束位置
Fend

 

系统管理相关命令

Reset:将控制器重置为初始状态。
SysConfig:显示系统设置参数。
SysErr:返回最新的错误状态或警告状态。
Date:显示日期。
Time:显示时间。
Date$:以字符串返回日期的函数。
Time$:以字符串返回时间的函数。
Hour :显示控制器的累计通电时间。
Stat :返回控制器的状态位。
CtrlInfo:返回控制器的信息。
RobotInfo:返回机器人的信息。
RobotInfo$:返回机器人的文本信息。
TaskInfo:返回任务信息。
TaskInfo$ :返回任务的文本信息。
DispDev:设置当前的显示装置。
EStopOn:返回紧急停止状态。
CtrlDev:返回当前的控制装置的编号。
Cls:清除运行窗口、操作窗口、命令窗口的文本区域以及清除 TP 的打印面板。
Toff:关闭 LCD 上执行行的显示。
Ton:打开 LCD 上执行行的显示。
SafetyOn:返回安全门的状态。
Eval:执行命令窗口的语句并返回错误状态。
ShutDown:关闭 EPSON RC+、关闭或重启 Windows。
TeachOn:返回示教模式的状态。
WindowsStatus:返回 Windows 的启动状态。

注: 蓝色部分是已经测试能在命令窗口正常使用的命令,主要是学会 Cls 消除报错即可。 

 

For...Next

按照指定次数反复执行 For...Next 之间的一系列的语句。 最多嵌套16层。

格式 :For 变量名 = 初始值 To 结束值 [Step 增量值]
    语句
Next[变量名]
*Next后面的变量名可以不写

For...Next 使用示例 :

Function fornext
    Integer counter
    For counter = 1 to 10
        Go Pctr
    Next counter
        For counter = 10 to 1 Step -1
            Go Pctr
        Next counter
Fend    

 

Pallet

用于定义托盘和显示定义托盘。

格式 :

(1) Pallet [Outside,] [托盘编号, 点编号 1, 点编号 2, 点编号 3 [, 点编号 4], 分区数 1, 分区数 2]
(2) Pallet [Outside,] 托盘编号, 坐标系数据 1, 坐标系数据 2, 坐标系数据 3 [, 坐标系数据 4],分区数 1, 分区数 2

Pallet参数 :

Outside:在指定的行和列的范围以外生成可接近的托盘。可省略。
托盘编号:以表达式或数值指定托盘编号(0~15 的整数)。
点编号 1~3:指定用于托盘定义(标准的 3 点定义)的点变量。定义XY轴的起始点长宽距离
点编号 4:进行 4 点定义时,与点编号 1~3 同时使用。可省略。
分区数 1:以整数指定托盘的点编号 1(坐标系数据 1)和点编号 2(坐标系数据 2)的分区数。范围为 1~32767。(分区数 1×分区数_2 < 32767)
分区数 2:以整数指定托盘的点编号 1(坐标系数据 1)和点编号 3(坐标系数据 3)的分区数。范围为 1~32767。(分区数 1×分区数 02 < 32767)
坐标系数据 1~3:直接以点数据指定用于托盘定义(标准的 3 点定义)的坐标系。
坐标系数据 4:进行 4 点定义时,与坐标系数据 1~3 同时使用。可省略。

 这里要重点关注:点编号P1,P2,P3,P4的相对位置,不能随意打乱,否则影响系统生成矩形范围。标准生成的是矩形,错乱生成是菱形。

 

Xqt

后台运行程序,多线程方式程序
Xqt:调用指定的函数,作为一个单独的任务运行,与call不同的是:使用xqt任务运行后台程序将在后台运行,Main函数会立刻运行下一个语句而不需要等待xqt任务完成。

 不要使用在机器人的动作控制中

 

LoadPoints

用于将点文件读入到机器人点存储区域中

语法:LoadPoints 文件名 [, Merge]
Merge :用于读入新的点之前,不想清除当前的点时进行设置。如果进行设置,则将新的
点添加到设置的点中。文件中已存在要添加的点时,执行覆写。可省略。

往往在实际应用中,相同的动作程序可能需要在多个空间中重复操作,那么就需要示教出多个点位文件。

 

LoadPoints 使用示例:

Function main
  '将通用的点读入到当前的机器人中
  LoadPoints "R1Common.pts"
  '合并部件模型 1 的点
  LoadPoints "R1Model1.pts", Merge
机器人 2
  ' 读入机器人 2 的点文件
  LoadPoints "R2Model1.ps"
Fend

 

TCP/IP命令

Setnet:运行时或从命令窗口中设置通信端口参数
OpenNet:打开TCP/IP端口
ChkNet:返回端口状态:等待读取的字节数或错误值
Print#:从端口发送字符
Input#:从端口接收字符到一个或多个变量中
WaitNet#:等待网络端口连接成功
CloseNet:关闭TCP/IP端口

 

Pallet(托盘)动作读取多点位文件实例

1.编写运行程序,分2个函数,1托盘运行程序;2点文件读取程序
'1.托盘程序
Function Pat
    Call inition '初始化程序打开电源,设定速度
    Integer A1 '定义整数变量
    Pallet 0, P11, P12, P13, 4, 4 '运算4*4托盘点位
    For A1 = 1 To 16 '循环抓取12次 = 4*4
        Jump P10 '去抓取点
        On 11 '打开夹爪
        Wait 0.5 '等待0.5秒
        Jump Pallet(0, A1) '放到托盘点
        Off 11 '松开夹爪
        Wait 0.5 '等待0.5秒
    Next
    Home '回到起始点
Fend
'2.点文件示例 Function ReadPoint Do If Sw(10) Then '当输入信号位10打开时,读取第一个点文件 LoadPoints "point1.pts" Call Pat EndIf If Sw(11) Then '当输入信号位11打开时,读取默认的点文件 LoadPoints "robot1.pts" Call Pat EndIf Loop Fend
 
2.读入程序,验证语法错误

 
3.打开“运行窗口”,选择读取点文件函数 ReadPoint 运行。然后打开“I/O监视器” ,滑动到下面,可以看到输入位10,11都是关闭的

 

 

4.打开simulator模拟装置,可以看到模拟机器人没有动作,因为输入位10,11没有一个打开。

 

5.打开输入位10,机器人将往point1的点位托盘里装载东西。

 

 

6. 打开输入位11,机器人将往默认点位托盘装置东西。

 

标签:语句,...,Epson,10,编程,托盘,Else,初级,表达式
From: https://www.cnblogs.com/zeussbook/p/18303720

相关文章

  • 【Linux网络编程-6】IO复用
    select模型//selectServer.cpp#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#include<errno.h>#include<sys/select.h>#include&......
  • 005_python3 元组 字典 集合 条件控制 循环语句 编程第一步
    Python3元组1.元组的元素不能修改,使用小括号,逗号隔开,也可不用小括号,不同类型元素tup1=()  #创建空元组tup2=('he',)   #元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用tup3=('abc','xyz',2,4,9)2.元组使用访问元组:tup3......
  • Go语言---网络编程基础知识
    网络协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答OK给传输方;第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;第三次,传输文件内容。同样,接收方接收数据完......
  • 使用Java实现高并发编程
    使用Java实现高并发编程大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来讨论Java中的高并发编程。Java提供了丰富的并发编程工具和框架,包括线程、线程池、并发集合和锁机制等。本文将通过代码示例详细介绍如何使用这些工具实现高并发编程。1.......
  • 明白了这点才能学好编程,否则参加什么培训班都没用
    首先要明确告诉你的是,在大学课堂或培训班学到的知识远远达不到企业开发的要求。如果你觉得大学毕业就应该找个好工作,培训班投入两三万RMB就应该找个1W以上的工作,对不起,你想多了。听听课就能找份月入七八千、甚至上万的工作,想想都不靠谱。有实力的培训班所谓的包就业就是安......
  • 【花雕学编程】Arduino FOC 之双足无刷电机位置闭环控制
    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用ArduinoIDE(集成开发环境)来编写、......
  • 【重走编程路】设计模式概述(十) -- 责任链模式、命令模式
    文章目录前言17.责任链模式(ChainofResponsibility)定义问题解决方案应用场景优缺点18.命令模式(Command)定义问题解决方案应用场景优缺点前言行为型模式关注对象之间的交互以及如何分配职责,提供了一种定义对象之间的行为和职责的最佳方式。本章介绍创建型模式中......
  • 网络编程原理
    1、什么是IO多路复用I/O多路复用的本质是使用select,poll或者epoll函数,挂起进程,当一个或者多个I/O事件发生之后,将控制返回给用户进程。以服务器编程为例,传统的多进程(多线程)并发模型,在处理用户连接时都是开启一个新的线程或者进程去处理一个新的连接,而I/O多路复用则可以在......
  • Linux 下 C 语言编程概述
    来自......
  • Linux系统编程-线程同步详解
    线程同步是指多个线程协调工作,以便在共享资源的访问和操作过程中保持数据一致性和正确性。在多线程环境中,线程是并发执行的,因此如果多个线程同时访问和修改共享资源,可能会导致数据不一致、竞态条件(racecondition)等问题。线程同步通过协调线程的执行顺序和共享资源的访问来避免......