【睿尔曼-RealMan】睿尔曼超轻量仿人机械臂--集成外部串口IO控制器
Forrest 2023-11-23
本文中的C语言示例项目与外部控制器资料已存放至网盘,需要可以直接进行下载。
链接:https://pan.baidu.com/s/1xPAf5AajKaM40CI7bHA1yw?pwd=tkcf
提取码:tkcf
一、文章及功能介绍
在机械臂使用过程中,根据不同的使用需求及场景,机械臂的IO配置可能会出现满足不了使用需求的情况。在这种情况下就需要用到外部IO控制器,本文中提到的外部IO控制器可外接8个外部数字输入传感器、8个外部输出信号口,下面带大家看一下如何使用。
机械臂底部控制器与机械臂末端均可外接IO控制器,本文以机械臂末端接口为例,如需使用机械臂底部控制器请参考机械臂协议文档或接口文档。
二、串口IO控制器的使用
1.设备接线接线
IO控制器的供电为宽电压12~24V,接线完成之后需设置机械臂末端输出相对应的电压,电压的具体设置根据传感器所需供电进行设置。
2.机械臂开启通信及供电设置
机械臂开启末端通信及供电有多种方式,此处以JSON协议和API的方式进行设置。串口IO控制器相关的传感器接线在本文中不做讲解,详细参考云盘中文档说明。
①发送JSON协议设置
//1、打开机械臂控制器485接口,发送标准的modbusRTU协议
{"command":"set_modbus_mode","port":1,"baudrate":9600,"timeout":20}
//2、设置串口IO控制器继电器输出,1号输出
//写单圈数据命令
{"command":"write_single_coil","port":0,"address":1,"data":1,"device":1}
//3、设置串口IO控制器继电器输出,1号关闭输出
{"command":"write_single_coil","port":0,"address":1,"data":0,"device":1}
//4、读取输入0号信号口
//读离散量输入
{"command":"read_input_status","port":0,"address":0,"num":1,"device":1}
//5、关闭控制器modbusRTU通信
{"command":"close_modbus_mode","port":0}
②QT中C语言项目设置
#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include SOCKHANDLE m_sockhand; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } // 开始连接 void MainWindow::on_pushButton_Start_clicked() { // 初始化API, 注册回调函数 RM_API_Init(65, NULL); // 连接服务器 m_sockhand = Arm_Socket_Start((char*)"192.168.1.18", 8080, 5000); qDebug() << "m_sockhand:" << m_sockhand; char* version; version = API_Version(); qDebug() << "version:" << version; } // 关闭连接 void MainWindow::on_pushButton_Close_clicked() { // 关闭连接 Arm_Socket_Close(m_sockhand); m_sockhand = -1; } void MainWindow::on_pushButton_move_clicked() { //设置机械臂控制器端485输出 ret = Set_Modbus_Mode(m_sockhand,0,9600,20,1); ui->textEdit->append(QString(u8"设置工具端485通信: [%1]").arg(ret)); //读取串口IO控制器的输入信息 int date1; ret = Get_Read_Input_Status(m_sockhand,0,1,1,1,&date1); qDebug() << "data:" << date1; //设置串口IO控制器继电器输出 ret = Write_Single_Coil(m_sockhand,0,0,1,1,1); qDebug() << "DOret:" << ret; Sleep(1000); //设置串口IO控制器继电器关闭输出 ret = Write_Single_Coil(m_sockhand,0,0,0,1,1); ui->textEdit->append(QString(u8":DO输出 [%1]").arg(ret)); Sleep(1000);}
撰写评论