目录
一、功能设计
二、硬件分析
2.1 所需材料
2.2 串口通信协议
三、程序设计
四、VI实现结果
4.1 子vi字符串换算功能
4.2 软硬件联调验证
五、分析与总结
一、功能设计
通过LabVIEW的VISA串口通信模块,设计出使用滑杆输出,在波特率为9600的情况下,通过数值转十六进制字符串经串口将信 输入完成机械臂的运动,通过发送指令如0xFF 0x02 0x01 0x0a 0x00的字符串对机械臂状态进行控制,使得操纵人员可以通过滑杆控制机械臂,对机械臂的爪子,腕部旋转,臂部旋转,腕部上下运动,肘部上下运动,臂部上下运动,等六个舵机进行操控。即程序前面板为为机械臂舵机的列表,可以根据通信协议,对机械臂的动态进行串口通信。
Labview作为上位机发出命令给作为下位机的机械臂舵机。下位机再根据此命令解释成相应时序信 直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信 反馈给上位机。
二、硬件分析
2.1 所需材料
图 2 机械臂正视图
图 4 前面板上位机控制图
(前面板设计与布局借鉴于 络优质项目)
图 6 初始化部分
第二个部分:VISA串口通信模块,首先对串口进行配置,选择串口 ,设定波特率之后启用终止符使串行设备做好识别终止符的准备,默认值为TRUE, VI_ATTR_ASRL_END_IN属性设置为识别终止符;如值为FALSE,VI_ATTR_ASRL_END_IN属性设置为0(无)且串行设备不识别终止符。随后进入while循环结构,通过进入while循环隧道,随后信 随着事件结构中滑杆发出的信 一并进入写入缓冲区,并将写入缓冲区的数据写入VISA资源名称指定的设备和接口,最后跳出while循环,并光比VISA资源名词的设备会话句柄或事件对象。
第三个部分,滑杆控制的事件循环结构,以爪子的操作控件为例,滑杆输入数据后将滑杆的数值转至六进制字符串,且宽度必须为数值,对处理后的数值并行地处理截取字符串一次,一组字符串A为原字符串的一个偏移量,剩余两个长度,一组字符串B为0个偏移量,一个剩余长度。随后通过连接字符串的控件将FF0200(通信协议中对机械臂舵机的定义),字符串A,0以及字符串B进行组合,实现符合通信协议中0xFF 0x02 0x00 0xAB 0x0C的串口通信格式。处理好的数据信 跳出事件结构,随后通过与回车键连接字符串。使得,在前面板的操作中存在写入这一个动作,最后通过串口读写的子VI。最后连接舵机接收数据对输出的数据进行监控。
图 8 串口读写子VI前面板
图 10 子VI与主VI功能相互验证
4.2 软硬件联调验证
我们通过虚拟串口连接labview与串口助手以模拟labview上位机与机械臂的环境。
以爪子的开合为例:

经过LabVIEW上位机,串口助手所读到的数据符合我们采用的16路机械臂串口通信协议,且在实物机械臂上准确无误的完成了对应的操作,经验证此课题顺利完成。
五、分析与总结
对于十进制转十六进制字符串,在拖动滑杆时,十进制转十六进制字符,在转的过程中,程序不会补零以及最后四位数据位置相反。首先我们通过对字符串进行移位但是以为后则会导致labview的程序过于臃肿,且会导致labview程序可用性降低,所以我们决定通过组合字符串的形式来完成转换的过程。
在连接变压器,电源和舵机三个模块时我们通常使用较为简单的杜邦线,但是杜邦线强度较低,在机械臂长期运行时内部阻值会升高,温度会升高甚至内部导线会熔断,因此我们旋转了强度更高的导电电线代替。
在设计中电源问题一直影响着我们课程设计进度,因为使用的是变压器加电源的供电,电机得到的电压极其不稳定,且在我们的能力范围内暂时无法改变电源供电结构,但是在本次课设的总结中我们也得出了需要对供电电源进行改变,且得出使用更稳定电源的结论。
程序已开源,欢迎各位使用,若本程序存在纰漏与问题欢迎各位指正。
https://download.csdn.net/download/seka0617/74785550
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!