基于QT的电动汽车充电协议解析工具

目录

电动汽车充电协议概括
工具设计及与实现
工具运行示例
 生成.exe文件

电动汽车充电协议概括

        电动汽车电动车非车载传导式充电机(以下简称充电机),电池管理系统(Battery Management System,以下简称BMS)之间基于控制局域网(CAN)之间的通信协议。

        在充电过程中,充电机与BMS监测电压、电流和温度等参数,同时BMS根据充电控制算法管理整个充电过程;充电机与BMS之间的CAN通信网络应由充电机和BMS两个节点组成;国标中规定数据传输采用地位先发送的格式。正的电流值代表放电,负的电流值代表充电;物理层应符合ISO 11898-1:2003、SAE J1939-11:2006中之规定;充电机与BMS的通信应使用独立于动力总成控制系统之外的CAN接口。充电机与BMS之间的通信速率可选用50kbit/s、125kbit/s、250kbit/s,推荐采用250kbit/s。

整个充电过程包括四个阶段:充电握手阶段、充电参数配置阶段、充电阶段和充电结束阶段。在各个阶段,充电机和BMS如果在规定的时间内没有收到对方的报文或没有收到正确的报文,即判定为超时,超时时间除特殊规定外,均为5s,当出现超时后,BMS或充电机发送错误报文,并进入错误处理状态。

具体电动汽车充电协议概括请跳转:https://zhuanlan.zhihu.com/p/374943265


工具设计及与实现

UI界面设计

部分代码实现
串口相关代码
//*************************************************串口************************************************
//扫描串口按钮回调函数
void USBCAN::scanport()
{
    QStringList newPortStringList;
    newPortStringList.clear();
    foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
        newPortStringList += info.portName();
    if(newPortStringList.size() != portStringLine.size())
    {
        portStringLine = newPortStringList;
        ui->PortBox->clear();
        ui->PortBox->addItems(portStringLine);
    }
}

//打开串口并验证
bool USBCAN::openCom(QSerialPort *myCom, QString &myportName, qint32 baudRate)
{
    myCom->setPortName(myportName);
    //验证串口是否打开
    if(! myCom->open(QIODevice::ReadWrite))
    {
        myCom->close();
        return false;
    }

    //设置波特率
    myCom->setBaudRate(baudRate);
    //设置数据流控制
    myCom->setFlowControl(QSerialPort::NoFlowControl);

    return true;
}

//打开端口控件
void USBCAN::on_OpenPort_Button_clicked()
{
    //串口按钮显示 “打开串口”
    if(ui->OpenPort_Button->text()==tr("打开串口"))
    {
        //先打开串口
        QString portName = ui->PortBox->currentText();
        QString baudRate = ui->BaudRateBox->currentText();
        //串口打开失败
        if(!openCom(Port_Box, portName, ui->BaudRateBox->currentText().toInt()))
        {
            ui->remindBrowser->append("串口打开失败");
            if(Port_Box->isOpen())
            {
                Port_Box->close();
            }
            return;
        }
        //串口打开成功
        ui->BaudRateBox->setCurrentText(baudRate);
        ui->OpenPort_Button->setText(tr("关闭串口"));
        ui->PortBox->setEnabled(false);
        ui->BaudRateBox->setEnabled(false);
    }
    //串口按钮显示 “关闭串口”
    else
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值