0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

虹科分享|使用PEAK CAN卡实现UDS诊断自动化测试

虹科汽车电子 2022-02-07 15:20 次阅读
313b3ace-8058-11ec-9e9d-dac502259ad0.png

此文章转载自“博客园”作者:疯狂的机器人

3147e3dc-8058-11ec-9e9d-dac502259ad0.png

3152581c-8058-11ec-9e9d-dac502259ad0.png3160b844-8058-11ec-9e9d-dac502259ad0.png

环境搭建

ENVIRONMENT SETUP

316c3e08-8058-11ec-9e9d-dac502259ad0.png31765852-8058-11ec-9e9d-dac502259ad0.png

01

317dace2-8058-11ec-9e9d-dac502259ad0.png

硬件环境:

上位机:PEAK PCAN

PCAN-USB驱动:【虹科】带您了解PCAN如何获取驱动以及如何接线

②下位机:ECM(发动机控制模块)

02

Python环境:下载地址:https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exepip3 install robotframework==3.2.2pip3 install robotframework-ride==1.7.4.2pip3 install xlrd==1.2.0pip3 install udsoncan==1.14pip3 install python-can==3.3.4pip3 install can-isotp==1.7

3152581c-8058-11ec-9e9d-dac502259ad0.png3160b844-8058-11ec-9e9d-dac502259ad0.png

项目介绍

PROJECT INTRODUTION

316c3e08-8058-11ec-9e9d-dac502259ad0.png31765852-8058-11ec-9e9d-dac502259ad0.png

01

31daec7c-8058-11ec-9e9d-dac502259ad0.png文件目录:

10−−3E:L2层robot测试用例

Public.robot:L1层关键字方法

UDS_TestReport.zip:自动化测试报告

udstest.py:python封装自定义uds测试方法

UDSTestcase.xlsx:UDS诊断测试用例

02

udstest.py
# _*_ coding:utf-8 _*_
from can.interfaces.pcan.pcan import PcanBusfrom udsoncan.connections import PythonIsoTpConnectionimport xlrd, os, udsoncan, isotp, sys, binascii

class udstest(object):    def __init__(self):        udsoncan.setup_logging()  # udslog
    def get_xlsx(self, sheet):        "获取指定Excel数据"        excel = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'UDSTestcase.xlsx')  # 获取用例文件路径        file = xlrd.open_workbook(excel)        list = []        sheet = file.sheet_by_name(sheet)  # 获得指定sheet数据        row_value1 = sheet.row_values(0)  # 获取第1行的标题        nrows = sheet.nrows  # 获取当前sheet行数        ncols = sheet.ncols  # 获取当前sheet列数        for i in range(1, nrows):  # 从第2行遍历当前sheet            row = sheet.row_values(i)  # 获取行数据            dict = {}  # 创建空字典            for j in range(0, ncols):  # 遍历sheet列,组成字典                if row_value1[j] == 'NO.':                    dict[row_value1[j]] = int(row[j])                else:                    dict[row_value1[j]] = row[j]  # 从第一列开始,将每一列的数据与第1行的数据组成一个键值对,形成字典            list.append(dict)  # 将字典添加list中        return list
    def set_can(self, txid, rxid):        """can总线相关配置"""        if isinstance(txid, str) or isinstance(rxid, str):            txid = eval(txid)            rxid = eval(rxid)        isotp_params = {            'stmin': 5,  # 流控帧间隔时间,0-127ms 或 100-900ns 值从 0xF1-0xF9            'blocksize': 0,  # 流控帧单包大小,0表示不限制            'tx_padding': 0,  # 当 notNone表示用于填充发送的消息的字节。            'rx_flowcontrol_timeout': 1000,  # 在停止接收和触发之前等待流控制帧的毫秒数            'rx_consecutive_frame_timeout': 1000,  # 在停止接收和触发 a 之前等待连续帧的毫秒数        }        try:            self.canbus = PcanBus(channel='PCAN_USBBUS1', bitrate=500000)  # CAN总线初始化            self.tp_addr = isotp.Address(isotp.AddressingMode.Normal_29bits, txid=txid, rxid=rxid)  # 网络层寻址方法            tp_stack = isotp.CanStack(bus=self.canbus, address=self.tp_addr, params=isotp_params)  # 网络/传输层(IsoTP 协议)            self.conn = PythonIsoTpConnection(tp_stack)  # 应用层和传输层之间建立连接
        except:            print(sys.exc_info()[1])        else:            print('CAN配置成功')
    def uds_request_respond(self, request_command):        """发送uds请求和接收uds响应"""        if not isinstance(request_command, str):  # 判断request_command数据类型            request_command = str(int(request_command))        requestPdu = binascii.a2b_hex(request_command.replace(' ', ''))  # 处理request_command        if not self.conn.is_open():            self.conn.open()  # 打开连接        try:            self.conn.specific_send(requestPdu)  # 发送uds请求        except:            print("发送请求失败")        else:            print('UDS发送请求:%s' % request_command)
        try:            respPdu = self.conn.specific_wait_frame(timeout=3)  # 接收uds响应        except:            print('响应数据失败')        else:            res = respPdu.hex().upper()            respond = ''            for i in range(len(res)):                if i % 2 == 0:                    respond += res[i]                else:                    respond += res[i] + ' '            print('UDS响应结果:%s' % respond)            self.conn.close()  # 关闭连接            self.canbus.shutdown()  # 关闭总线            return respond.strip()

03

UDSTestcase.xlsx31ee3df4-8058-11ec-9e9d-dac502259ad0.png 

04

UDS_TestReport31fcc2d4-8058-11ec-9e9d-dac502259ad0.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    5155

    浏览量

    126447
收藏 人收藏

    评论

    相关推荐

    CAN总线在工业自动化中的应用

    CAN总线作为一种高效的现场总线系统,已经在工业自动化领域得到了广泛的应用。 1. 引言 随着工业自动化技术的快速发展,对通信系统的要求也越来越高。CAN总线以其高速、可靠和灵活的特点
    的头像 发表于 11-12 09:45 221次阅读

    新合作启航,服务如初!与HMS及PEAK合作升级

    ”)大家庭的一员。作为PEAK在中国区的唯一官方指定代理商,这一战略性的并购不仅标志着PEAK迈入了一个崭新的发展阶段,更为开启了全新的发展机遇与篇章。联袂起航,共创
    的头像 发表于 10-12 08:00 305次阅读
    新合作启航,服务如初!<b class='flag-5'>虹</b><b class='flag-5'>科</b>与HMS及<b class='flag-5'>PEAK</b>合作升级

    科展会丨再赴工博之约,来看玩转自动化科技!

    才感盛夏,忽而已秋,2024中国国际工业博览会(IAS工业自动化展)也即将拉开帷幕!IAS以装备制造为重点,以数字制造、绿色制造、服务制造为特色,不仅成为了展示工业自动化领域最前沿科技成果的重要窗口
    的头像 发表于 09-03 08:00 239次阅读
    <b class='flag-5'>虹</b>科展会丨再赴工博之约,来看<b class='flag-5'>虹</b><b class='flag-5'>科</b>玩转<b class='flag-5'>自动化</b>科技!

    开关电源自动化测试设备:如何实现自动化测试

    开关电源自动化测试设备是将测试软件和测试硬件集成在一个电源测试柜中的ate自动测试设备,其
    的头像 发表于 08-30 18:19 1164次阅读
    开关电源<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>设备:如何<b class='flag-5'>实现</b><b class='flag-5'>自动化</b><b class='flag-5'>测试</b>?

    方案 领航智能交通革新:PEAK智行定位车控系统Demo版亮相

    导读: 在智能汽车技术发展浪潮中,车辆控制系统的智能、网络已成为行业发展的必然趋势。PEAK智行定位车控系统,集成了尖端科技,能够
    的头像 发表于 08-27 09:28 230次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>方案  领航智能交通革新:<b class='flag-5'>虹</b><b class='flag-5'>科</b><b class='flag-5'>PEAK</b>智行定位车控系统Demo版亮相

    车载以太网自动化测试套件—AETP.UDS

    AETP.UDS是专为车载以太网UDS测试设计的自动化测试套件,旨在测试ECU对ISO 1422
    的头像 发表于 08-21 11:57 1023次阅读
    车载以太网<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>套件—AETP.<b class='flag-5'>UDS</b>

    车载以太网自动化测试套件—AETP.UDS

    AETP.UDS是专为车载以太网UDS测试设计的自动化测试套件,旨在测试ECU对ISO 1422
    的头像 发表于 08-15 15:07 243次阅读
    车载以太网<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>套件—AETP.<b class='flag-5'>UDS</b>

    TSMaster 的 CAN UDS 诊断操作指南(下)

    UDSonCAN/CANFD的功能以及详细的使用操作。本文关键词:UDS,BootLoader,自动诊断流程,诊断系统变量目录Catalog4.TSMaster
    的头像 发表于 06-18 08:21 1615次阅读
    TSMaster 的 <b class='flag-5'>CAN</b> <b class='flag-5'>UDS</b> <b class='flag-5'>诊断</b>操作指南(下)

    TSMaster 的 CAN UDS 诊断操作指南(上)

    TSMaster可以少代码甚至零代码就可以完成诊断流程开发,诊断开发人员只需要熟悉诊断流程,就能打通研发、产线、售后整条链路环节。TSMaster的UDS
    的头像 发表于 06-08 08:21 2054次阅读
    TSMaster 的 <b class='flag-5'>CAN</b> <b class='flag-5'>UDS</b> <b class='flag-5'>诊断</b>操作指南(上)

    基于TAE的数字钥匙自动化测试解决方案

    通过自动化测试执行软件TAE、总线监控分析工具VBA和程控电源,的联合调用,实现数字钥匙 的功能测试、性能测试
    的头像 发表于 05-29 15:15 885次阅读
    基于TAE的数字钥匙<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>解决方案

    CANoe中诊断29服务的实现#诊断自动化测试

    自动化测试
    北汇信息POLELINK
    发布于 :2023年12月29日 21:47:49

    UDS诊断之29服务--服务介绍#诊断自动化测试

    自动化测试
    北汇信息POLELINK
    发布于 :2023年12月20日 12:17:03

    电源测试怎么自动化?电源模块自动化测试系统如何实现

    纳米软件在电测行业深耕十余年,在行业的大背景下,为了进一步完善自动化测试,开发出了新的智能的电源模块自动化测试系统ATECLOUD-POW
    的头像 发表于 12-15 14:40 825次阅读
    电源<b class='flag-5'>测试</b>怎么<b class='flag-5'>自动化</b>?电源模块<b class='flag-5'>自动化</b><b class='flag-5'>测试</b>系统如何<b class='flag-5'>实现</b>?

    LabVIEW与Tektronix示波器实现电源测试自动化

    LabVIEW与Tektronix示波器实现电源测试自动化 在现代电子测试与测量领域,自动化测试
    发表于 12-09 20:37

    UDSCAN和以太网上的实现方案

    JTAG是针对MCU或者SOC这种芯片的调试接口协议,而UDS更像是针对整个ECU的调试接口。UDS简单来说是一种Client/Server的通信服务,即Tester(诊断仪)向ECU发送诊断
    发表于 11-28 09:56 5281次阅读
    <b class='flag-5'>UDS</b>在<b class='flag-5'>CAN</b>和以太网上的<b class='flag-5'>实现</b>方案