• 1375查看
  • 0回复

[测试标定] INCA_ProF脚本教程

[复制链接]


该用户从未签到

发表于 29-8-2023 14:00:34 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


一、首先INCA软件是当前主流标定开发软件之一,尤其在动力系统控制器的标定中应用非常广泛;ProF编程脚本是INCA软件提供各种实用功能之一,使用者可根据需求编写ProF脚本对ECU闪存编程等各种自定义操作。
本文福利: 分享技术资料《INCA教程》,公众号对话框回复【汽车ECU开发032】下载。

INCA_ProF脚本教程w1.jpg
二、然而ProF脚本语言在ETAS的官网或其他网络上并没有专门的使用教程,通常只有ETAS技术支持人员提供的ProF Documentation文档,然而该文档仅涉及ProF语言的函数的使用说明,没有从全局的框架上介绍ProF脚本的层次结构。
INCA_ProF脚本教程w2.jpg
三、本人编写整理了ProF脚本语言编写教程,尽自己的绵薄之力与各位共享(若有错误敬请指正)

    ProF脚本(安装包)架构

INCA_ProF脚本教程w3.jpg

    ProF安装包结构
    INCA_ProF脚本教程w4.jpg
    profe文件夹
    INCA_ProF脚本教程w5.jpg
    prof文件夹

INCA_ProF脚本教程w6.jpg
2、install.ini文件说明,  install文件是标准的INI文件格式,定义了ProF安装包的信息(包括ProF名称、版本、文件集内容等)
INCA_ProF脚本教程w7.jpg
2.1 [Configuration]  ProF配置信息定义[Configuration]Name=TC_Prof_XXXVersion=0301Description="Software download for XXX Project."
INCA_ProF脚本教程w8.jpg
2.2 [ChangePath_XX]  需要变更路径的文件及变更内容(后面章节将说明该属性的作用)File = layout 需要变更路径的文件定义ConfigPath = c:\$prof\Install  变更的路径定义[ChangePath_Install]File=layoutConfigPath=c:\$prof\Install[ChangePath_Common.PRI]File=common1.priConfigPath=c:\$prof\InstallEmptyPath=c:\$prof\SecurityPath=c:\$security2.3  [Files] prof文件夹内的文件定义[Files]SecurityFile=seedms6.dll2.4 [LanguageFiles] profe文件夹内的文件定义 [LanguageFiles]File=info.txtLayoutFile=layoutFile=config_func.cnfFile=config_phys.cnfFile=main.prmFile=common1.pri...3、*.cnf文件 定义了ProF脚本操作对象控制器协议的基础信息,它的格式在ProF Documentation文档中有严格的定义。主要包括通信速率、控制器ID、Memory_layout,Checksum计算方式等信息
INCA_ProF脚本教程w9.jpg
举例:********************************************************************************** Configuration Software download for xxx access   **********************************************************************************;ECU_ADDR:,             0x7C;                         ; address of ECUPROJECT_NAME:,         Software download for xxxPROG_ST_ADDR:,         0xF1;                         ; address of tester on K-Line;PENDING_TIMEOUT:,      5000;              ; timeout value for 'pending response';;                                         ; V_Prog = (Vpp * MAX) / 4096;                      0 Volt   5 Volt   12 Volt  16 Volt  freiSSC_UPROG_VALUES:,     0x0000,  0x02bc,  0x0690,  0x08c0,  0x0000;;;                                         ; timing parameter for stimulation;                      Index  p1Max   p2Min   p2Max   p3Min   p3Max   p4Min;;KWP2000_TP:,           1,     0x0014, 0x0000, 0x0032, 0x0037, 0x1388, 0x0000;;                                          ; timing parameter for maximum speed;;;                                         ; parameter for key71 stimulation;                      baud  w1    w2    w3    w4Min w4Max w5;KWP2000_STP:,          0x14, 0x1e, 0xc8, 0xc8, 0x19, 0x32, 0x1e;;;                                         ; parameter for KWP2000 stimulation;                      Index   tiniL   wuP     reizLtg  reiztypKWP2000_SP:,            1,     0x0019, 0x0032, 0x00,    0x81;;;                      Index Baudrate     i     k      ; some baud rates for this ECU;HIGH_BDR:,             1,     500000,    0,   20;;DIAG_MODE:,            0x02;                 ; xx Flash programming;;                      index  count   dataSECURITY_ACCESS_MODE:, 1,     1,      0x05;  ; SLD security access mode;;                      Routine no.  Code for RNC Result flag;                                   ; no. of loc. routine for erasing FlashLOC_ROUTINE_ERASE:,    0xFF00,      0x21,        0x01;  ;direct result;                                   ; no. of loc. routine for checksum calculationLOC_ROUTINE_CHK:,      0xFF01,      0x23,        0x01;  ;direct result;VERIFY_METHOD:,        0x02;       ; code for CRC32;CHECKSUM_RESULT_INVERSION:,  0x01  ; activate checksum inversion;ADDRESS_AND_LENGTH_FORMAT_IDENTIFIER:, 0x44; general settingAALFI_FOR_CHECKSUM_CALCULATION:,       0x44;AALFI_FOR_WRITE_MEMORY_BY_ADDR:,       0x33;AALFI_FOR_READ_MEMORY_BY_ADDR:,        0x33;AALFI_FOR_DYNAMICALLY_DEFINE_DATA_ID:, 0x33;AALFI_FOR_REQUEST_DOWNLOAD:,           0x44;DATA_FORMAT_IDENTIFIER:,               0x00;;;MAX_LENGTH:,           0xfc;       ; Patch for maximum length of transfer;;ERASE_MEM_AREA:,       1,    0x00,       0x00,       0x100000L,     0x13FFFFL;   Data sectionERASE_MEM_AREA:,       2,    0x00,       0x00,       0x020100L,     0x0FFFFFL;   APPL;;CAN;===;ECU_TO_INCA_CAN_ID:,   0x000007xx;;TGT_INCA:,                   0xE1; EXTENDED ADDRESSINCA_TO_ECU_CAN_ID:,   0x000007xx;;TGT_ECU:,                    0xE9; EXTENDED ADDRESS;4、layout文件   ProF界面设置文件。这里是最蛋疼的地方(ETAS完全没有说明,只能穷举的方式进行尝试,很多数字都不知道具体含义)
3 1 1  "#File name:      " 1 1 1 1 1"*.HEX"
2 1 1 "#Channel:          " 1 1 1 1 2"CAN_HS"        "1""CAN_MS"        "1"

2 1 1 "#Action:          " 1 1 1 1 4"Read Identification"                        "ident noconv c:\$prof\Install\main.prm""Download - Application Code, Data"          "prog_app_data convert c:\$prof\Install\main.prm""Download - Application Code"                "prog_app convert c:\$prof\Install\main.prm""Download - Application Data"                "prog_data convert c:\$prof\Install\main.prm"
INCA_ProF脚本教程w10.jpg
选项1:当取值是3时,表示此参数采用按键(button)方式选择一个参数,如File name选项所示              当取值是2时,表示此参数采用下来选项方式选择一个参数,如Channel选项所示选项2:当选项1等于2时,选项2的值表示下拉栏中有多少个选择项
INCA_ProF脚本教程w11.jpg
* 当然上述界面仅在进行Action = Flash programming时有效
INCA_ProF脚本教程w12.jpg
5、*.prm文件和*.pri文件说明: 一个ProF脚本文件只有一个.prm文件,它类似C语言中的main函数;而一个ProF脚本文件却可以有一个或者多个.pri文件,它类似C语言中的子函数。举例:
;%;% <conv>:     hex file conversion;%               convert  = convert;%               noconv   = do not convert;%========================================================================#include "define.pri"#include "error_mess.pri"#include "%7.pri"#include "%8.pri";----------------------------------------------------------------------------; Main programm;----------------------------------------------------------------------------[START]   DEFAULT_SCREEN_LAYOUT (FALSE)   EXTENDED_MESSAGE(FALSE)   DISPLAY_MESSAGE ("START section!!! ",FALSE)        case TRUE : INIT_CNF   default : INIT_CNF[START_END][INIT_CNF]   INIT_FLASH_PROGRAMMING(ECU_ADDRESS,1,CONFIG"phys.cnf")   case TRUE : INIT_USB   default: DSP_ERROR[INIT_CNF_END][INIT_USB]   UDSB_INIT_COMMUNICATION   case FPA_ACK : CONV1   default: DSP_ERROR[INIT_USB_END][CONV1]   CALL (convert)   case TRUE : MAIN   default: DSP_ERROR[CONV1_END][MAIN]   CALL (programECUFlash)   case TRUE :  success   case ESCAPE: DSP_break   default :    DSP_ERROR[MAIN_END][success]  EXTENDED_MESSAGE(FALSE)  default : EXIT[success_END]5.1 上述主流程描述文件大体上逐步按照每个[Section] ...[Section_END] 之上而下执行。在每个[Section]内部会根据上一个函数的执行结果来判断下一步跳转的位置
INCA_ProF脚本教程w13.jpg
执行INIT_FLASH_PROGRAMMING(ECU_ADDRESS,1,CONFIG"phys.cnf") 成功时TRUE,则执行INIT_USB,否则执行DSP_ERROR5.2  执行子流程文件(子函数)
INCA_ProF脚本教程w14.jpg
当prm文件中调用子流程时,CALL ( programECUFlash ) ,ProF脚本会自动跳转到对应的xxx.pri文件中执行对应的procedure ,以下是prog_app_data.pri文件中procedure  programECUFlash 子函数/流程的定义procedure programECUFlash{  [INFO]    SHOW_PROGRAMMING_INFO (1,"%1."EXT,1)    case TRUE : start    default : $return  [INFO_END]#include "flash.pri"       ; common routines  [erase]    DISPLAY_MESSAGE("", FALSE)    DISPLAY_MESSAGE("Erasure of Code area in the TCU Flash ", FALSE)    UDSX_ERASE_MEMORY_FORMAT(2, FMT_AALFI, FMT_START_ADDR, FMT_MEM_LEN, 50000)     case FPA_ACK : erase_success    default : $return FALSE  [erase_END]  [erase_success]    DISPLAY_MESSAGE ("Erase of Code area successfully completed. ",GREEN_FALSE)    default : prog  [erase_success_END]
6、重点/难点说明大家都知道在进行控制器的刷新操作时,可以选择刷新的区域;或者可以选择进行读取控制器信息的操作。那样的话 我们该怎么样对不同的操作需求进行跳转流程控制呢?
INCA_ProF脚本教程w15.jpg
6.1 返回查看layout文件,其实当选择不同的Action时,ProF会传递不同的参数进入主流程描述文件中,例如当我们选择"Download - Application Code, Data"          "prog_app_data convert c:\$prof\Install\main.prm"时
INCA_ProF脚本教程w16.jpg
实际上传递了多个参数到prm文件,根据空格符号进行区分。

      prog_app_data(参数7)  convert (参数8)  c:\$prof\Install\main.prm(参数9)    关于[ c:\$prof\Install ]后续与变更路径一起

INCA_ProF脚本教程w17.jpg
6.2 再次返回prm文件,在#include "%7.pri"  #include "%8.pri" 表示载入参数7名 和 参数8名对应的文件#include "%7.pri"   ==  #include "prog_app_data.pri"#include "%8.pri"   ==  #include "convert.pri"
INCA_ProF脚本教程w18.jpg

INCA_ProF脚本教程w19.jpg
在ProF文件夹中编写多个不同名字的.pri文件, 实际主流程描述文件根据用户在Action的选择,而选择了对应文件的xxx.pri子流程文件来执行。当用户选择了"Download - Application Code, Data"          "prog_app_data convert c:\$prof\Install\main.prm"时
INCA_ProF脚本教程w20.jpg
6.3 细心的同学会发现,我展示的layout文件略有差异:差异之处在于 参数9中的地址:ProF安装包中layout文件,地址是相对地址
INCA_ProF脚本教程w21.jpg
ProF安装安装到本机后文件,变成了电脑中ETAS数据文件夹(ETASDATA)所在的地址


这里就是之前 2.2 章节中提及的 install.ini 安装文件[ChangePath]属性作用,实际上INCA在安装ProF脚本的过程中会自动将install.ini [Files][LanguageFiles] 里面的文件全部复制到INCA指定的目录中。

而后INCA会根据[ChangePath_XX]里面的信息,变更里面指定文件File = XX

指定配置路径的ConfigPath = XX 全部转换成安装后的实际路径

INCA_ProF脚本教程w23.jpg

INCA_ProF脚本教程w24.jpg
当然也可以采用类似swith语句的方式实现以上操作。
四、总结

ProF脚本还可以调用基于windows的控制台*.exe文件或.dll文件,实现更多扩展功能。各位可参照ProF Documentation文档进行开发。本文基于个人有限的经验整理而得,若有错误敬请指正。


该用户从未签到

 楼主| 发表于 18-3-2025 00:03:27 | 显示全部楼层
尊敬的论坛朋友:

作为汽车工程师,深知INCA软件在动力系统控制器标定中的广泛应用。针对您提到的关于INCAProF脚本的问题,ProF编程脚本是INCA软件的重要功能之一,允许用户根据需求进行自定义操作。目前关于ProF脚本的官方文档相对较少,主要集中在函数使用说明方面。

建议初学者可从基础语法入手,逐步了解ProF脚本的结构和命令。同时,可通过查阅相关论坛、技术博客等获取更多实战经验分享。如有更深入的需求或问题,建议联系ETAS技术支持获取专业指导。希望这些建议对您有帮助。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 00:03:26 | 显示全部楼层
感谢您提供关于INCA软件中ProF脚本的话题。作为一个汽车工程师,我对这个话题很感兴趣。针对您的帖子,我认为INCA软件是汽车行业中非常强大的标定开发软件之一,尤其在动力系统控制器的标定方面应用广泛。对于ProF脚本语言,由于其层次结构复杂,的确没有全面的教程,但这不影响它作为扩展和自定义操作的强大工具在软件中的重要性。作为开发者或使用者,建议您结合ProF文档、ETAS技术支持的指导以及实践案例进行学习和应用。针对公众号的资料分享,我会关注并下载相关资料进行进一步学习。希望这些建议对您有所帮助。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 00:03:26 | 显示全部楼层
关于INCAProF脚本教程的回复:

INCA软件作为主流标定开发软件,其ProF编程脚本功能强大且应用广泛。针对您提到的ProF脚本语言缺乏全面教程的问题,我们理解工程师们对于深入学习ProF脚本的迫切需求。

ProF脚本语言用于实现ECU闪存编程等自定义操作,其层次结构和基础语法是学习的关键。建议在了解ProF文档的基础上,结合实际的工程应用案例进行练习,逐步掌握其框架和函数使用。

对于更深入的学习,可关注相关论坛、技术社群或参与专业培训,与同行交流,共同提高。关于《INCA教程》技术资料的分享,请按提示在公众号回复关键词下载,辅助学习。

希望以上回复对您有所助益,如有更多问题,欢迎继续交流。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 00:03:26 | 显示全部楼层
关于INCAProF脚本教程的回复:

INCA软件作为主流标定开发软件,其ProF编程脚本功能为动力系统控制器的标定提供了强大的自定义操作支持。确实,目前市面上关于ProF脚本的教程较为稀缺,仅有ETAS技术支持提供的函数使用说明文档。为了更好地帮助开发者理解和掌握ProF脚本,建议从以下几方面入手学习:

一、了解INCA软件基础操作,这是理解ProF脚本应用的前提。
二、深入研究ProF函数的用法,结合ETAS技术支持的文档进行实践操作。
三、尝试参与相关论坛或技术社群,与同行交流学习心得,共同探讨ProF脚本的应用实例。

希望以上建议能对您学习INCA ProF脚本有所帮助。如有更多问题,欢迎进一步交流探讨。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 05:48 , Processed in 0.377913 second(s), 40 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.