实验室有史陶比尔软件srs7.31的电子狗,学习笔记如下:


1.准备工作
配置工作单元,新建一个即可,这里能变成true的尽量变成true

打开val3,在star函数下进行编程,代码如下:

begincls()userPage()gotoxy(2,2)put("hello_val3")end


打开模拟器,如果是模拟器上srs ip是127.0.0.1,实际机器人是192.168.0.254

打开三维显示界面,因为这是很早以前的版本了,貌似不能导cad图进去!!

用虚拟示教器示教如下

运行val3程序如图:

EX1:简单move


先定义4个点,一个home点(0,0,90,0,45,0),tool工具坐标系是以法兰盘坐标系定义的(0,0,0,0,0,0)jjoint ppoint等通过示教得到 这些都是全局数据,可以改变的!!

P点是在世界坐标系下的,ttool是在法兰盘系下的
运行前示教步骤如下:

通过手动模式示教即可得到点信息,因为仅知道x y z rx ry rz,机器人姿态是不唯一的,因此对肩部,肘部,腕部做限制,改成same表示与前一个一致,具体看资料(tool数据的含义,point数据的含义frame数据的含义等)

运行效果截图如下:

Ex4_2 码垛实验

start()

begin//平面码垛call pallet_1()
end

pallet_1()

begin//l_nx :码垛行数  l_nHang 行距//l_ny: 码垛列数  l_nLie 列距// l_pDepart place点的离开点// l_pAppro  pick点的靠近点// l_pPick_n:第n个拾起点 l_pPlace_n : 第n个放下点l_nx=0l_ny=0//圆盘列间距90l_nLie=90movej(jJhome,tGrip,mFast)waitEndMove()delay(1)//for l_nx=0 to 0for l_ny=0 to 2//compose是沿着要示教工件坐标系fA定的l_pPick_n=compose(pPick,fA,{l_ny*l_nLie,l_nx*l_nHang,0,0,0,0})//appro  是看前一个点在哪个坐标系,是相对于那个坐标系,(一般是工具坐标系)l_pAppro=appro(l_pPick_n,{0,0,-150,0,0,0})//因为fb的坐标系l_pPlace_n=compose(pPlace,fB,{l_nx*l_nHang,-l_ny*l_nLie,0,0,0,0})l_pDepart=appro(l_pPlace_n,{0,0,-150,0,0,0})movej(l_pAppro,tGrip,mFast)movel(l_pPick_n,tGrip,mSlow)
//    waitEndMove()
//    delay(1)movel(l_pAppro,tGrip,mSlow)movej(l_pDepart,tGrip,mFast)movel(l_pPlace_n,tGrip,mSlow)
//    waitEndMove()
//    delay(1)movel(l_pDepart,tGrip,mSlow)waitEndMove()endFormovej(jJhome,tGrip,mFast)waitEndMove()
end

关键理解appro,tool类型数据,速度的设置


个人理解:Appro是相对于上一点的坐标系,(实际验证中是按工具坐标系进行偏转的!!!)
Compose是相对于参考坐标系(估计在工件坐标系下常用)
轨迹混合:

//waitendmove是为了到了该点会停 blend字段设为off
将应用加载到控制器后不要运行,因为很多点和坐标系需要示教,默认是0!采用手动模式,可以对工件坐标系(Fa,fB)和点(ppick pplace)示教

平面示教如下:



这里是先写的程序,再示教的工件坐标系,所以要先想好坐标系的朝向然后按所想的示教
速度这设了3挡,一档快,一档平均,一档慢,blend是取消混合命令,即movel movej运行完速度降为零才再执行下个操作(具体看资料)

**Ex4_3 斜面码垛 **

走z型,具体码垛指令如下:

begin
//  l_nHang 码垛盘行数
//  l_nLie  码垛盘列数
// l_nNumber 计数用,一个周期循环
// l_pPoint当前点
// fFrameA示教的工件坐标系 pPOint_first示教的初始点
// l_appro 接近点
// l_pnext_up y向上走 xF x负方向走 xZ x 正方向走l_nNumber = 1l_pPoint = pPoint_firstmovej(jJhome,tTool,mFast)waitEndMove()for l_nHang = 1 to 3for l_nLie = 1 to 3    //fframeA z正方向向下  l_pAppro=compose(l_pPoint,fFrameA,{0,0,-100,0,0,0})l_pNext_up = compose(l_pPoint,fFrameA,{0,90,0,0,0,0})l_pNext_xF = compose(l_pPoint,fFrameA,{-90,0,0,0,0,0})l_pNext_xZ = compose(l_pPoint,fFrameA,{90,0,0,0,0,0})//小于列个数 x+if l_nNumber<3l_nMode = 1endIf//等于列个数 upif l_nNumber==3l_nMode = 2endIf//大于列个数,小于2倍,x-if l_nNumber>3 and l_nNumber<2*3l_nMode = 3endIfif l_nNumber==2*3l_nMode = 2l_nNumber = 0endIf  switch l_nModecase 1        movej(l_pAppro,tTool,mFast)movel(l_pPoint,tTool,mSlow)movel(l_pAppro,tTool,mSlow)movel(l_pPoint,tTool,mFast)movel(l_pAppro,tTool,mFast)        movel(l_pPoint,tTool,mFast)movel(l_pAppro,tTool,mFast)waitEndMove()      l_pPoint = l_pNext_xZl_nNumber = l_nNumber+1breakcase 2movej(l_pAppro,tTool,mFast)movel(l_pPoint,tTool,mSlow)movel(l_pAppro,tTool,mSlow)movel(l_pPoint,tTool,mFast)movel(l_pAppro,tTool,mFast)        movel(l_pPoint,tTool,mFast)movel(l_pAppro,tTool,mFast)waitEndMove()      l_pPoint = l_pNext_upl_nNumber = l_nNumber+1breakcase 3movej(l_pAppro,tTool,mFast)movel(l_pPoint,tTool,mSlow)movel(l_pAppro,tTool,mSlow)movel(l_pPoint,tTool,mFast)movel(l_pAppro,tTool,mFast)        movel(l_pPoint,tTool,mFast)movel(l_pAppro,tTool,mFast)waitEndMove()l_pPoint = l_pNext_xFl_nNumber = l_nNumber+1breakdefaultbreakendSwitchendForendFormovej(jJhome,tTool,mFast)waitEndMove()end

EX5 参数传递

定义两个全局变量,一个输入r=4 一个输出s=0



Run 计算结果如下:


心得:引用(&)表示这个值是可以改变的!!
Ex7: socket通讯
先打开官方例子






Val3_socket实例:
下位机socket接收部分照抄官方例子
效果如下:

val3_learning相关推荐

最新文章

  1. java el jstl_java -EL技术JSTL技术
  2. 从“大数据”到“智能数据”
  3. Windows核心编程 第六章 线程基础知识 (上)
  4. 【DevOps】为什么我们永远疲于奔命?
  5. 精美技术图赏|技术精华
  6. word中取消自动目录超链接的方法
  7. 收藏表数据库_选择您的收藏库
  8. quarz 定时任务 cron表达式
  9. PHP实现单件模式的几种方式
  10. 如何通过 Shell 监控异常等待事件和活跃会话
  11. 《AI算法工程师手册》读书笔记(1)
  12. jquery之父john resig见面会及jquery最新动态
  13. 解决win7资源监视器不能开启
  14. 测试PHP连接MYSQL成功与否的代码
  15. 华为模拟器eNSP直连路由静态路由配置实验
  16. 自动排单功能的一些思考
  17. 【Unity】制作一个商店场景
  18. js中apply、bind、call的用法和区别
  19. hdu 3954 Level up(成段更新)
  20. JSON和JSONP 跨域

热门文章

  1. 【愚公系列】2023年05月 攻防世界-Web(file_include)
  2. 人工智能洗衣机教程_什么是“智能洗衣机”,我需要一个吗?
  3. 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论
  4. 启动计算机时出现grub,win7开机出现grub引导修复教程
  5. 一维FDTD电磁波仿真
  6. matlab 显示定点数的范围,定点数 - MATLAB Simulink - MathWorks 中国
  7. kettle-JavaScript脚本
  8. Spring注解分类
  9. 胡桃工具箱, 基于 .NET 开源的多功能原神工具箱
  10. 初识EMC元器件(二)——TVS管选型及应用