注1:本文仅代表本人对机器人使用的一些建议,在使用机器人前,还请详细阅读库卡机器人官方资料,道路千万条,安全第一条!!!
注2:技术有限,欢迎各位大大在阅读过程中发现各类问题,并且批评指正!!!
目录
(1)从机器人控制柜拷贝:
①菜单/配置/用户组,选择管理员权限,输入密码 kuka 登录;
②打开机器人D盘,打开文件夹workvisual,选择里面的压缩包,点击右下角编辑/复制,插入U盘,打开U盘,点击右下角编辑/添加,等待下方读条结束,拔出U盘,解压安装在电脑中即可。
(2)从库卡官网下载(复制链接):
www.kuka.com/zh-cn/售后服务/下载?terms=Language:en:1;Language:zh:1;&q=workvisual
注:本文使用的WorkVisual为6.0.20版本,建议使用该版本或更高版本
开机后,调整机器人手动速度,上使能(按住示教器背面任意一个白色按钮上使能:两档,第一档上使能,第二档安全急停),此时上方四个方框中的第二个变成绿色的I,通过右边6个按钮(“轴”模式:A1-A6,“全局”模式:XYZABC)即可移动机器人
注:初次使用请把速度调到10以下先适应


本文仅以选配Profinet(从站)、EtherNet/IP(从站)、EK1100/ EL1809/ EL2809(输入输出模块)为例:
(1)菜单/配置/用户组,选择管理员权限,输入密码 kuka 登录;
(2)菜单/投入运行/网络配置,修改后保存(请勿使用192.168.0.xxx);
网口:控制柜底部X66接口或打开柜门,门上主机上方KLI接口;
打开WorkVisual,点击左上角 菜单/查找项目;

(1)双击控制柜图标激活项目;

(2)现场总线配置(若未选配Profinet和EtherNet/IP可以直接跳过此步骤):
①若选配Profinet,双击项目结构中Profinet对备注位置进行配置,其余不需要改动;


②若选配EtherNet/IP,双击项目结构中EtherNet/IP对备注位置进行配置,其余不需要改动;



(3)信号映射;
①点击左上角 编辑器/IO Mapping;
②输入端映射:
左边框:

右边框:

映射(使用shift和ctrl可以多选,类似excel表格操作):

③输出端映射:
左边框:

右边框:

映射(使用shift和ctrl可以多选,类似excel表格操作):

(1)示教器点击 菜单/配置/用户组,选择管理员,输入密码 kuka 登录;(2)Workvisual点击项目配置(F6或如下图操作)后,点击完成;



(3)示教器两次弹出窗口都选择“是”,完成后等待重启;


(1)菜单/配置/用户组,选择管理员,输入密码 kuka 登录;(2)菜单/显示/输入输出端/数字输入端,PLC输出信号,检查输入端信号是否正确;

(3)点击信号下方的输出端,或菜单/显示/输入输出端/数字输出端,上使能,点击信号,再点击“值”,输出信号,PLC检查接收信号是否正确;

(1)关闭示教器所有界面,回到主界面;

(2)菜单/配置/用户组,选择管理员,输入密码 kuka 登录;(3)新建文件夹(命名方式英文开头);

(4)新建模块程序;

(5)打开程序;

(6)打开程序后,调整界面,可做可不做,为了看起来更舒服;

(7)模板程序解读,两行SPTP HOME的指令可以删除(编辑/删除):

(8)调整完成后,按程序左边的叉叉符号即可关闭程序;
本节将展示程序之间互相调用如何编程(以TEST_MAIN.SRC程序中调用TEST.SRC为例):
(1)菜单/配置/用户组,选择管理员权限,输入密码 kuka 登录;
(2)打开TEST_MAIN.SRC程序;

(3)点击示教器左边“笔”按钮弹出键盘

(4)在需要的位置输入TEST( ),即可调用TEST.SRC程序;

(1)菜单/配置/用户组,选择管理员权限,输入密码 kuka 登录;
(2)打开程序,点击示教器左边“笔”按钮弹出键盘;
(3)如图所示进行变量声明、初始化和运算:

注:若程序只是运动和简单信号交互,则可以跳过此步骤
(1)菜单/配置/用户组,选择管理员权限,输入密码 kuka 登录;
(2)打开程序;
(3)输入指令,本节介绍机器人主要的几种循环和逻辑判断,最终程序框架需要根据需求将循环和逻辑判断组合。
IF:使用 IF 分支后,便可以只在特定的条件下执行程序段;
LOOP(无限循环):每次运行完之后都会重新运行的循环;
WHILE(当型循环):当执行条件满足时,这种循环会一直将过程重复下去。当判断执行条件不满足时会结束循环,并执行 ENDWHILE 后的指令;
REPEAT(直到型循环):在指令部分执行完毕之后,检查是否已满足退出循环的条件。条件满足时,退出循环,执行 UNTIL 后的指令。条件不满足时,在 REPEAT 处重新开始循环;
FOR (计数循环):一种可以通过规定重复次数执行一个或多个指令的控制结构,使用时选择新建变量;
SWITCH:若需要区分多种情况并为每种情况执行不同的操作,则可用 SWITCH - CASE 指令达到目的;

(5)程序框架搭建完成后,按程序左边的叉叉符号即可关闭程序;
(1)选定程序:
(2)移动机器人到相应的点位,通过指令/运动/SPTP或SLIN,添加运动指令,添加后会自动记忆当前位置;
SPTP:点到点运动,又称关节运动,各轴配合,以最快速度到达预设点位(走指令前轨迹未知);
SLIN:直线运动,直线运动到达预设点位(走指令前轨迹已知);

(3)指令解读:
运动方式:可选SPTP或SLIN;
点位名称:可自定义(英文开头);
CONT:轨迹逼近,不停顿;
速度:根据需要修改;


(4)修改指令点位,点击对应点位的指令,光标在该指令上时,点击下方的Touch-up,再点击覆盖,此时点位会重新记忆;

(5)示例程序及对应图解:

(1)选定程序:

(2)信号指令添加方式:指令/逻辑/WAIT & WAITFOR & OUT;

(3)以上文的运动示例程序为基础,加入了信号指令,假定OUT[1]和IN[1]映射到抓手控制开关:
注:信号指令不要随意加CONT,否则有安全隐患!

(1)选定程序,若已选定,可以点击R/程序复位;

(2)调整机器人程序运行速度,上使能,按住左边的程序启动按键即可启动程序。若想跳到某一行开始运行,则点击想跳的位置,当光标在该行后,点击语句行选择即可跳行;

(3)结束后点击R/取消选择程序即可退出;

注:确认所有程序无安全隐含后再进行自动
(1)菜单/配置/用户组,选择管理员权限,输入密码 kuka 登录;
(2)打开R1/CELL程序;

(3)将 程序名加括号 写在对应CASE的P00( )后面,如图所示位置;
注:CASE在后面外部自动的时候会根据程序号调用

(1)时序图:


(2)大白话解读:
①安全回路(X11)中急停和安全门都OK状态下,PLC输出 $MOVE_ENABLE(运行开通)和$DRIVE_OFF(驱动器关闭);
注:这两个信号不需要关闭,T1模式也需要 $MOVE_ENABLE信号
② 选定CELL程序,按住程序启动按键,走到HOME位,弹出已达BOC提示,松开程序启动按键,此时KRC会输出 $IN_HOME(位于起始位置)和 $ON_PATH(机器人在轨迹上);
③ 顺时针转动示教器上的钥匙,选择EXT模式后转回来,此时KRC输出 $EXT(外部自动运行),调整速度,初次外部自动建议速度小于10!!!
④ 程序启动时序(所有KRC的输出都是在收到PLC信号后自动发出的);
注:建议开关触发,请勿自动触发,导致安全风险
PLC 输出 $DRIVE_ON(驱动装置接通)
KRC 输出 $PEPI_RDY(驱动装置处于待机运行状态)
注:若手动模式已有使能,打到EXT模式未出现报错,该信号会直接输出
PLC 关闭 $DRIVE_ON(驱动装置接通)
PLC 输出 $CONF_MESS(错误确认)
KRC 关闭 $STOPMESS(集合故障)
注:若手动模式无报错,打到EXT模式未出现报错,该信号会直接关闭
PLC 输出 $EXT_START(程序启动)
KRC 输出 $PRO_ACT(程序激活)
PLC 关闭 $EXT_START(程序启动)
KRC 输出 $PGNO_REQ(程序编号请求)
PLC 输出 PGNO(程序号)(二进制转整型)
注:程序号由$PGNO_FBIT(程序号第一位)和 PGNO_LENGTH(程序号位字节宽度)确定
PLC 输出 $PGNO_VALID(程序编号有效)
KRC 输出 $APPL_RUN(应用程序正在运行)
PLC 关闭 PGNO(程序号)(二进制转整型)
PLC 关闭 $PGNO_VALID(程序编号有效)
此时机器人已经进入对应CASE的子程序中了。在我的程序示例中,如果PLC程序号给了1,那就是进入了TEST( );
⑤子程序运行完毕,返回CELL中,重复KRC输出 $PGNO_REQ(程序编号请求)及后续步骤;
⑥程序运行结束后,按一下示教器左边红色暂停键,顺时针转动示教器上的钥匙,选择T1模式后转回来即可;
(1)菜单/配置/输入输出端/外部自动运行,配置外部自动运行;






最后再次声明,希望大家在使用机器人前能详细阅读库卡机器人官方资料,本文仅供参考,对于出现的任何后果,本人概不负责!
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
是否有可能:before_filter:authenticate_user!||:authenticate_admin! 最佳答案 before_filter:do_authenticationdefdo_authenticationauthenticate_user!||authenticate_admin!end 关于ruby-on-rails-before_filter运行多个方法,我们在StackOverflow上找到一个类似的问题: https://