【睿尔曼-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);} 



撰写评论