此文章轉載自“博客園”作者:瘋狂的機器人
環境搭建
ENVIRONMENT SETUP
01
硬件環境:
①上位機: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項目介紹
PROJECT INTRODUTION
01
文件目錄: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 PcanBus
from udsoncan.connections import PythonIsoTpConnection
import 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.xlsx?04
UDS_TestReport
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
測試
+關注
關注
8文章
5318瀏覽量
126728
發布評論請先 登錄
相關推薦
通用自動化測試軟件 - TAE
INTEWORK-TAE(Test Automation Executor) 是一款通用的測試用例自動化執行框架,用于汽車電子自動化測試,可支持仿真( MIL/SIL/HIL)、故障注
CAN總線在工業自動化中的作用
CAN(Controller Area Network)總線在工業自動化中發揮著至關重要的作用。它是一種高效的現場總線系統,以其高速、可靠和靈活的特點,成為連接工業自動化系統中各種設備的優選方案
虹科活動回顧 | 波形診斷開放日-上海站圓滿落幕!
Pico開放日,你可以收獲哪些有趣的體驗吧!虹科Pico產品展示這里有虹科Pico全系列產品展示,包括四通道示波器主機、壓力傳感器、NVH套裝、毫歐與電機
CAN總線在工業自動化中的應用
CAN總線作為一種高效的現場總線系統,已經在工業自動化領域得到了廣泛的應用。 1. 引言 隨著工業自動化技術的快速發展,對通信系統的要求也越來越高。CAN總線以其高速、可靠和靈活的特點
新合作啟航,服務如初!虹科與HMS及PEAK合作升級
”)大家庭的一員。作為PEAK在中國區的唯一官方指定代理商,這一戰略性的并購不僅標志著PEAK邁入了一個嶄新的發展階段,更為虹科開啟了全新的發展機遇與篇章。聯袂起航,共創
虹科展會丨再赴工博之約,來看虹科玩轉自動化科技!
才感盛夏,忽而已秋,2024中國國際工業博覽會(IAS工業自動化展)也即將拉開帷幕!IAS以裝備制造為重點,以數字制造、綠色制造、服務制造為特色,不僅成為了展示工業自動化領域最前沿科技成果的重要窗口
虹科方案 領航智能交通革新:虹科PEAK智行定位車控系統Demo版亮相
導讀: 在智能汽車技術發展浪潮中,車輛控制系統的智能化、網絡化已成為行業發展的必然趨勢。虹科PEAK智行定位車控系統,集成了尖端科技,能夠
TSMaster 的 CAN UDS 診斷操作指南(下)
UDSonCAN/CANFD的功能以及詳細的使用操作。本文關鍵詞:UDS,BootLoader,自動診斷流程,診斷系統變量目錄Catalog4.TSMaster
TSMaster 的 CAN UDS 診斷操作指南(上)
TSMaster可以少代碼甚至零代碼就可以完成診斷流程開發,診斷開發人員只需要熟悉診斷流程,就能打通研發、產線、售后整條鏈路環節。TSMaster的UDS
評論