- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种新型轻型机械臂示教软件架构的设计
一种新型轻型机械臂示教软件架构的设计
摘 要:传统轻型六轴机械臂控制软件构架一般包括控制器、示教器、canopen通讯等部分。传统控制器是一个程序,机械臂动作?⑹?设定时,一个动作信号需要一组控制器?⑹?,大量的数据收发常常引发主线程与其它线程争夺资源而出现死锁,导致主线程不能继续往下执行,出现卡死。对此,使用Qt软件及C++语言,开发了一款新型六轴机械臂控制软件。采用TCP/IP通讯实现程序间通讯,多线程提高单个程序效率,以QTcpSocket类进行网络编程。通过控制轻型六轴机械臂运动实验,证明此控制软件有效、稳定,能解决界面卡死问题,具有良好的可扩展性与可移植性,界面友好,运行流畅。
关键词:TCP/IP通讯;图形界面卡死;QTcpSocket
DOIDOI:10.11907/rjdk.172360
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2018)002-0124-04
0 引言
图1是六轴轻型机械臂控制系统。控制软件安装在控制器里,示教器是控制器外的触屏。控制器和示教器连在一起是低配的平板电脑,运算和储存要求不高。PCAN又叫做PCAN-USB,是一个CAN转USB接口,通过它可以将CAN网络上的报文通过USB接口传输到PC上,通过相关软件查看CAN报文。PCAN的另一端连接控制器CAN卡,CAN卡与六轴机械臂相连。使用Qt编写程序,语言为C++。
1 界面卡死原因
“界面卡死”是计算机系统由于过量的进程资源消耗,使图形界面进程受到影响的现象。控制程序较为复杂的指令有发送和接收报文、进行运动轨迹规划等。用户通过示教器的图形界面发出指令,在进行稍微复杂的处理时就会有延迟,使得界面(GUI)卡死。对此进行改进,将控制器的程序拆分为两个,如图2所示。一个程序是用户界面程序(GUI),称为RH-LBR,负责收集用户指令,另一个程序Communication_APP专门负责收集下位机发来的报文,以及通过GUI指令向下位机发送指令。这样耗时的处理都由Communication_APP来处理,用户交互界面RH-LBR不会被卡死。两个程序之间的通讯模式为TCP/IP。
2 建立TCP通讯
下面分别介绍RH_LBR和Communication_APP这两个程序里负责通讯的类。CIRT_LBR_GUI类定义RH_LBR程序的GUI,有信号与槽函数和ControllerSocket类互通消息。ControllerSocket类定义TCP里的用户端类。Communication_APP程序里有TcpTransaction类,主要定义TCP里的服务器端,见图3。
在RH_LBR程序的ControllerSocket类中,重要函数如下:①void ControllerSocket::connectToController()建立TCP连接;②void ControllerSocket::readMessage()接收Communication_APP这个程序发来的信息,会有对应的sendMessage函数在Communication_APP程序里;③void ControllerSocket::writeBytes(const QString Message)传输信息,使Communication_APP可以接收到信息。
在Communication_APP程序的TcpTransaction类中,重要函数有:①void TcpTransaction::sessionOpened()。TCP通信的网络配置槽函数;②void TcpTransaction::readMessage()。获取用户程序发送的全部报文,并解析后通过信号发送给子线程:HS_Interface;③void TcpTransaction::sendMessage(const QString Message)。通过本函数将需要发送ControllerSocket类的信息发送出去。
2.1 RH_LBR用户界面程序?筛鲋饕?类
RH_LBR程序里有两个主要类:CIRT_LBR_GUI和ControllerSocket类。
在CIRT_LBR_GUI类中用信号与槽函数调用ControllerSocket类中的startTCPConnection()函数,建立TCP连接。
void CIRT_LBR_GUI::initTCPConnection()
{
开始新建socket的线程和socket的对象
TCPConnectionThread=new QThread;
controllerSocket=new ControllerS
您可能关注的文档
最近下载
- 具身智能——决定机器人泛化能力天花板的“大小脑”.pptx
- 统编版(2019)高中历史必修中外历史纲要下册第一单元综合测试卷(与参考答案解析).pdf VIP
- 课件-空气洁净技术:第五章 洁净空调系统设计.ppt VIP
- SY∕T 5587.9-2021 常规修井作业规程 第9部分:换井口装置.pdf
- 【智慧水务解决方案】水务运营及智慧水务解决方案.docx VIP
- 2023中国幽门螺杆菌感染治疗指南(全文).pdf VIP
- 被皮系统课件(共34张PPT)《畜禽解剖生理(第四版)》同步教学(高教版).pdf VIP
- 施工单位外部协调管理.pptx VIP
- 2025年[参考]法拍房成交确认书范本.docx VIP
- 机修土坎水平梯田工程施工方案.docx VIP
文档评论(0)