一个简单而完整的UDS例子
- 格式:doc
- 大小:3.50 MB
- 文档页数:12
汽车UDS协议简称样本汽车S UDS协议简称本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
UDS的的ECU诊断:的老的VAG1551和VAG1552只支持ISO9141分和少部分ISO14230车辆;VAS5051和和VAS5052持多支持ISO15031((EOBD和)和ISO-15765((can-bus)不支持UDS,所以已经在。
开始淘汰。
UDS:全球统一车载电脑(ECU)自诊断服务务(ECU制造标准)UDS 协议,也就是ISO14229协议,既能够于用于CAN总线,也能够用于K线。
现货大众奥迪斯柯达UDS协议5053:全中文显示界面,功能更强大!!最新版大众VCDS检测软件,支持最新款大众车系。
*完全支持使用最新"Service22"识别技术的控制模块单元*支持使用最新"UDS/ODX/ASAM"诊断协议的控制模块单元.控制模块识别(包括高级识别),编码,安全访问/允许进入,以及故障码*全新的进程日志功能通支持普通OBD2功能模式10*支持同时使用两个发动机控制模块的车辆,比如RS4以及W12发动机.您能够能过地址31,同时进入两个发动机控制模块,执行诸如节气门匹配(TBA)之之类的操作*匹配屏幕功能增强,支持一些匹配值非常长的控制模块*高级标识功能增强,数据处理方式更灵活*全新的内部网关编码辅助,特别用于基于B8平台的奥迪车辆*标签文件修订增加升级*新的服务提醒(检修保养服务)功能*支持引导性准备就绪程序*光纤总线诊断*蓄电池编码辅助*保存和获取高级测量值块配置本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
*与最新车型兼容性大增*全新的USB安装辅助完全能够诊断最新型大众车(包括),功能强大.一汽大众,上海大众,德国大众所有车型.主要功能:。
汽车UDS诊断协议 0x38服务概述汽车UDS(Unified DiagnosticServices)是一种用于诊断汽车电子控制单元(ECU)的通信协议。
UD S协议定义了一套通用的诊断通信机制,使得诊断工具可以与车辆的控制单元进行通信,并提供诊断、编程和配置等功能。
0x38服务是UDS协议中的一个标准服务,它用于读取和清除故障码。
0x38服务的功能0x38服务定义了功能:1.读取故障码:诊断工具可以通过0x38服务读取控制单元中的故障码。
故障码是控制单元中存储的诊断信息,用于指示车辆系统中出现的故障。
读取故障码可以帮助技师快速定位和修复故障。
2.清除故障码:诊断工具可以通过0x38服务清除控制单元中的故障码。
在修复故障后,清除故障码可以将控制单元中的故障信息进行清零,以便验证修复效果。
0x38服务的数据格式0x38服务的数据格式如下:•Request:0x38–数据长度:1字节(表示读取或清除故障码)–读取故障码数据格式:无–清除故障码数据格式:无•Response:0x78–数据长度:可变(取决于读取到的故障码数量)–故障码列表:每个故障码的格式如下:•故障码ID:2字节•故障码状态:1字节0x38服务的操作流程0x38服务的操作流程如下:1.诊断工具发送0x38请求。
2.控制单元收到请求后,根据请求的功能进行相应操作。
–如果是读取故障码请求,控制单元将读取故障码列表,并返回给诊断工具。
–如果是清除故障码请求,控制单元将清除故障码,并返回确认响应。
3.诊断工具接收到控制单元的响应后,进行相应处理。
0x38服务的应用场景0x38服务通常应用于场景:1.故障诊断:诊断工具可以通过0x38服务读取控制单元中的故障码,以便定位和解决车辆故障。
2.故障修复确认:在修复故障后,诊断工具可以通过0x38服务清除控制单元中的故障码,并验证修复效果。
3.日常维护:在日常维护过程中,可以使用0x38服务进行故障码读取和清除,以确保车辆的正常运行。
目录前言 (2)UDS 的7种服务及肯定响应和否定响应的形式 (3)$10诊断会话 (5)$3E待机握手 (6)$27安全访问 (7)$22读数据 (8)$2E写数据 (8)$19 读DTC (8)$14清除DTC (10)统一诊断服务(Unified diagnostic services ,UDS) (一) (10)Diagnostic request的格式: (10)统一诊断服务(Unified diagnostic services ,UDS) (二) (12)Diagnostic Session Control (0x10) (12)诊断response的格式:Diagnostic Session Control (13)ECU Reset 诊断request的格式 (13)Security Access (0x27) (13)统一诊断服务(Unified diagnostic services ,UDS) (三) (14)Tester Present (0x3E) (15)Control DTC Setting (0x85) (16)Response On Event (0x86) (16)Link Control (0x87) (16)统一诊断服务(Unified diagnostic services ,UDS) (四) (16)Read Data By Identifier (0x22) (16)0x23服务的请求格式0x23 (17)统一诊断服务(Unified diagnostic services ,UDS) (五) (17)0x14:Clear Diagnostic Information (17)0x19:Read DTC Information (18)统一诊断服务(Unified diagnostic services ,UDS) (六) (19)Input Output Control By Identifier (0x2F) (19)Routine Control (0x31) (20)统一诊断服务(Unified diagnostic services ,UDS) (七) (21)Request Download (0x34): (21)Transfer Data(0x36): (22)Request Transfer Exit(0x37): (22)基于CAN总线实现的UDS诊断(DoCAN) (23)前言UDS协议即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准,比如读取故障码应该向ECU发什么指令,读数据流又是发什么指令。
uds协议基本原理全文共四篇示例,供读者参考第一篇示例:UDS(Unified Diagnostic Services)协议是一种用于车辆诊断的通信协议,它在汽车电子控制单元(ECU)之间进行通信,以便对车辆进行故障诊断和维护。
UDS协议具有高效、灵活和可靠的特点,被广泛应用于现代汽车的诊断系统中。
本文将介绍UDS协议的基本原理,并探讨其在汽车诊断中的应用。
UDS协议采用了一种客户端-服务器模型,其中诊断工具(客户端)向汽车电子控制单元(服务器)发送指令并接收响应,以进行故障诊断。
UDS协议的数据传输通过标准的ISO-TP(ISO Transport Protocol)进行,确保了数据的安全和可靠传输。
UDS协议的基本原理包括服务请求和服务响应两个部分。
服务请求包括诊断会话建立、控制器编程、故障码读取、数据传输等功能,而服务响应则包括对服务请求的回复,以及错误码的报告。
UDS协议定义了一系列标准服务和扩展服务,以满足不同汽车制造商的需求。
标准服务包括读取电子控制单元的标识符、读取故障码、清除故障码等功能,而扩展服务则可以根据具体应用进行定制,提高诊断的效率和准确性。
UDS协议还定义了一系列诊断报文格式,包括物理层、功能层和应用层三个部分。
物理层定义了数据传输的物理接口和通信速率,功能层定义了服务请求和服务响应的格式,而应用层则定义了具体的诊断功能和参数。
UDS协议的应用涉及到诊断工具、汽车电子控制单元和通信网络三个主要组成部分。
诊断工具可以是汽车故障诊断仪、诊断软件等,汽车电子控制单元则包括发动机控制单元、制动系统控制单元等,通信网络则可以是CAN总线、LIN总线等。
UDS协议是一种高效、灵活和可靠的汽车诊断通信协议,为汽车故障诊断和维护提供了强大的支持。
随着汽车电子技术的不断发展,UDS协议将在未来得到更广泛的应用和推广。
第二篇示例:UDS(Unified Diagnostic Services)协议是一种用于汽车诊断的通信协议,它定义了一系列基本的消息格式和交互规则,用于在汽车电子控制单元(ECU)和诊断设备之间进行通信。
手把手教你怎么用UDS解自己的方程所谓UDS,就是用户自定义标量方程,这类方程大致表达式如下:依次为时间项,对流项,扩散项,源项。
当然其中有可能有些不同,不过只要是对流扩散型的方程,都可以用UDS来解(前面有人讨论只包含对流而没有扩散的方程用UDS来解的例子,不过效果据说不好:),跳过)。
与标准对流扩散方程多出来的部分,都可以写到SOURCE(源项)里面。
以下解一个如下的POSSION方程为例,来介绍一下整个UDS求解的流程:1:准备工作将方程与UDS标准方程对比,发现没有时间项,对流项,同时多出一项,我们将方程化为标准形式,可以看出该项可作为源项来处理。
即:该源项用UDF加入到求解方程中,调用的宏为DEFINE_SOURCE,具体参见帮助的相关章节,这里该UDF可写为:#include "udf.h"DEFINE_SOURCE(uds_source,c,t,dS,eqn){real x[ND_ND];real source;C_CENTROID(x,c,t);source=-sin(C_UDSI(c,t,0));dS[eqn]=-cos(C_UDSI(c,t,0));return source;}其中的dS[eqn]是source的剃度,用来加快收敛。
2:设置UDS准备工作完成,现在启动FLUENT,先读入CAS文件,编译连接好该UDF文件。
然后,如下图所示操作,点开,出现将UDS项由0加到1,如下图:底下FLUX FUNCTION是对应对流项设置的,由于其中我们的POSSION方程没有对流项,所以选择NONE,点击OK,UDS加入成功,出现如下图的提示,提醒UDS加入了,是否需要修改UDS扩散系数,点击OK进入材料面版,可以看见底下的UDS属性,点击EDIT,由于PISSION方程前面没有系数,所以定义扩散系数为1。
3:边界条件设置进入边界条件面版,首先是加入前面设置的源项,如下图:然后是WALL边界等的UDS边界条件设置,这里有标量值以及流通量两个选项,根据需要选择。
目录前言 (2)UDS 的7种服务及肯定响应和否定响应的形式 (3)$10诊断会话 (5)$3E待机握手 (6)$27安全访问 (7)$22读数据 (8)$2E写数据 (8)$19 读DTC (9)$14清除DTC (10)统一诊断服务(Unified diagnostic services ,UDS)(一) (11)Diagnostic request的格式: (11)统一诊断服务(Unified diagnostic services ,UDS) (二) (12)Diagnostic Session Control (0x10) (13)诊断response的格式:Diagnostic Session Control (13)ECU Reset 诊断request的格式 (13)Security Access (0x27) (14)统一诊断服务(Unified diagnostic services , UDS) (三) (14)Tester Present (0x3E) (15)Control DTC Setting (0x85) (16)Response On Event (0x86) (16)Link Control (0x87) (16)统一诊断服务(Unified diagnostic services ,UDS) (四) (17)Read Data By Identifier (0x22) (17)0x23服务的请求格式0x23 (17)统一诊断服务(Unified diagnostic services ,UDS) (五) (18)0x14:Clear Diagnostic Information (18)0x19:Read DTC Information (18)统一诊断服务(Unified diagnostic services ,UDS)(六) (19)Input Output Control By Identifier (0x2F) (19)Routine Control (0x31) (20)统一诊断服务(Unified diagnostic services ,UDS)(七) (21)Request Download (0x34): (22)Transfer Data(0x36): (22)Request Transfer Exit(0x37): (23)基于CAN总线实现的UDS诊断(DoCAN) (23)前言UDS协议即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准,比如读取故障码应该向ECU发什么指令,读数据流又是发什么指令.OBD是关注车辆售后实时排放的理念形成的行业规范,而UDS是诊断服务的统一化规范,只是应用层的规范。
前言 (2)UDS 的7种服务及肯定响应和否定响应的形式 (3)$10诊断会话 (5)$3E待机握手 (6)$27安全访问 (7)$22读数据 (8)$2E写数据 (8)$19 读DTC (9)$14清除DTC (10)统一诊断服务(Unified diagnostic services ,UDS) (一) (11)Diagnostic request的格式: (11)统一诊断服务(Unified diagnostic services ,UDS) (二) (12)Diagnostic Session Control (0x10) (13)诊断response的格式:Diagnostic Session Control (13)ECU Reset 诊断request的格式 (14)Security Access (0x27) (14)统一诊断服务(Unified diagnostic services ,UDS) (三) (14)Tester Present (0x3E) (16)Control DTC Setting (0x85) (16)Response On Event (0x86) (16)Link Control (0x87) (16)统一诊断服务(Unified diagnostic services ,UDS) (四) (17)Read Data By Identifier (0x22) (17)0x23服务的请求格式0x23 (17)统一诊断服务(Unified diagnostic services ,UDS) (五) (18)0x14:Clear Diagnostic Information (18)0x19:Read DTC Information (18)统一诊断服务(Unified diagnostic services ,UDS) (六) (19)Input Output Control By Identifier (0x2F) (19)Routine Control (0x31) (21)统一诊断服务(Unified diagnostic services ,UDS) (七) (21)Request Download (0x34): (22)Transfer Data(0x36): (22)Request Transfer Exit(0x37): (23)基于CAN总线实现的UDS诊断(DoCAN) (23)前言UDS协议即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准,比如读取故障码应该向ECU发什么指令,读数据流又是发什么指令。
outsystems开发案例OutSystems是一种低代码开发平台,可以快速构建企业级应用程序。
下面列举了10个使用OutSystems开发的案例。
1. 电商平台:一家电商公司使用OutSystems开发了一个综合的电商平台,包括商品展示、购物车、订单管理、支付等功能。
通过OutSystems的低代码开发,他们能够快速迭代和部署新功能,提高了用户体验和业务效率。
2. 健康管理系统:一家医疗机构使用OutSystems开发了一个健康管理系统,用于跟踪患者的健康状况和治疗进展。
该系统集成了医疗设备和传感器,能够自动收集患者的健康数据,并提供实时的监测和预警功能。
3. 物流管理系统:一家物流公司使用OutSystems开发了一个物流管理系统,用于跟踪货物的运输和配送。
该系统集成了GPS定位和路线规划等功能,能够实时监控货物的位置和运输进度,提高了物流效率和客户满意度。
4. 人力资源管理系统:一家企业使用OutSystems开发了一个人力资源管理系统,用于招聘、培训、绩效评估等人力资源管理流程。
该系统集成了自动化工作流程和数据分析功能,提高了人力资源管理的效率和准确性。
5. 客户关系管理系统:一家销售公司使用OutSystems开发了一个客户关系管理系统,用于管理客户信息、销售机会和客户反馈。
该系统集成了邮件营销和客户服务等功能,帮助销售团队更好地与客户互动和合作。
6. 教育管理系统:一所学校使用OutSystems开发了一个教育管理系统,用于学生管理、课程安排和考试评估。
该系统集成了学生信息管理和在线学习平台等功能,提供了全面的教育管理解决方案。
7. 公共服务平台:一家政府部门使用OutSystems开发了一个公共服务平台,用于提供政府服务和信息查询。
该平台集成了政府部门的各类服务和数据,方便市民快速办理业务和获取信息。
8. 金融服务应用:一家银行使用OutSystems开发了一个金融服务应用,用于提供个人和企业的金融服务。
UDS诊断服务——数据传输单元本文为UDS诊断服务的第二篇,主要介绍UDS诊断服务中数据传输单元。
该部分所涉及的诊断服务如图1所示。
图1 数据传输单元老套路,针对经常使用的UDS诊断服务进行介绍。
ReadDataByIdentifier服务 (0x22)该服务用于读取一个或者多个被标识的数据记录值,通常是标识是DID(DataIdentifier),该服务没有子服务。
该服务的数据格式含义如图2所示,其中…表示可以为无效数据(AA),也可以是另外的多个DID,格式跟前面的一样。
图2 0x22服务数据格式0x22服务的消息请求的格式如图3所示。
图3 0x22服务数据示例WriteDataByIdentifier服务(0x2E)该服务用于写入一个被标识的数据记录值,通常是标识是DID(DataIdentifier)。
作用刚好与0x22相反,该服务没有子服务。
该服务的数据格式含义如图4所示。
图4 0x2E服务数据格式0x2E服务的消息请求的格式如图5所示。
图5 0x2E服务数据示例ReadMemoryByAddress服务(0x23)该服务与0x22相似,用于读取ECU内部的数据,不同的是0x23服务用于读取指定地址的存储的数据。
另外0x23服务也没有子服务。
该服务的数据格式含义如图6所示。
图6 0x23服务数据格式0x23服务的消息请求的格式如图7所示。
图7 0x23服务数据示例WriteMemoryByAddress服务(0x3D)该服务用于对固定的地址写数据,与0x23刚好相反。
并且该服务也没有子服务。
该服务的数据格式含义如图8所示。
图8 0x3D服务数据格式0x3D服务的消息请求的格式如图9所示。
图9 0x3D服务数据示例。
一个简单而完整的UDS 例子 gearboy标准方程形式:φφφψρφS x x t j j =⎪⎪⎭⎫ ⎝⎛∂∂Γ-∂∂+∂∂ (默认i u ρψ=) Fluent 中各项的定义如下: 名称表达式各项在UDS 中需要定义的量在UDS 中对应的宏非稳态项t∂∂ρφ离散形式的非稳态项(详细见UDF 帮助)DEFINE_UDS_UNSTEADY 对流项φψ jx ∂∂ 通量 ψDEFINE_UDS_FLUX扩散项22jx ∂∂Γ-φ扩散率 ΓDEFINE_DIFFUSIVITY假定需要求解方程为2=⎪⎪⎭⎫ ⎝⎛∂∂-∂∂+∂∂j jx x t φφφ 当∞→t ,即如果计算达到稳定时,2=⎪⎪⎭⎫⎝⎛∂∂-∂∂j jx x φφ,此方程解析解为c y x ++=φ,其中c 为常数(假定其为0),可由边界条件确定。
因此,当解稳定时,y x +→φ,等值线为一系列45度的斜直线。
将此方程与标准方程对比发现: 名称表达式各项在UDS 中需要定义的量需要在UDS 中定义的宏 非稳态项t ∂∂φ 离散形式的非稳态项1-∆∆+∆∆-n n tV t V φφ DEFINE_UDS_UNSTEADY对流项φjx ∂∂ 通量A I ⋅=ψ(单位向量{}1,1,1=I) DEFINE_UDS_FLUX扩散项 22jx ∂∂-φ扩散率 1=ΓDEFINE_DIFFUSIVITY 源项22DEFINE_SOURCE 边界条件0=cb b b x y +=φ (b 代表边界处)DEFINE_PROFILE*注:源项和扩散率为常数,可以不用定义宏,但为了说明问题,仍采用宏来定义。
假定如图所示的计算域,其中正方形边长为10,原点在正方形中心,四边均为wall。
将如下源码,写入一个UDF文件,例如MyFistUDF.c,与cas文件放在同一目录。
#include "udf.h"DEFINE_UDS_UNSTEADY(MyUnsteady,c,t,i,apu,su){real physical_dt, vol, phi_old;physical_dt = RP_Get_Real("physical-time-step");vol = C_VOLUME(c,t);*apu = -vol / physical_dt; /*implicit part*/phi_old = C_STORAGE_R(c,t,SV_UDSI_M1(i));*su = vol*phi_old/physical_dt; /*explicit part*/}DEFINE_UDS_FLUX(MyFlux,f,t,i){real NV_VEC(unit_vec), NV_VEC(A); //声明矢量变量F_AREA(A, f, t);NV_DS(unit_vec, =, 1, 1, 1, *, 1); //单位矢量赋值return NV_DOT(unit_vec, A); //矢量点积}DEFINE_DIFFUSIVITY(MyDiff,c,t,i){return 1.0;}DEFINE_SOURCE(MySource,c,t,dS,eqn){dS[eqn]=0;return 2.0;}DEFINE_PROFILE(MyProfile,thread,index) {real x[ND_ND]; /* this will hold the position vector */ real xx,yy; face_t f;begin_f_loop(f,thread) {F_CENTROID(x,f,thread); xx = x[0]; yy=x[1];F_PROFILE(f,thread,index) = (xx+yy); //b b b x y +=φ }end_f_loop(f,thread) }编译通过并载入启动非稳态求解器,并在Define-User-Defined-Scalars 面板中添加一个UDS ,选择自定义的通量和非稳态项在材料面板中,选择自定义扩散率在boundary conditions的Fluid面板中,选择自定义源项在boundary conditions的壁面边界条件面板中,选择自定义边界条件在solve-controls-solution中禁止Flow计算,只计算自定义标量迭代过程中的残差曲线,可以看出正逐渐趋向稳定采用后处理等值线面板,观察自定义标量的等值线未完全稳定时的等值线最终稳定时的等值线,可以看出是一系列45度的斜直线,与解析解相同。
UDS诊断帧UDS诊断服务通常是通过CAN总线实现。
对于CAN诊断帧有两种不同的分类方式,按照寻址方式可以分为物理寻址、功能寻址,按照帧类别可以分为单帧、首帧、流控帧、连续帧。
寻址方式在总线上往往连着众多ECU设备(如图1所示),作为诊断设备既可以单独与某一ECU进行通信,也可以同时与所有总线上的ECU设备通信。
图1 总线示意图1. 物理寻址物理寻址是指总线上始终只有一个ECU响应诊断设备发出的诊断命令,实现点对点通信,例如图1中总线上仅ECU A响应诊断设备的诊断命令。
2. 功能寻址功能寻址是指总线上的所有ECU对可以同时响应诊断设备发出的诊断命令,实现一对多的通信方式,例如图1中ECU A、ECU B、ECU C 、ECU D可以同时响应诊断设备的诊断命令。
帧类别对于帧的类型,通过需要发送的数据长度来确定。
在正常寻址模式下,当数据长度小于等于7byte,则用单帧的形式发送,当数据长度大于7byte,数据需要分多帧才能发送完成,则需要使用到首帧、流控帧、连续帧,不同帧的机制如图2所示。
图2 不同帧的机制首帧是指发送的第一帧,目的是把前7byte数据发送给接收方,并告知接收方数据没有发完,然后接收方会回一帧流控帧,告知发送方是否可以接着发送,并且告知接收方一次最多能接收的数据量,以及发送方接下来发送的数据帧(连续帧)之间的时间间隔要求。
对于不同的帧,通过CAN消息的数据场中PCI(Protocol control information)来区分,图3、图4详细说明了不同帧的PCI的定义。
图3 不同帧的数据场定义以下是对PCI的详细解释。
图4 PCI 定义其中:DL:有效数据的长度,不包括PCIbyte;FS:表示是发送方否可以继续传输消息,0表示可以继续发送,1表示等待发送,2表示数据溢出,一次发送的数据大于接收方所能接收的量;BS:接收方一次能接收的数据最大量;STmin:表示两个连续帧之间的最小时间间隔,参照图1中的定义;SN:连续帧的序列号;。
ubus uci例子全文共四篇示例,供读者参考第一篇示例:ubus uci例子是一种非常实用的配置工具,通过它可以方便地修改和查看OpenWrt系统中的配置文件。
在网络设置、无线网络设置、防火墙设置等方面都可以通过ubus uci例子进行配置,让用户在创建并管理配置文件时更加灵活和简单。
在OpenWrt系统中,配置文件存储在/etc/config目录下,其中每个配置文件都对应着一个应用程序或服务。
而ubus uci例子则是一个用来访问和修改这些配置文件的工具,通过ubus uci例子可以方便地读写这些配置文件,实现对系统的定制和配置。
举例来说,我们可以通过ubus uci例子来配置网络设置。
我们想要修改LAN口的IP地址和子网掩码,就可以通过下面的命令来实现:uci set n.ipaddr='192.168.1.1'uci set mask='255.255.255.0'uci commit network通过上述命令,我们就可以修改LAN口的IP地址和子网掩码,然后通过uci commit network命令将更改保存到配置文件中。
这样,我们就可以通过ubus uci例子来轻松地修改网络设置,而无需手动编辑配置文件。
uci set wireless.@wifi-iface[0].ssid='MyWifi'uci set wireless.@wifi-iface[0].key='mypassword'uci commit wirelessuci add firewall ruleuci set firewall.@rule[-1].name='Allow-SSH'uci set firewall.@rule[-1].src='wan'uci set firewall.@rule[-1].proto='tcp'uci set firewall.@rule[-1].dest_port='22'uci set firewall.@rule[-1].target='ACCEPT'uci commit firewall第二篇示例:UBus是OpenWrt中一个非常重要的组件,用于实现用户空间程序之间的通信。
uds31服务的实例
以下是几个UDS31服务的实例:
1.文件共享服务:用户可以通过UDS31协议访问共享文件夹,将本地
文件上传到服务器或者下载服务器上的文件,并进行文件操作,例如删除、复制等。
2.远程桌面服务:用户可以通过UDS31协议远程连接服务器,实现远
程控制服务器的操作,例如创建、删除、修改文件等。
3. 虚拟化服务:UDS31协议可以与虚拟化平台集成,提供高效的虚
拟化解决方案,支持多种虚拟化技术,例如VMware、Hyper-V、Xen等。
4.数据备份与恢复服务:UDS31协议可以将数据备份到远程服务器上,并支持数据恢复和同步功能,使得用户数据更加安全可靠。
UDS—会话模式管控会话模式管控是汽车电子诊断范畴很重要的两个状态机之一(另一个是安全访问),不同的会话模式是用来区分诊断服务执行权限。
一位非常尊敬的业内前辈曾举如下例子来形容这个状态机:不同的场景,喝对应的酒!1) 公司商务场合下,对应的酒是红酒;2) 长辈酒桌上,对应的酒是白酒;3) 哥们撸串场合,对应的酒是啤酒;不同酒的种类可同比诊断范畴的不同服务,不同的场合可类比不同的会话模式。
就像什么场合饮什么样的酒,不同的会话模式支持执行不同的诊断服务(所谓的服务执行权限)。
在UDS协议中对Session服务格式有明确的定义:请求:响应:其中对应请求中SubFunction(子服务)类型,UDS协议也有详细定义:像常用10 01/02/03会话模式,在协议中已有详细定义。
同样也预留了位,给主机厂或者供应商自定义的会话模式。
协议以工程框架的形式定义服务格式(请求以及响应),方便OEM依据协议框架定义企业级的诊断需求规范。
对于会话模式状态机,在协议中同有定义状态示意图:从示意图可获知默认会话模式与非默认会话模式之间可进行切换,状态机制有以下注意点:1. 控制器一上电是处于默认会话模式,当需要控制器进入其他非默认会话模式时,Tester端发送10+SubFunction(对应的非默认会话模式),使控制器进入相应的会话模式,当然相反从非默认会话模式进入默认会话模式,发送10+01即可;2. 当控制器处于非默认会话模式,相应的执行服务权限较高,为保证控制器安全,在协议中有定义保持当前会话默认最长时间(S3):控制器处于非默认会话模式,在S3时间内,若没有收到任何诊断请求,控制器会强制从非默认会话模式跳转到默认会话模式。
这个时候UDS协议中又定义了一个特有趣的Service 3E,可周期性发送,周期性刷新S3计时器,让控制器保持在当前会话模式;3. 会话模式之间的切换会对控制器的状态有影响,控制器状态有重初始化(re-initialize)。
一个简单而完整的UDS例子
假定如图所示的计算域,其中正方形边长为10,原点在正方形中心,四边均为wall。
将如下源码,写入一个UDF文件,例如MyFistUDF.c,与cas文件放在同一目录。
#include "udf.h"
DEFINE_UDS_UNSTEADY(MyUnsteady,c,t,i,a pu,su)
{
real physical_dt, vol, phi_old;
physical_dt = RP_Get_Real("physical-time-step");
vol = C_VOLUME(c,t);
*apu = -vol / physical_dt; /*implicit part*/
phi_old = C_STORAGE_R(c,t,SV_UDSI_M1(i));
*su = vol*phi_old/physical_dt; /*explicit part*/
}
DEFINE_UDS_FLUX(MyFlux,f,t,i)
{
real NV_VEC(unit_vec), NV_VEC(A); //声明矢量变量
F_AREA(A, f, t);
NV_DS(unit_vec, =, 1, 1, 1, *, 1); //单位矢量赋值
return NV_DOT(unit_vec, A); //矢量点积
}
DEFINE_DIFFUSIVITY(MyDiff,c,t,i)
{
return 1.0;
}
DEFINE_SOURCE(MySource,c,t,dS,eqn)
{
dS[eqn]=0;
return 2.0;
}
DEFINE_PROFILE(MyProfile,thread,index) {
real x[ND_ND]; /* this will hold the position vector */
real xx,yy;
face_t f;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
xx = x[0];
yy=x[1];
F_PROFILE(f,thread,index)
= (xx+yy); //b b b x y +=φ
}
end_f_loop(f,thread)
}
编译通过并载入
启动非稳态求解器,并在Define-User-Defined-Scalars面板中添加一个UDS,选择自定义的通量和非稳态项
在材料面板中,选择自定义扩散率
在boundary conditions的Fluid面板中,选择自定义源项
在boundary conditions的壁面边界条件面板中,选择自定义边界条件
在solve-controls-solution中禁止Flow计算,只计算自定义标量
迭代过程中的残差曲线,可以看出正逐渐趋向稳定
采用后处理等值线面板,观察自定义标量的等值线
未完全稳定时的等值线
最终稳定时的等值线,可以看出是一系列45度的斜直线,与解析解相同。
但右上角顶点的值为9.9,而解析解中应为x+y=10,所以尚存在1%的误差。