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

news/2024/11/17 22:16:35/文章来源:https://www.cnblogs.com/zeussbook/p/18303720

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 (计时器编号)
参数 :计时器编号以表达式或数值指定整数(063),以确定对 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 mainInteger var1, var2GoSub checkio '使用标签执行 GoSubOn 1On 2Exit Functioncheckio: '子例程的起始位置,定义标签var1 = In(0)var2 = In(1)If var1 = 1 And var2 = 1 ThenOn 1ElseOff 1EndIfReturn '子例程的结束位置
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 fornextInteger counterFor counter = 1 to 10Go PctrNext counterFor counter = 10 to 1 Step -1Go PctrNext counter
Fend    

 

Pallet

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

格式

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

Pallet参数

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

 这里要重点关注:点编号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 PatCall inition '初始化程序打开电源,设定速度Integer A1 '定义整数变量Pallet 0, P11, P12, P13, 4, 4 '运算4*4托盘点位For A1 = 1 To 16 '循环抓取12次 = 4*4Jump P10 '去抓取点On 11 '打开夹爪Wait 0.5 '等待0.5秒Jump Pallet(0, A1) '放到托盘点Off 11 '松开夹爪Wait 0.5 '等待0.5秒
    NextHome '回到起始点
Fend
'2.点文件示例 Function ReadPointDoIf Sw(10) Then '当输入信号位10打开时,读取第一个点文件LoadPoints "point1.pts"Call PatEndIfIf Sw(11) Then '当输入信号位11打开时,读取默认的点文件LoadPoints "robot1.pts"Call PatEndIfLoop Fend
 
2.读入程序,验证语法错误

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

 

 

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

 

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

 

 

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744218.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试理论知识-分类和方法

一、软件测试分类汇总分类方法分类内容按开发阶段 单元测试、集成测试、系统测试、验收测试按测试实施组织 α、β、第三方按测试执行方式 静态测试、动态测试按是否查看代码 黑盒测试、白盒测试、灰盒测试按是否手工执行划分 手工测试、自动化测试按测试对象划分 性能测试、安…

文生SQL

主页个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/缘起 2022年12月ChatGPT的横空出世,掀起了LLM大模型的科技热潮,一时间文胜文, 文胜图,文生视频为大众所周知。SQL(Structured Query Language)是一种用于管理和操作关系型数据…

「代码随想录算法训练营」第十一天 | 二叉树 part1

二叉树的基本知识 链接:https://programmercarl.com/二叉树理论基础.html 要点:深度优先遍历前序遍历(递归法,迭代法) 中序遍历(递归法,迭代法) 后序遍历(递归法,迭代法)广度优先遍历层次遍历(迭代法)由于栈就是递归的一种实现结构,因此前中后序遍历的逻辑可以借…

从0到1打造一个 WebRTC 应用

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣前言 2020 年初突如其来的新冠肺炎疫情让线下就医渠道几乎被切断,在此背景下,微医作为数字健康行业的领军者通过在线问诊等形式快速解决了大量急需就医人们的燃眉之急。而作为微医 Web 端在线问诊中重要的一环-医患之间…

K8S 中的 CRI、OCI、CRI shim、containerd

哈喽大家好,我是咸鱼。 好久没发文了,最近这段时间都在学 K8S。不知道大家是不是和咸鱼一样,刚开始学 K8S、Docker 的时候,往往被 CRI、OCI、CRI shim、containerd 这些名词搞得晕乎乎的,不清楚它们到底是干什么用的。所以今天,咸鱼打算借这篇文章来解释一下这些名词,帮…

通过手机去访问本地写的h5页面(使用同一个局域网)

主要流程为: 打开cmd,然后输入一行指令1.npm install http-server -g(全局安装http-server,前提是有node环境,并且手机和电脑用的是同一个局域网内)2.然后通过cmd进入到你放html文件的文件夹内 3.通过http-server指令开启服务,cmd就会提示:

Turtlebot3在ROS Gazebo中使用OpenCV检测并跟踪球体

原文链接:https://www.youtube.com/watch?v=Rw6ATkORRG8一个小巧的机器人在虚拟世界中敏捷地追踪着一个滚动的球体。Turtlebot3,一个搭载ROS操作系统的智能机器人,在Gazebo仿真环境中,利用OpenCV的神奇力量,展现出令人惊叹的视觉追踪能力。Turtlebot3的"眼睛"是…

Python循环控制

本文介绍了Python编程语言中关于for循环和if条件控制的一些基本使用。包含了单层循环的退出机制和多层循环的退出机制,使得我们在满足特定条件时,可以直接结束多层循环。技术背景 循环控制是每一门编程语言的基础,最常用的就是for循环和while循环。使用循环可以很大程度上简…

【C/C++】结构体内存对齐

结构体内存对齐详解 1、第一个成员在与结构体变量偏移量为0的地址处2、其他成员变量要偏移到 对齐数 的整数倍的地址处 ,注意 偏移是从结构体首地址处开始的。对齐数 取的是 编译器默认的一个对齐数 与 该成员大小 这个俩个数中的最小值。【VS中默认的值为8、Linux环境默认不设…

我不应该用JWT的!

一、前言 大家好呀,我是summo,之前有自学过Shrio框架,网上一搜就有SpringBoot整合Shrio+ JWT的文章,我是在学习Shrio框架的时候顺带学的JWT。后来我还看见有很多博主专门写文章介绍JWT,说这个东西的优点很多,安全性好、去中心化、方便啥的,我就把JWT也应用在我们自己的系…

OpenAI 曝新项目「草莓」,提升 AI 推理能力;智谱 AI 开源视频理解模型丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…