無錫先導(dǎo)項(xiàng)目eol檢測設(shè)備
無錫先導(dǎo)項(xiàng)目eol檢測設(shè)備
mes對接
1優(yōu)化導(dǎo)出excel(加快導(dǎo)出)
2 北京新增界面嵌入
qyjz@DESKTOP-60TVBCT MINGW32 ~
git clone
http://192.168.1.231:10101/r/SafetyStandardFrame.git
- gitlib代碼管理系統(tǒng)搭建
導(dǎo)出檢測報(bào)告excel優(yōu)化
手動(dòng)界面繼電器界面優(yōu)化 (xml)
軟件閃退問題優(yōu)化
新增底層代碼邏輯編寫
s71500 plc對接
保定繼電器問題修改 if (!CheckRelayComStatus()) return null;
你保定電池包檢測eol項(xiàng)目 eol 安規(guī)靜態(tài)
先導(dǎo)eol項(xiàng)目 2臺(tái)
春風(fēng)動(dòng)力eol項(xiàng)目 電機(jī)/ecu電機(jī)控制器檢測 2臺(tái)
昂華中華國際項(xiàng)目現(xiàn)場出差調(diào)試
泰州蜂巢安規(guī)靜態(tài)eol項(xiàng)目 1臺(tái)
陜汽epc項(xiàng)目 電機(jī)/整車/高低壓eol 3臺(tái)
北京售后中心項(xiàng)目演示代碼合并和優(yōu)化
一汽解放高壓線束項(xiàng)目 1 臺(tái)
上海君屹安規(guī)靜態(tài)項(xiàng)目調(diào)試 1臺(tái)
11.2 一汽項(xiàng)目遠(yuǎn)程調(diào)試
{
- 19053 通道添加
- bt3523 內(nèi)阻儀 自動(dòng)量程配置 AUT ON
- 19572 接地電阻線路問題排查 FAL 是四線制 三個(gè)線路通 1個(gè)不通
}
陜汽車EPC
19073 模式設(shè)置不上 上下限量程配置偏大 設(shè)置量程數(shù)值偏大 代碼--- 校驗(yàn)碼方法報(bào)錯(cuò)誤
11.1
拓斯達(dá)的軟件設(shè)計(jì)說明書
利元亨軟件設(shè)計(jì)說明書
拓斯達(dá)的模組軟件設(shè)計(jì)開發(fā)
拓斯達(dá)&利元亨 模組采集檢測系統(tǒng)
利元亨的軟件設(shè)計(jì)圖
https://www.processon.com/?utm_source=baidu&utm_medium=sem&utm_term=120476031232&utm_content=29214447710&uc_pagenum=1&uc_adposition=cl1&renqun_youhua=2184313&bd_vid=8762512271433439462 思維導(dǎo)圖工具
底層框架開發(fā)
新增模組數(shù)量總數(shù)編輯
新增模組手動(dòng)檢測技術(shù)功能 設(shè)置模組序號(hào) 實(shí)現(xiàn)漏測 重測數(shù)據(jù)更新
新增匯總報(bào)表功能 (一行6個(gè)) 自動(dòng)排序向下排序羅列功能
{
字典數(shù)組結(jié)構(gòu)
賦值數(shù)據(jù)問題 ---- 對同一對象操作問題修改
生成mes數(shù)據(jù)結(jié)構(gòu)
提前生成匯總報(bào)告功能 -- 生成之后復(fù)位 計(jì)數(shù)從1開始計(jì)數(shù)
控制模組計(jì)數(shù)是否計(jì)數(shù)功能
編輯當(dāng)前序號(hào)功能 雙擊 編輯序號(hào) 從第幾個(gè)序號(hào)開始計(jì)數(shù)
測試完成后提示漏測 是否生成匯總數(shù)據(jù)報(bào)告
加了一個(gè)右擊查看顯示匯總報(bào)告功能
}
11.12模組項(xiàng)目
-===========
10K 電阻 為 25度
1k電阻為2.5度
1歐姆電阻 = 0.0025設(shè)施度
遇到問題:ntc 采集器 需要輸入0-5V 電壓 獲取報(bào)文
020mA、420mA、0±1A、0±5A可選
0~±75mV 、0~±100mV、 0~±150mV可選
0±5VDC、0±10VDC、0~±500VDC可選
日志優(yōu)化 在自動(dòng)列表內(nèi)右擊顯示日志
IO繼電器板 串口通訊軟件優(yōu)化
zlg底層優(yōu)化 軟件閃退問題 添加防錯(cuò)接收
利元亨:
1, 拓斯達(dá)
掃碼一個(gè)通道 掃碼一次 啟動(dòng)彈框一次 18個(gè)模組 6個(gè)單體 {實(shí)時(shí)顯示電壓 電流 溫度 畫界面 待定}
儀器底層邏輯編寫 34980A 底層代碼
手動(dòng)模組檢測邏輯計(jì)數(shù) {應(yīng)用數(shù)據(jù)結(jié)構(gòu) 字典套數(shù)組 定制 漏測、重測、生成匯總數(shù)據(jù)報(bào)告}
整車控制器 資料
1.VCU CAN通訊協(xié)議 整車CAN報(bào)文上報(bào)
測試功能及測試項(xiàng) :例如:VCU休眠喚醒報(bào)文、手剎信號(hào)報(bào)文、油門踏板信號(hào)采集報(bào)文、制動(dòng)踏板信號(hào)采集報(bào)文、空調(diào)ac開關(guān)信號(hào)采集報(bào)文、等等通訊信號(hào)采集相關(guān)報(bào)文
文檔
- UDS診斷協(xié)議相關(guān) (例如 :讀取軟硬件版本號(hào))
3 DTC信號(hào)相關(guān)文檔
電機(jī)控制器 資料
1 .CAN通訊協(xié)議報(bào)文文檔 { 測試功能及測試項(xiàng) 例如 : ECU 喚醒休眠指令報(bào)文、}
- UDS 診斷協(xié)議相關(guān)(例如 :讀取軟硬件版本號(hào))
3 DTC信號(hào)相關(guān)文檔
光束項(xiàng)目 BMS刷寫項(xiàng)目
遇到問題:ntc 采集器 需要輸入0-5V 電壓 獲取報(bào)文
020mA、420mA、0±1A、0±5A可選
0~±75mV 、0~±100mV、 0~±150mV可選
0±5VDC、0±10VDC、0~±500VDC可選
日志優(yōu)化 在自動(dòng)列表內(nèi)右擊顯示日志
IO繼電器板 串口通訊軟件優(yōu)化
zlg底層優(yōu)化 軟件閃退問題 添加防錯(cuò)接收遇到問題:ntc 采集器 需要輸入0-5V 電壓 獲取報(bào)文
020mA、420mA、0±1A、0±5A可選
0~±75mV 、0~±100mV、 0~±150mV可選
0±5VDC、0±10VDC、0~±500VDC可選
日志優(yōu)化 在自動(dòng)列表內(nèi)右擊顯示日志
IO繼電器板 串口通訊軟件優(yōu)化
zlg底層優(yōu)化 軟件閃退問題 添加防錯(cuò)接收
{
CAN/CANFD 區(qū)分
對比傳統(tǒng)CAN數(shù)據(jù)幀,CAN FD共享相同的CAN ID,包括擴(kuò)展數(shù)據(jù)幀的ID。
CAN FD用RRS bit(始終為顯性位‘0’)代替RTR。
FDF(FD format)表示CAN FD還是傳統(tǒng)CAN數(shù)據(jù)幀:
· FDF – ‘0’ --> 傳統(tǒng)CAN數(shù)據(jù)幀
· FDF – ‘1’--> CAN FD數(shù)據(jù)幀
BRS(Bit Rate Switch)表示時(shí)鐘頻率的切換:
· BRS – ‘1’-->時(shí)鐘頻率切換
ESI(Error State Indicator)表示CAN總線的錯(cuò)誤狀態(tài)。
- DLC控制域(control Field)
DLC用于表示數(shù)據(jù)幀的數(shù)據(jù)長度。并且支持傳統(tǒng)CAN 數(shù)據(jù)幀的編碼方式
CAN總線由于位填充規(guī)則對CRC的干擾,造成錯(cuò)幀漏檢率未達(dá)到設(shè)計(jì)意圖。CAN FD對CRC算法做了改變,即CRC以含填充位的位流進(jìn)行計(jì)算。在校驗(yàn)和部分為避免再有連續(xù)位超過6個(gè),就確定在第一位以及以后每4位添加一個(gè)填充位加以分割,這個(gè)填充位的值是上一位的反碼。作為格式檢查,如果填充位不是上一位的反碼,就作出錯(cuò)處理。CAN FD的CRC場擴(kuò)展到了21位。
對比傳統(tǒng)CAN的數(shù)據(jù)幀,CAN FD在控制場新添加EDL位、BRS位、ESI位,采用了新的DLC編碼方式、新的CRC算法(CRC場擴(kuò)展到21位)。
幀類型,標(biāo)準(zhǔn)幀為0;擴(kuò)展幀為1
///功能描述:根據(jù)幀類型生成CANID CANID
///編寫描述:youchao_2020.09.22
/// </summary>
/// <param name="id">ID</param>
/// <param name="eff">幀類型,標(biāo)準(zhǔn)幀為0;擴(kuò)展幀為1</param>
/// <param name="rtr">遠(yuǎn)程幀</param>
/// <param name="err">錯(cuò)誤幀</param>
====
https://blog.csdn.net/qq_41256212/article/details/95080176 相關(guān)資料
========================================================================================
其中CAN ID標(biāo)識(shí)這具體ECU的識(shí)別號(hào),長度有11位和29位之分,具體看OEM在診斷需求規(guī)范中定義。數(shù)據(jù)庫攜帶數(shù)據(jù)長度看是Classical CAN還是CAN FD。前者數(shù)據(jù)域長度是8 bytes。CAN FD數(shù)據(jù)域長度看OEM需求,范圍在8 bytes---64 bytes,當(dāng)然長度也不是任意選取,可參看如下表格:
8的字節(jié) 進(jìn)行數(shù)據(jù)解包 發(fā)送 組包 FF FC CF
00前四個(gè) 00 后四
can canfd
4種幀
單幀 多幀
首幀 - > 請求 連續(xù)幀 - > 流控幀
CAN幀最長是8位
高4 bits為0標(biāo)志是單幀,低4 bits值定義幀長度
00 00 00 00 是單幀 低4個(gè)位 00 00 00 00 是幀長度
對于單幀 數(shù)據(jù)長度大于8個(gè)字節(jié)(CANFD)第一個(gè)字節(jié)為0 第二個(gè)字節(jié)數(shù)值標(biāo)志著此單幀數(shù)據(jù)長度
一個(gè)CAN-FD幀的數(shù)據(jù)域中可能存在的字節(jié)數(shù)量為1-8, 12, 16, 20, 24, 32, 48 ,64。數(shù)據(jù)長度由幀格式中的DLC字段決定。在DLC從0到8時(shí),DL(數(shù)據(jù)長度)值也是從0到8逐漸加1增長。但是對于DLC大于8的情況,CAN將所有DL都當(dāng)作8處理,CAN-FD的DL與DLC的對照關(guān)系如下表所示。
https://zhuanlan.zhihu.com/p/265267741 //相關(guān)資料
}
======================================================================================== {
11.16
RSA 加密解密過程
加密 - > 字符串明文 -> 通過Encoding指定不哦那個(gè)的代碼頁,把字符串轉(zhuǎn)成不同代碼頁對應(yīng)的編程,表現(xiàn)未byte[] - > byte[] 字節(jié)流明文->加密操作- >密文byte[]
解密 字符串明文->使用加密時(shí)Encoding使用的代碼頁,把byte[] 形式的明文轉(zhuǎn)換成適當(dāng)字符串明文->byte[]字節(jié)流明文->pfx證書 -加密操作 -密文byte[]
/// RSA加密
/// </summary>
/// <param name="publickey"></param>
/// <param name="content"></param>
/// <returns></returns>
public static string RSAEncrypt(string publickey, string content)
{
publickey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(publickey);
cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
return Convert.ToBase64String(cipherbytes);
}
/// <summary>
/// RSA解密
/// </summary>
/// <param name="privatekey"></param>
/// <param name="content"></param>
/// <returns></returns>
public static string RSADecrypt(string privatekey, string content)
{
privatekey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent><P>/hf2dnK7rNfl3lbqghWcpFdu778hUpIEBixCDL5WiBtpkZdpSw90aERmHJYaW2RGvGRi6zSftLh00KHsPcNUMw==</P><Q>6Cn/jOLrPapDTEp1Fkq+uz++1Do0eeX7HYqi9rY29CqShzCeI7LEYOoSwYuAJ3xA/DuCdQENPSoJ9KFbO4Wsow==</Q><DP>ga1rHIJro8e/yhxjrKYo/nqc5ICQGhrpMNlPkD9n3CjZVPOISkWF7FzUHEzDANeJfkZhcZa21z24aG3rKo5Qnw==</DP><DQ>MNGsCB8rYlMsRZ2ek2pyQwO7h/sZT8y5ilO9wu08Dwnot/7UMiOEQfDWstY3w5XQQHnvC9WFyCfP4h4QBissyw==</DQ><InverseQ>EG02S7SADhH1EVT9DD0Z62Y0uY7gIYvxX/uq+IzKSCwB8M2G7Qv9xgZQaQlLpCaeKbux3Y59hHM+KpamGL19Kg==</InverseQ><D>vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=</D></RSAKeyValue>";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(privatekey);
cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false);
return Encoding.UTF8.GetString(cipherbytes);
}