Browse Source

更新协议

master
zhaohe 4 months ago
parent
commit
8687baa311
  1. 250
      README.md
  2. 2
      a8000_protocol
  3. 20
      iflytop_canbus/iflytop_canbus_master.hpp
  4. 2
      src/mainwindow.cpp
  5. 4
      src/tab/module_opera_tab.cpp
  6. 2
      src/version.h

250
README.md

@ -1,255 +1,9 @@
``` ```
QT打包:
参考教程
https://blog.csdn.net/ColinFhz/article/details/107879769
编译:
.\tools\build.bat
V4:
1.修改样式
2.优化打包体积
modbus
设备地址:
波特率 :
读取配置
写入配置
校验配置
配置中有部分配置是只读的,部分配置不需要校验,
1.协议文件
名称,地址,读写特性,备注信息,是否属于配置(如果该配置项是只读的,则只校验配置)
2.配置
地址,数值
地址,数值
```
```
待测试项:
1. 充电状态下的电池电量
2. 设置设备时间,让设备休眠状态下,不彻底关机
3. 读取设备中存储的记录
4. 上报某条记录
5. 打印记录的checksum
```
```
模块名:
模块基本操作:
打印寄存器列表
初始化
1. 脚本解析器
电机初始化(人造方法....),设定好所有必要的初始化参数,按下按键即可。
必要参数:
方法.....
.........
```
```
ID地址:
0x080E0000
10 :(0x0A)
20 :(0x14)
30 :(0x1E)
40 :(0x28)
50 :(0x32)
60 :(0x3C)
70 :(0x46)
80 :(0x50)
90 :(0x5A)
100:(0x64)
110:(0x6E)
200:(0xCB)
```
```
1. 获取电容阈值曲线
->读取当前位置,电容数值
->相对移动(dpos,v)
2. 获取压力曲线
3. 液面探测复位()
4. 开始液面探测(dpos,v,电容阈值,压力阈值)
5. 吸液(液面跟随)
1. 打开压力流
2. 关闭压力流
基础命令格式
/ 2 A 3000 R \r
命令开始 ID 命令 参数 执行 命令结束
1. 读取压力,读取电容值
2. 初始化
3. A移动到(绝对位置)
4. P相对吸取
5. D相对分配
配置指令
设置加减速度
L1,2
设置开始速度
设置最高速度
设置停止速度
设置增量模式(单位)
设置泵电机保持电流
设置泵电机运行电流
T终止
C清除命令缓冲区
TIP 弹出命令
液面检测命令
f<n>开启或停止压力数据流
<p>设定压力传感器增益
r复位LLD输出
读取泵机错误码
参数表设置
推导峰值检测参数
读取当前温度
```
``` ```
页面功能:
----------------------------------------
参数校准功能
1.试管扫码位置校准
第一个试管
第二个试管
...
第十个试管
2.试管处理位置校准
第一个试管
第二个试管
...
第十个试管
3.舵机位置校准
失能舵机,设定当前位置为中点
舵机夹紧位置
松开位置
夹紧扭矩
硬件功能验证:
光电验证
步进位置校准
----------------------------------------
动作编排
夹紧
松开
----------------------------------------
指标测试
------------------------------------------------------------------------------------------------------------------------
->解决不同设备之间的差异性
相对位置的不同造成的差异--->
1.偏移位置
2.扭矩大小
3.每个动作的位置要不要抽离?????
--->
读取参数,保存参数,恢复默认
-------------------------------------------------------
1.参数 1.参数 1.参数 1.参数 1.参数 | 信息输出框
1.参数 1.参数 1.参数 1.参数 1.参数 |
1.参数 1.参数 1.参数 1.参数 1.参数 |
1.参数 1.参数 1.参数 1.参数 1.参数 |
-------------------------------------------------------
电机归零,电机失能,电机使能
单步
-----------------------------------------------------
入料电机正转 出料电机正转 平移到第N个试管扫码位
停止 停止 平移到第N个试管处理位
开始扫码
停止扫码
-----------------------------------------------------
半自动
进料
扫描试管信息
预处理摇匀试管N(脱帽/盖帽/摇匀) 摇匀[对勾] 摇匀次数() 摇匀角度
出料
-----------------------------------------------------
参数
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
读取参数,保存参数,恢复默认
----------------------------------------------------------------------------------------------------------------
```
```
```
```
T光学
lasterGain 100
scanGain 20
F光学
lasterGain 0 (数值越大,功率越小)
scanGain 0
第一次扫描,0,0
实验材料:
Fx3-23 -> F光学,位置80,120,160
```

2
a8000_protocol

@ -1 +1 @@
Subproject commit 5fb4985d0c6cae59ab4f00a1de65910938bca096
Subproject commit 590c89179513d49d36fd9ad9cb678e3d9e34be7a

20
iflytop_canbus/iflytop_canbus_master.hpp

@ -13,7 +13,6 @@
#include <vector> #include <vector>
#include "a8000_protocol/protocol.hpp" #include "a8000_protocol/protocol.hpp"
#include "idatachannel.hpp" #include "idatachannel.hpp"
#include "waveshare_can.hpp" #include "waveshare_can.hpp"
@ -110,6 +109,25 @@ class IflytopCanbusMaster {
void readreg(int32_t device_id, int32_t regaddr, int32_t *val); void readreg(int32_t device_id, int32_t regaddr, int32_t *val);
void writereg(int32_t device_id, int32_t regaddr, int32_t val); void writereg(int32_t device_id, int32_t regaddr, int32_t val);
// kmodule_get_version
// kmodule_get_type
// kmodule_get_status
void module_get_version(int32_t device_id, int32_t *version) {
callcmd0(device_id, kmodule_get_version);
*version = *(int32_t *)m_receipt_frame->data;
}
void module_get_type(int32_t device_id, int32_t *type) {
callcmd0(device_id, kmodule_get_type);
*type = *(int32_t *)m_receipt_frame->data;
}
void module_get_status(int32_t device_id, int32_t *status) {
callcmd0(device_id, kmodule_get_status);
*status = *(int32_t *)m_receipt_frame->data;
}
void step_motor_enable(int32_t device_id, int32_t enable) { callcmd1(device_id, kstep_motor_enable, enable); } void step_motor_enable(int32_t device_id, int32_t enable) { callcmd1(device_id, kstep_motor_enable, enable); }
void step_motor_easy_rotate(int32_t device_id, int32_t direction) { callcmd1(device_id, kstep_motor_easy_rotate, direction); } void step_motor_easy_rotate(int32_t device_id, int32_t direction) { callcmd1(device_id, kstep_motor_easy_rotate, direction); }
void step_motor_easy_move_by(int32_t device_id, int32_t distance) { callcmd1(device_id, kstep_motor_easy_move_by, distance); } void step_motor_easy_move_by(int32_t device_id, int32_t distance) { callcmd1(device_id, kstep_motor_easy_move_by, distance); }

2
src/mainwindow.cpp

@ -406,7 +406,7 @@ void MainWindow::on_boardId_tableWidget_cellDoubleClicked(int row, int column) {
QString id = ui->boardId_tableWidget->item(row, 1)->text(); QString id = ui->boardId_tableWidget->item(row, 1)->text();
ui->PublicState_DeviceID->setText(id); ui->PublicState_DeviceID->setText(id);
ui->ModuleNameText->setText(ui->boardId_tableWidget->item(row, 2)->text()); ui->ModuleNameText->setText(ui->boardId_tableWidget->item(row, 2)->text());
ICM->readreg(id.toInt(), kreg_module_type, &moduleType);
ICM->module_get_type(id.toInt(), &moduleType);
ui->buttonTabWidget->setCurrentIndex(moduleTypes[moduleType]); ui->buttonTabWidget->setCurrentIndex(moduleTypes[moduleType]);
} catch (const std::exception &e) { } catch (const std::exception &e) {

4
src/tab/module_opera_tab.cpp

@ -67,8 +67,8 @@ void ModuleOperaTab::construct(QWidget *parent) {
int moduleType; int moduleType;
int moduleVersion; int moduleVersion;
IflytopCanbusMaster::ins()->readreg(i, kreg_module_type, &moduleType);
IflytopCanbusMaster::ins()->readreg(i, kreg_module_version, &moduleVersion);
IflytopCanbusMaster::ins()->module_get_type(i, &moduleType);
IflytopCanbusMaster::ins()->module_get_version(i, &moduleVersion);
if (i % 10 == 0) { if (i % 10 == 0) {
ZQUI::ins()->ishow(""); ZQUI::ins()->ishow("");

2
src/version.h

@ -1,4 +1,4 @@
#pragma once #pragma once
#define VERSION "V17"
#define VERSION "V20"
#define MAUFACTURER "iflytop" #define MAUFACTURER "iflytop"
Loading…
Cancel
Save