绳索牵引机器人的控制.docx
- 文档编号:5506357
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:14
- 大小:1.38MB
绳索牵引机器人的控制.docx
《绳索牵引机器人的控制.docx》由会员分享,可在线阅读,更多相关《绳索牵引机器人的控制.docx(14页珍藏版)》请在冰豆网上搜索。
绳索牵引机器人的控制
摘要
多足步行机器人在民用、工业、国防中具有重要应用价值,伺服控制技术是其中的关键技术。
本项目研究了机器人的柔顺力控制,设计并搭建了模拟实验台,通过编程使嵌入式PC向驱动器发送指令进而控制两个伺服电机转动,根据传感器反馈的数据调节电机转动速度,通过调节两电机转速使连线张力逐渐达到预设值的算法并对实验结果进行了分析和总结。
关键词:
机器人,伺服电机,柔顺力,控制
ABSTRACT
Multileggedwalkingrobotshaveimportantapplicationvalueincivil,industrialandthedefence.Servocontroltechnologyisoneofthekeytechnologies.ThisprojectwhichsendsthecommandtothedrivestocontroltherotationofthetwomotorsbytheembeddedPCstudiedthecontrolofthecompliantforceofrobots,designedandconstructedthesimulationtestbench.ThealgorithmlettheembeddedPCadjustthevelocityofthetwomotorsbythefeedbackdatacollectedbythesensorsothatthetensionreachthedesignednumber.Thenanalyzeandconcludethesolutionoftheexperiment.
Keywords:
robot,servomotor,softpower,control
1.绪论
机器人在自动化控制中有着极其重要的作用,随着科技不断进步,人们对于机器人的研究日渐深入,机器人的功能也越来越多,目前在生产自动中工业机器人已有广泛应用。
虽然机器人功能越来越强大,但是目前阶段的机器人与人的在智能化上的差距还有很大的差距。
目前工业上的机器人大都只能按照事先编写好的程序运行,但是外界环境很容易发生变化,机器人如何在环境变化的前提下适应所发生的变化对于机器人的研究来说显得格外重要。
机器人研究中,核心矛盾之一为:
机器人在特定接触环境操作时对可以产生任意作用力柔性的高要求和机器人在自由空间操作时对位置伺服刚度及机械结构刚度的高要求之间的矛盾,机器人能够对接触环境顺从的这种能力即为柔顺性。
机器人的柔顺性又分为主动柔顺性和被动柔顺性。
机器人的被动柔顺性是指机器人在外部作用力下能够凭借自身的一些柔顺装置来对外部作用力顺从;机器人的主动柔顺性是指机器人通过传感器等测量装置传达的反馈信息用一定的策略去主动控制力。
机器人主动柔顺控制是新兴智能制造的一项关键技术,也是柔性装配自动化中的难点。
机器人具有柔顺性,即对工作环境具有一定的自适应能力和顺从能力。
本课题研究主要是通过构造电动伺服控制系统来完成的。
电动伺服系统是自动控制系统的一类,它的输出变量通常是位置或者是速度,它的根本任务是实现执行机构对给定指令的准确跟踪,即实现输出变量的某种状态能够自动、连续、精确地复现输入指令信号的变化规律。
由伺服电路、伺服电机、机械传动机构及执行部件组成。
电动伺服控制系统按原理可以分为开环系统、闭环系统、半闭环系统。
开环伺服系统:
开环伺服系统的输入系统的信号不受输出信号影响的控制系统,由于没有检测反馈装置,系统中各个部分的误差都合成为系统的位置误差,所以其精度较低,但稳定性最好。
开环伺服系统
闭环伺服系统:
闭环伺服系统输出量直接或间接反馈到输入端。
其特点是精度较高,但系统的结构较复杂、成本高,还存在系统稳定性的问题。
闭环伺服系统
半闭环伺服系统:
半闭环伺服系统集二者优势于一身,半闭环控制系统的精度比开环系统的精度要高,其稳定性也闭环控制系统高。
半闭环伺服系统
柔顺力的控制集众多学科于一身,它的研究可以解决不少难题,对机器人柔顺力的研究在21世纪的今天存在着良好的理论价值,在实际工程项目中也有重要意义,机器人柔顺力的研究在实际中应用领域广泛,具有很好的发展前景。
2.硬件设计
2.1系统总体设计
系统总体设计为:
以倍福公司生产的嵌入式PC-CX2040作为主站。
CX2040安装在DIN导轨上,采用多核处理器和模块化PC和I/O接口,具有很高的灵活性,可模块化扩展的嵌入式控制器采用坚固耐用的金属外壳。
CX2040采用的通讯方式是EtherCAT,EtherCAT(以太网控制自动化技术)是一个以以太网为基础的开放架构的现场总线系统,最初由德国倍福自动化有限公司研发。
EtherCAT为系统的实时性能和拓扑的灵活性树立了新的标准,同时,它还符合甚至降低了现场总线的使用成本。
CX2040通过EtherCAT总线与驱动器相连对其发出指令。
嵌入式PC
与CX2040连接的驱动器为Elmo公司生产的驱动器,驱动器连接两个电机,将电机固定在设计好的支架上,支架的中点固定传感器,传感器接到CX2040的扩展模块上。
两个电机及传感器上放置一条绳子,传感器可测量绳子对它施加的力。
将测得的力模数转化后反馈到嵌入式PC上,可以在TwinCAT软件当中读出。
通过计算可知绳子的张力值,因为实验目的只要保持绳子上的张力值恒定,故只需传感器测力的值恒定即可。
通过个人PC与CX2040连接以方便编程。
驱动器
2.2机械结构设计
支架三视图如下图所示,在两边各打了半径为10毫米的孔用来通过伺服电机并将伺服电机固定在该位置。
支架的中间也开了一个孔以令传感器穿过。
一条细绳如上图所示放置,两个电机都能让细绳在其上缠绕,传感器能够感受到细绳对其的合力,并将其反馈到PC上。
该装置所占空间体积大小为400mm*360mm*225mm,首先通过UG建模然后用autocad生成三视图,最后根据图纸来加工,加工最后的成品即为上图支架。
支架三视图
3.软件设计
3.1控制软件设计
实验采用的控制软件使用的是倍福公司开发的TwinCAT2,通过对TwinCAT2的PLC模块编程以控制TwinCAT2的NC模块以此来控制电机的转动。
TwinCAT简介:
TwinCAT是德国倍福公司基于PC平台和Windows操作系统的控制软件。
现存版本有两种:
TwinCAT2和TwinCAT3。
TwinCAT2是针对单CPU及32位操作系统开发设计点的,其运行核不能工作在64位操作系统。
对于多CPU系统,只能发挥一个CPU的运算能力。
TwinCAT3考虑了64位操作系统和多核CPU,并且集成C++编程和Matlab建模,所以TwinCAT3运行核既可以工作在32位操作系统,可以发挥全部CPU的运算能力。
本实验由于考虑到并不需要很强的运算能力,故选用了TwinCAT2作为本实验的软件,我们在实验过程中也在部分功能中尝试使用了TwinCAT3。
TwinCATPLC的特点:
与传统的PLC相比,CPU、硬盘、内存资源有了数量级的提升,运算快,数量区和程序区几乎无穷大,除执行普通的逻辑运算外还能调用Windows操作系统点的功能,比如文件操作、应用程序启动或停止、注册表修改、关闭或者重启操作系统等。
TwinCATNC的特点:
与传统的运动控制卡、运动控制模块相比,TwinCATNC最多能控制255个运动轴,并且支持几乎所有的硬件类型,具备所有单轴点动、多轴联动动能。
并且,由于运动控制器和PLC实际上工作于同一台PC,二者之间的通讯只是两个内存区之间的数据交换,其数量和速度都远非传统的运动控制器可比。
TwinCAT_NC_PTP运动控制:
1.将个人PC与嵌入式PC相连,相连之后在I/O口配置处选择扫描,扫描后会出现如下图所示的界面。
此时即可通过电脑控制嵌入式PC了。
2.因为实验中使用了两个电机,因此NC配置模块中会出现两个轴,分别为“Axis1”和“Axis2”,直接点击它们可以完成使能然后按一定方式令其转动。
3.以“Axis1”为例,选择“Online”可以进入电机配置,通过选择选项中的参数来控制电机。
4.在Enabling中点击“Set”之后选择“All”可以完成电机的使能,电机使能之后下面的一排按键都可以选择。
例如点击“F3+”键或者点击“F4++”键可以令电机1正向转动或者快速正向转动,“F1—”和“F2-”则可以令电机朝反方向转动,“F8”可以实现电机的重置,解除电机的报错状态。
该界面还可以有许多功能,例如右上角的“SetpointPosition”可以看到电机当前运行到的位置,“ActualVelocity”可以监测电机运行的速度,“Override”可以查看电机的使能百分比,通过调节电机的使能百分比也可以调节电机的转速,如果运行出现错误的话,会将错误对应的数字以红字显示在“Error”里,方便使用者排查错误。
5.接下来是轴的运动,本实验使用的轴的运动主要是轴的绝对运动和相对运动。
在前面所述界面选中“Funciton”之后,可以进入到如下图所示界面。
在“StartMode”中选择“Absolute”即选择了绝对运动模式,输入“TargetPosition”即指定了电机所要运行到的位置,输入“TargetVelocity”即可指定电机所要运行的速度,在上述选项都设置完了之后只要点击“Start”电机就能从现在的位置运行到指定位置然后停下来。
在“StartMode”中选择“Relative”模式,其它操作与前述一致即可实现电机的相对运动。
因为实验涉及到两个电机的运动,两个电机的运动并不是相互独立的,在TwinCAT中只要选择“Coupling”选项即可实现电机的耦合运动。
此外TwinCATNC还有其它许多功能,此处不再赘述。
编程语言:
使用TwinCATPLC编程时,采用可以采用多种方式编程例如梯形图,ST语言等,最后我们实验采用的是ST语言编程。
结构化文本(ST)是一种高级的文本语言,可以用来描述功能,功能块和程序的行为,还可以在顺序功能流程图中描述步、动作和转变的行为。
结构化文本(ST)语言表面上与PASCAL语言很相似,但它是一个专门为工业控制应用开发的编程语言,具有很强的编程能力用于对变量赋值、回调功能和功能块、创建表达式、编写条件语句和迭代程序等。
结构化文本(ST)非常适合应用在有复杂的算术计算的应用中。
使用ST语言进行编程,与C语言的编程有很多相似之处,因此在本实验中较为容易就能上手,ST编程语言相对于C用语言来说虽然没有其使用广泛,但是相对来说还是较易读懂,并且容易模仿教程上的例子来编写。
因此我们在用TwinCAT2这个软件的时候,经过再三考虑之后我们选用了ST语言来进行编程。
4.控制实验
上述所介绍的控制电机转动部分是基于TwinCATSystemManager做的,并不是非常方便,都需要通过手动才能让电机运动,但是实际上完全靠手动来设定是不可能的,因此要采用TwinCATPLC_Control编程来实现对电机的自动控制。
TwinCATPLC的界面如下图所示,与一般的编程软件稍微有点不同的是,TwinCATPLC将声明和控制语句分开来写,但是它的声明只要在右下方中输入新的变量即会弹框提示让用户选择变量的类型,地址,注释等,这一点用起来很方便,可以省略自己定义变量类型地址等不必要的麻烦。
在TwinCATPLC中将程序代码写好之后将其编译,软件会自动生成所需文件,在TwinCATSystemManager中将生成的文件添加进去之后,将相应的变量设置连接之后,在TwinCATSystemManager中运行之后,在TwinCATPLC的Online中点击Login再点击“Run”即可运行所写的代码。
本实验中将“MAIN.NCTOPLC1”连接至“Axis1_ToPlc”,“MAIN.NCTOPLC2”连接至“Axis2_ToPlc”,“MAIN.PLCTONC1”连接至“Axis1_FromPlc”,“MAIN.PLCTONC2”连接至“Axis2_FromPlc”这样即可以控制电机的转动。
将“MAIN.a”连接至“Value.AIStandardChannel3.Term2(EL3104).Device1(EtherCAT).I/ODevices”用来将传感器所测量到的数值返回用以取平均值后判断。
实验代码:
PROGRAMMAIN
VAR
des:
INT;
axis1_en:
MC_Power;
axis2_en:
MC_Power;
override:
LREAL:
=50;
PLCTONC1AT%Q*:
PLCTONC_AXLESTRUCT;
PLCTONC2AT%Q*:
PLCTONC_AXLESTRUCT;
NCTOPLC1AT%I*:
NCTOPLC_AXLESTRUCT;
NCTOPLC2AT%I*:
NCTOPLC_AXLESTRUCT;
axis_velocity1:
MC_MoveVelocity;
axis_velocity2:
MC_MoveVelocity;
arr:
ARRAY[1..1000]OFINT:
=1000(0);
b:
INT;
i:
INT;
sum:
LREAL;
mean:
LREAL;
aAT%IB64:
INT;
axis1_stop:
MC_Stop;
axis2_stop:
MC_Stop;
END_VAR
des:
=100;
axis1_en(
Enable:
=1,
Enable_Positive:
=1,
Enable_Negative:
=1,
Override:
=100,
AxisRefIn:
=NCTOPLC1,
AxisRefOut:
=PLCTONC1,
Status=>,
Error=>,
ErrorID=>);
axis2_en(
Enable:
=1,
Enable_Positive:
=1,
Enable_Negative:
=1,
Override:
=override,
AxisRefIn:
=NCTOPLC2,
AxisRefOut:
=PLCTONC2,
Status=>,
Error=>,
ErrorID=>);
axis_velocity1(
Execute:
=0,
Velocity:
=15,
Acceleration:
=,
Deceleration:
=,
Jerk:
=,
Direction:
=1,
Axis:
=NCTOPLC1,
InVelocity=>,
CommandAborted=>,
Error=>,
ErrorId=>);
axis_velocity1(
Execute:
=1,
Velocity:
=15,
Acceleration:
=,
Deceleration:
=,
Jerk:
=,
Direction:
=1,
Axis:
=NCTOPLC1,
InVelocity=>,
CommandAborted=>,
Error=>,
ErrorId=>);
axis_velocity2(
Execute:
=0,
Velocity:
=30,
Acceleration:
=,
Deceleration:
=,
Jerk:
=,
Direction:
=,
Axis:
=NCTOPLC2,
InVelocity=>,
CommandAborted=>,
Error=>,
ErrorId=>);
axis_velocity2(
Execute:
=1,
Velocity:
=30,
Acceleration:
=,
Deceleration:
=,
Jerk:
=,
Direction:
=,
Axis:
=NCTOPLC2,
InVelocity=>,
CommandAborted=>,
Error=>,
ErrorId=>);
b:
=a;
FORi:
=1TO999BY1DO
arr[i]:
=arr[i+1];
END_FOR
arr[1000]:
=b;
sum:
=0;
FORi:
=1TO1000BY1DO
sum:
=sum+arr[i];
END_FOR
mean:
=sum/1000;
IFmean>desTHEN
override:
=override-0.01;
ELSIFmean override: =override+0.01; ELSE override: =override; END_IF IFmean>des+1000ORmean axis1_stop( Execute: =0, Deceleration: =2, Jerk: =, Axis: =NCTOPLC1, Done=>, Error=>, ErrorId=>); axis1_stop( Execute: =1, Deceleration: =2, Jerk: =, Axis: =NCTOPLC1, Done=>, Error=>, ErrorId=>); axis2_stop( Execute: =0, Deceleration: =2, Jerk: =, Axis: =NCTOPLC2, Done=>, Error=>, ErrorId=>); axis2_stop( Execute: =1, Deceleration: =2, Jerk: =, Axis: =NCTOPLC2, Done=>, Error=>, ErrorId=>); END_IF 程序大意是: 首先设定一个目标值,将其明名为“des”(此处设置的值为100)。 然后将轴1和轴2分别使能,其中轴1使能100%,轴2的使能采用“override”变量控制,设置其初值为50%,用以后面根据情况来改变电机速度。 接着令电机1和电机2匀速转动起来,因为令电机转动起来需要采用上升沿触发,因此段代码都写了两遍,一次将“Execute”置0下一次将“Execute”置1来以产生上升沿使电机转动起来。 接着构造一个含1000个数的数组,将测得的变量值储存在其中,每次去掉之前1000个数的第一个数,其余数字都存储到前一个变量当中,将新测得的数字作为第1000个数构成一个新的数组并取平均值。 通过比较平均值与目标值的大小判定轴2的使能百分比是应该增加还是减小,增加或者减小与具体的接线方式有关,直到目标值与平均值相等时停止改变轴2的使能百分比。 最后如果平均值与目标值的大小差距过大为防止细绳被拉断或者损坏设备,则令电机1和电机2都减速并停止。 由于我们一开始在实验的时候我们发现传感器所测得的值波动较为厉害,这样所得的数据根本没有意义,但是经过一段时间观察后发现其虽然波动得较为厉害但是大体上还是处在某个值附近波动,因此考虑采用取平均值的方式来消除误差。 一开始我们取了100组数据的平均值发现效果不太理想,平均值还是存在一定幅度的波动,但是比起之前经好了很多。 后来我们决定采用1000组数据的平均值的方式来测量,经过实验观察之后发现效果比较理想,经过一段时间之后大体数值较为稳定不像之前那样大致围绕一个数值随机波动。 但是取1000个平均数的方式也存在着一定的问题,因为PLC运行的周期为10毫秒,所得的值前1000个都是错误的,在理论上去得的平均值要成为正确的值至少需要10秒钟,因而需要花费较长的时间。 出于这个原因考虑我们不能将取平均值的数组所含数字个数取得过多,虽然这样子得到的平均值会更为准确,同时如果数字个数过少其波动还是较大,故再三权衡测试下我们使用了1000个数字的平均值。 实验结论: 实验所得基本可以实现最初预测的功能,但是因为软件和硬件等各方面的原因,该实验仍然有很多值得改善的地方,比方说细线容易缠绕起来还有过短,实验代码理论上可行但是效果上并不是非常理想,没有设置PID等环节,误差较大等问题。 因此该实验只在一定程度上取得了成功,还有很多地方需要进一步地改进完善。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 绳索 牵引 机器人 控制