当前位置: 首页 > news >正文

使用Simulink开发Autosar Nvm存储逻辑

文章目录

    • 前言
    • Autosar Nvm接口
    • 设计模型及接口
    • 生成代码及arxml
    • RTE接口mapping
    • RTE代码分析
    • 总结

前言

之前介绍过Simulink开发Dem故障触发逻辑,本文接着介绍另外一个常用的功能-Nvm存储的实现。

Autosar Nvm接口

Autosar Nvm中一般在上电初始化的时调用Nvm_ReadAll获取Nvm block的数据到Ram中。对于block来说,可以通过Nvm_ReadBlock进行读取,通过Nvm_WriteBlock进行写入。Autosar Dem标准接口为NvMService,使用Simulink中自带的demo-autosar_bsw_sensor中的定义,如下所示:在这里插入图片描述
需要注意的是:生成的package位置为/AUTOSAR/Services/Dem(暂时没找到怎么修改),而在使用时,导入对应Autosar工具(例如Etas)时可能会找不到对应的定义。此处我们后面是手动更改arxml中的package路径

设计模型及接口

配置Nvm的ClientPort,如下所示
在这里插入图片描述
Nvm需要使用到Simulink自带的Data Store Memory模块,如下所示
在这里插入图片描述
在初始化函数中进行Nvm读取
在这里插入图片描述
配置Nvm的Port及读取的函数
在这里插入图片描述

做了一个简单的存储逻辑:当输入值小于存储的值时,触发Nvm的存储
在这里插入图片描述
写入需要使用Data Store Write,然后使用Data Store Read调用WriteBlock进行写入,如下所示
在这里插入图片描述
配置Nvm的Port及写入的函数
在这里插入图片描述

Nvm的Functions Callers在刷新后会自动生成并mapping
在这里插入图片描述

生成代码及arxml

生成的代码中调用了RTE函数Rte_Call_S1LowSetPoint_ReadBlock用来读取Nvm,调用RTE函数Rte_Call_S1LowSetPoint_WriteBlock用来写入Nvm,示例如下:


/* Model step function */
void Runnable_Step(void)
{uint16 rtb_RelationalOperator_tmp;boolean rtb_RelationalOperator;/* Outport: '<Root>/Percent' incorporates:*  DataTypeConversion: '<Root>/Data Type Conversion'*  Inport: '<Root>/RawADC'*  Lookup_n-D: '<Root>/TPS Lookup'*/Rte_IWrite_Runnable_Step_Percent_Percent(rtCP_TPSLookup_tableData[plook_u32f_linckan(Rte_IRead_Runnable_Step_RawADC_RawADC(), rtCP_TPSLookup_bp01Data, 10U)]);/* Outputs for Triggered SubSystem: '<Root>/Enabled Subsystem' incorporates:*  TriggerPort: '<S1>/Trigger'*//* RelationalOperator: '<Root>/Relational Operator' incorporates:*  DataStoreWrite: '<S1>/Data Store Write'*  Inport: '<Root>/RawADC'*/rtb_RelationalOperator_tmp = Rte_IRead_Runnable_Step_RawADC_RawADC();/* End of Outputs for SubSystem: '<Root>/Enabled Subsystem' *//* RelationalOperator: '<Root>/Relational Operator' incorporates:*  DataStoreRead: '<Root>/Data Store Read'*  Inport: '<Root>/RawADC'*/rtb_RelationalOperator = (rtb_RelationalOperator_tmp < rtARID_DEF.LowSetPoint);/* Outputs for Triggered SubSystem: '<Root>/Enabled Subsystem' incorporates:*  TriggerPort: '<S1>/Trigger'*/if (rtb_RelationalOperator && (rtARID_DEF.EnabledSubsystem_Trig_ZCE !=POS_ZCSIG)) {/* DataStoreWrite: '<S1>/Data Store Write' */rtARID_DEF.LowSetPoint = rtb_RelationalOperator_tmp;/* FunctionCaller: '<S1>/NvMServiceCaller1' */Rte_Call_S1LowSetPoint_WriteBlock(&rtARID_DEF.LowSetPoint);}rtARID_DEF.EnabledSubsystem_Trig_ZCE = rtb_RelationalOperator;/* End of Outputs for SubSystem: '<Root>/Enabled Subsystem' */
}/* Model initialize function */
void Runnable_Init(void)
{/* Start for DataStoreMemory: '<Root>/Data Store Memory' */rtARID_DEF.LowSetPoint = 50U;/* SystemInitialize for Triggered SubSystem: '<Root>/Enabled Subsystem' */rtARID_DEF.EnabledSubsystem_Trig_ZCE = ZERO_ZCSIG;/* End of SystemInitialize for SubSystem: '<Root>/Enabled Subsystem' *//* Outputs for Atomic SubSystem: '<Root>/Initialize_Function' *//* FunctionCaller: '<S2>/NvMServiceCaller' */Rte_Call_S1LowSetPoint_ReadBlock(&rtARID_DEF.LowSetPoint);/* End of Outputs for SubSystem: '<Root>/Initialize_Function' */
}

对应的arxml中也生成了对应的接口描述
在这里插入图片描述
此处对应的package路径不对,需要替换成ETAS Nvm对应路径(/AUTOSAR_NvM/PortInterfaces/),替换完后copy到ETAS工具链中

在这里插入图片描述

RTE接口mapping

如果是新增的SWC,还需要将SWC映射到对应的EcucPartition上,且对应的runnable也要映射到对应的task上,本文不介绍这部分内容,默认上述工作已经完成

注意:初始化的Runnable在SWC中没有对应的Event,原因是Simulink中未配置,需要配置如下:
在这里插入图片描述

此处默认对应的NVM block已经建立好了(Nvm block需要配置NvMRbGenRteServicePort为True)。在对应的Nvm ServiceSwComponent中已经有了对应的Pport
Simulink生成的Arxml中的SWC中已经有了对应的NVM接口(Rport,Client接口)
在这里插入图片描述
Runnable中也有了对应调用关系

在这里插入图片描述
在这里插入图片描述
注意:此处生成的Server Call Point是Async接口,会导致后面ETAS生成RTE时生成Alarm和其他无关的代码,我们不需要,此处需要手动修改为Sync接口,如下所示:
在这里插入图片描述
在这里插入图片描述

将SWC接口与NVM接口进行mapping
在这里插入图片描述
mapping好后进行ECU Extract,然后生成RTE代码即可

RTE代码分析

在生成的SWC RTE头文件中,有对应的接口调用宏定义

#if defined(RTE_PRV_ALL_API) || defined(RTE_RUNNABLEAPI_Runnable_Init)
/* Inline function call optimization; Rte_Call_S1LowSetPoint_ReadBlock to NvM_ReadBlock */
#define Rte_Call_S1LowSetPoint_ReadBlock( DstPtr ) NvM_ReadBlock(((VAR(NvM_BlockIdType, AUTOMATIC))43), DstPtr)#endif
#if defined(RTE_PRV_ALL_API) || defined(RTE_RUNNABLEAPI_Runnable_Step)
/* Inline function call optimization; Rte_Call_S1LowSetPoint_WriteBlock to NvM_WriteBlock */
#define Rte_Call_S1LowSetPoint_WriteBlock( SrcPtr ) NvM_WriteBlock(((VAR(NvM_BlockIdType, AUTOMATIC))43), SrcPtr)#endif

自动生成的宏中实际也是调用的对应Nvm的函数,只是加上了对应的Nvm id,这样的话,应用层也不需要关心是具体是哪个Nvm id了

总结

使用Simulink Nvm模块可以减少一部分Nvm相关的RTE接口,能够节省一部分存储交互的工作量。

相关文章:

使用Simulink开发Autosar Nvm存储逻辑

文章目录 前言Autosar Nvm接口设计模型及接口生成代码及arxmlRTE接口mappingRTE代码分析总结 前言 之前介绍过Simulink开发Dem故障触发逻辑&#xff0c;本文接着介绍另外一个常用的功能-Nvm存储的实现。 Autosar Nvm接口 Autosar Nvm中一般在上电初始化的时调用Nvm_ReadAll获…...

嵌入式STM32学习——继电器

继电器模块引脚说明 VCC&#xff08;&#xff09;&#xff1a; 供电正极。连接此引脚到电源&#xff08;通常是直流电源&#xff09;&#xff0c;以提供继电器线圈所需的电流。 GND&#xff08;-&#xff09;&#xff1a; 地。连接此引脚到电源的负极或地。 IN&#xff08;或…...

更换内存条会影响电脑的IP地址吗?——全面解析

在日常电脑维护和升级过程中&#xff0c;许多用户都会遇到需要更换内存条的情况。与此同时&#xff0c;不少用户也担心硬件更换是否会影响电脑的网络配置&#xff0c;特别是IP地址的设置。本文将详细探讨更换内存条与IP地址之间的关系&#xff0c;帮助读者理解这两者之间的本质…...

AWS SNS:解锁高并发消息通知与系统集成的云端利器

导语 在分布式系统架构中&#xff0c;如何实现高效、可靠的消息通知与跨服务通信&#xff1f;AWS Simple Notification Service&#xff08;SNS&#xff09;作为全托管的发布/订阅&#xff08;Pub/Sub&#xff09;服务&#xff0c;正在成为企业构建弹性系统的核心组件。本文深度…...

【Java ee初阶】网络编程 TCP

TCP的socket api 两个核心的类 ServerSocket 创建一个这样的对象&#xff0c;就相当于打开了一个socket文件。 这个socket对象是给服务器专门使用的 这个类本身不负责发送接收。 主要负责“建立连接” Socket 创建一个这样的对象&#xff0c;也就相当于打开了一个socket文…...

达索MODSIM实施成本高吗?哪家服务商靠谱?

在数字化转型的浪潮中&#xff0c;越来越多的制造企业开始关注达索系统的MODSIM技术。记得去年参加行业峰会时&#xff0c;一位来自汽车零部件企业的技术总监向我倾诉了他的困扰&#xff1a;"我们都知道MODSIM能提升研发效率&#xff0c;但听说实施成本很高&#xff0c;又…...

ISP接口隔离原则

任何层次的软件设计如果依赖了它并不需要的东西&#xff0c;就会带来意料之外的麻烦。ISP强调使用多个特定的接口&#xff0c;而不是一个总接口&#xff0c;避免依赖不需要的接口。即不需要则不应该知道。 ISP特点 降低耦合度&#xff1a;客户端只依赖它需要的接口&#xff0…...

AI Agent(8):安全与伦理考量

引言 AI Agent作为具有一定自主性的智能系统,其行为可能产生深远影响。确保这些系统安全、可靠、符合伦理标准,并遵守相关法规,不仅是技术挑战,也是社会责任。 随着AI Agent能力的增强,其潜在风险也在增加,从数据泄露到决策偏见,从自主性滥用到责任归属不清,这些问题…...

Python3虚拟环境与包管理:项目隔离的艺术

Python3虚拟环境与包管理 为什么需要虚拟环境&#xff1f;虚拟环境工具&#xff1a;你的岛屿建设者一、使用venv创建虚拟环境创建虚拟环境激活虚拟环境退出虚拟环境 二、 包管理&#xff1a;岛上的补给系统2.1 pip&#xff1a;Python的包安装工具基本用法依赖管理 2.2 高级包管…...

23、DeepSeekMath论文笔记(GRPO)

DeepSeekMath论文笔记 0、研究背景与目标1、GRPO结构GRPO结构PPO知识点**1. PPO的网络模型结构****2. GAE&#xff08;广义优势估计&#xff09;原理****1. 优势函数的定义**2.GAE&#xff08;广义优势估计&#xff09; 2、关键技术与方法3、核心实验结果4、结论与未来方向关键…...

Python自动化-python基础(下)

六、带参数的装饰器 七、函数生成器 运行结果&#xff1a; 八、通过反射操作对象方法 1.添加和覆盖对象方法 2.删除对象方法 通过使用内建函数: delattr() # 删除 x.a() print("通过反射删除之后") delattr(x, "a") x.a()3 通过反射判断对象是否有指定…...

用Python绘制动态彩色ASCII爱心:技术深度与创意结合

引言 在技术博客的世界里&#xff0c;代码不仅仅是解决问题的工具&#xff0c;更可以是表达创意的媒介。今天我将分享一个独特的Python爱心代码项目&#xff0c;它结合了数学之美、ASCII艺术和动态效果&#xff0c;展示了Python编程的无限可能。这个项目不仅能运行展示出漂亮的…...

【C++】红黑树

1.红黑树的概念 是一种二叉搜索树&#xff0c;在每个节点上增加一个存储位表示节点的颜色&#xff0c;Red或black&#xff0c;通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;确保没有一条路径会比其他路径长出俩倍&#xff0c;是接近平衡的。 2.红黑树…...

链表头插法的优化补充、尾插法完结!

头插法的优化补充 这边我们将考虑到可以将动态创建链表&#xff0c;和插入新链表到链表头前方&#xff0c;成为新链表头的方法分开&#xff0c;使其自由度上升&#xff0c;在创建完链表后&#xff0c;还可以添加链表元素到成为新的链表头。 就是说可以单独的调用这个insertHea…...

Java多线程(超详细版!!)

Java多线程(超详细版&#xff01;&#xff01;) 文章目录 Java多线程(超详细版&#xff01;&#xff01;)1. 线程 进程 多线程2.线程实现2.1线程创建2.1.1 继承Thread类2.1.2 实现runnable接口2.1.2.1 思考&#xff1a;为什么推荐使用runnable接口&#xff1f;2.1.2.1.1 更高的…...

超详细fish-speech本地部署教程

本人配置&#xff1a; windows x64系统 cuda12.6 rtx4070 一、下载fish-speech模型 注意&#xff1a;提前配置好git&#xff0c;教程可在自行搜索 git clone https://gitclone.com/github.com/fishaudio/fish-speech.git cd fish-speech 或者直接进GitHub中下载也可以 …...

Flink和Spark的选型

在Flink和Spark的选型中&#xff0c;需要综合考虑多个技术维度和业务需求&#xff0c;以下是在项目中会重点评估的因素及实际案例说明&#xff1a; 一、核心选型因素 处理模式与延迟要求 Flink&#xff1a;基于事件驱动的流处理优先架构&#xff0c;支持毫秒级低延迟、高吞吐的…...

解锁 DevOps 新境界 :使用 Flux 进行 GitOps 现场演示 – 自动化您的 Kubernetes 部署

前言 GitOps 是实现持续部署的云原生方式。它的名字来源于标准且占主导地位的版本控制系统 Git。GitOps 的 Git 在某种程度上类似于 Kubernetes 的 etcd&#xff0c;但更进一步&#xff0c;因为 etcd 本身不保存版本历史记录。毋庸置疑&#xff0c;任何源代码管理服务&#xf…...

【从零实现JsonRpc框架#1】Json库介绍

1.JsonCpp第三方库 JSONCPP 是一个开源的 C 库&#xff0c;用于解析和生成 JSON&#xff08;JavaScript Object Notation&#xff09;数据。它提供了简单易用的接口&#xff0c;支持 JSON 的序列化和反序列化操作&#xff0c;适用于处理配置文件、网络通信数据等场景。 2.Jso…...

使用FastAPI和React以及MongoDB构建全栈Web应用02 前言

Who this book is for 本书适合哪些人阅读 This book is designed for web developers who aspire to build robust, scalable, and efficient web applications. It caters to a broad spectrum of developers, from those with foundational knowledge to experienced prof…...

JavaScript中的数据类型

目录 前言 基本类型 Number 特殊的数值NaN Infinity和-Infinity String Boolean Undefined null Symbol Undefined和Null的区别 引用类型 Object&#xff08;对象&#xff09; Array&#xff08;数组&#xff09; Function&#xff08;函数&#xff09; 函数声…...

AI 助力,轻松进行双语学术论文翻译!

在科技日新月异的今天&#xff0c;学术交流中的语言障碍仍然是科研工作者面临的一大挑战。尤其是对于需要查阅大量外文文献的学生、科研人员和学者来说&#xff0c;如何高效地理解和翻译复杂的学术论文成为了一大难题。然而&#xff0c;由Byaidu团队推出的开源项目PDFMathTrans…...

第3.2.3节 Android动态调用链路的获取

3.2.3 Android App动态调用链路 在Android应用中&#xff0c;动态调用链路指的是应用在运行时的调用路径。这通常涉及到方法调用的顺序和调用关系&#xff0c;特别是在应用的复杂逻辑中&#xff0c;理解这些调用链路对于调试和性能优化非常重要。 1&#xff0c;动态调用链路获…...

【Android】文件分块上传尝试

【Android】文件分块上传 在完成一个项目时&#xff0c;遇到了需要上传长视频的场景&#xff0c;尽管可以手动限制视频清晰度和视频的码率帧率&#xff0c;但仍然避免不了视频大小过大的问题&#xff0c;且由于服务器原因&#xff0c;网络不太稳定。这个时候想到了可以将文件分…...

大模型中的三角位置编码实现

Transformer中嵌入表示 位置编码的实现 import torch import math from torch import nn# 词嵌入位置编码实现 class EmbeddingWithPosition(nn.Module):"""vocab_size:词表大小emb_size: 词向量维度seq_max_len: 句子最大长度 (人为设定&#xff0c;例如GPT2…...

深入详解人工智能数学基础——微积分中的自动微分及其在PyTorch中的实现原理

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

【Linux学习笔记】系统文件IO之重定向原理分析

【Linux学习笔记】系统文件IO之重定向原理分析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】系统文件IO之重定向原理分析前言一. 系统文件I/01.1 一种传递标志位的方法1.2 hello.c写文件:1.3 he…...

《React Native与Flutter:社交应用中用户行为分析与埋点统计的深度剖析》

React Native与Flutter作为两款备受瞩目的跨平台开发框架&#xff0c;正深刻地影响着应用的构建方式。当聚焦于用户行为分析与埋点统计时&#xff0c;它们各自展现出独特的策略与工具选择&#xff0c;这些差异和共性不仅关乎开发效率&#xff0c;更与社交应用能否精准把握用户需…...

Cesium高度参考系统

🌍 Cesium高度参考系统趣味探索 🚀 高度参考系统形象比喻 想象一下,你正在玩一个积木游戏: CLAMP_TO_GROUND:积木被"强力胶水"粘在桌面上,无论桌面高低起伏如何 RELATIVE_TO_GROUND:积木放在"微型支架"上,始终保持离桌面固定距离 NONE:积木漂…...

海纳思(Hi3798MV300)机顶盒遇到海思摄像头

海纳思机顶盒遇到海思摄像头&#xff0c;正好家里有个海思Hi3516的摄像头模组开发板&#xff0c;结合机顶盒来做个录像。 准备工作 海纳斯机顶盒摄像机模组两根网线、两个电源、路由器一块64G固态硬盘 摄像机模组和机顶盒都接入路由器的LAN口&#xff0c;确保网络正常通信。 …...

[python] 类

一 介绍 具有相同属性和行为的事物的通称,是一个抽象的概念 三要素: 类名,属性&#xff0c;方法 格式: class 类名: 代码块 class Pepole:name "stitchcool"def getname(self):return self.name 1.1 创建对象(实例化) 格式: 对象名 类名() p1 Pepole()…...

Python中的事件循环是什么?事件是怎么个事件?循环是怎么个循环

在Python异步编程中&#xff0c;事件循环&#xff08;Event Loop&#xff09;是核心机制&#xff0c;它通过单线程实现高效的任务调度和I/O并发处理。本文将从事件的定义、循环的运行逻辑以及具体实现原理三个维度展开分析。 一、事件循环的本质&#xff1a;协程与任务的调度器…...

单片机-STM32部分:11、ADC

飞书文档https://x509p6c8to.feishu.cn/wiki/OclUwlkifiRKR2k6iLbczn5tn8g STM32的ADC是一种逐次逼近型模拟数字转换器。 是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。 逐次逼近型ADC的原理图下&#xff1a; STM32f103系列有3个ADC&#xff0c;精度为12…...

【含文档+PPT+源码】基于微信小程序的社区便民防诈宣传系统设计与实现

项目介绍 本课程演示的是一款基于微信小程序的社区便民防诈宣传系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…...

Laravel 安全:批量赋值 fillable 与 guarded

Laravel 的模型中有两个 protected 字段 fillable 与 guarded&#xff0c;注意&#xff1a;必须是 protected 以上开放程度。 我们经常通过提交表单进行数据的增删改&#xff0c;为了方便的进行数据批量修改操作 Laravel 提供了批量赋值机制&#xff1a; 假如我们想要在数据库…...

[杂谈随感-13]: 人的睡眠,如何布置床的位置比较有安全?感?

睡眠环境中的床位布置直接影响心理安全感与睡眠质量&#xff0c;需从空间防御性、人体感知机制及环境心理学多维度综合设计。 以下基于科学原理与实践案例&#xff0c;系统解析床位布置的核心策略&#xff1a; 一、空间防御性布局&#xff1a;构建心理安全边界 背靠实体墙&a…...

协议路由与路由协议

协议路由”和“路由协议”听起来相似&#xff0c;但其实是两个完全不同的网络概念。下面我来分别解释&#xff1a; 一、协议路由&#xff08;Policy-Based Routing&#xff0c;PBR&#xff09; ✅ 定义&#xff1a; 协议路由是指 根据预设策略&#xff08;策略路由&#xff0…...

内网穿透系列三:开源本地服务公网映射工具 tunnelmole

以下是对 tunnelmole 简要介绍&#xff1a; tunnelmole 是一款开源的内网穿透工具&#xff0c;一行命令就能把本地http服务映射成公网可访问的链接提供公共免费的网络服务&#xff0c;直接下载运行命令即可使用&#xff0c;也支持自行配置搭建私有客户端、服务端参考开源地址&…...

发行基础:本地化BUG导致审核失败

1、早上收到邮件&#xff0c;Steam客服说本地化功能找不到&#xff0c;无法切换多国语言&#xff0c;所以正式版V1.0程序未通过。 大脑瞬间有要爆炸的感觉&#xff0c;测试后发现V1以及demo都存在同样问题。 属于重大BUG&#xff0c;需要立即解决&#xff0c;最高优先级。 2、…...

QB/T 1649-2024 聚苯乙烯泡沫塑料包装材料检测

聚苯乙烯泡沫塑料包装材料是指以可发行聚苯乙烯珠粒为原料&#xff0c;经加热预发泡后在模具中加热成型而制得&#xff0c;具有闭孔结构的聚苯乙烯泡沫塑料包装材料。 QB/T 1649-2024聚苯乙烯泡沫塑料包装材料检测项目&#xff1a; 测试项目 测试标准 外观 QB/T 1649 气味…...

【Day 24】HarmonyOS端云一体化开发:云函数

一、端云开发核心架构 1. 技术栈对比 维度传统开发模式HarmonyOS端云一体化方案优势 开发工具需独立配置前后端环境DevEco Studio统一开发端云代码降低60%环境搭建时间部署流程手动部署服务器与数据库一键部署至AGC Serverless免运维&#xff0c;自动弹性伸缩通信安全需自行实…...

大模型(LLMs)强化学习——RLHF及其变种

大模型&#xff08;LLMs&#xff09;强化学习——RLHF及其变种面 一、介绍一下 LLM的经典预训练Pipeline&#xff1f;二、预训练&#xff08;Pre-training&#xff09;篇 具体介绍一下 预训练&#xff08;Pre-training&#xff09;&#xff1f;三、有监督微调&#xff08;Sup…...

20250510解决NanoPi NEO core开发板在Ubuntu core22.04.3系统下适配移远的4G模块EC200A-CN的问题

1、h3-eflasher-friendlycore-jammy-4.14-armhf-20250402.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区&#xff0c;可以使用SD Card Formatter/SDCardFormatterv5…...

WinCC V7.2到V8.0与S71200/1500系列连接通讯教程以及避坑点

声明&#xff1a;WinCC与PLC连接详细指导与注意避坑点&#xff0c;部分图片和描述来源于网络&#xff0c;如有冒犯&#xff0c;请联系本人删除。 1.环境介绍 自WinCC V7.2版本起&#xff0c;软件新增加了 "SIMATIC S7-1200, S7-1500 Channel"通道,用于WinCC与 S7-1…...

WPF 性能 UI 虚拟化 软件开发人员的思考

UI 虚拟化是 WPF 采用的一项技术&#xff0c;框架会仅创建用户可见的 UI 元素。例如&#xff0c;如果 ListView 中有 1000 个文本块控件&#xff0c;但您只能查看其中的 10 个&#xff0c;那么 VisualTree 中也只会显示 10 个文本块。向下滚动时&#xff0c;不再可见的元素将被…...

服务器综合实验(实战详解)

该文章的目录部分 实验内容 实验完成步骤 虚拟机准备 配置两个虚拟机的本地仓库 虚拟机A&#xff1a; 虚拟机B&#xff1a; 配置SSH公钥互信 虚拟机A&#xff1a; ​编辑 虚拟机B&#xff1a; 提供基于bind的DNS服务 虚拟机A&#xff1a; 项目需求1&#xff1a; …...

【动态导通电阻】软硬开关下GaN器件的动态RDSON

2019年,浙江大学的Rui Li、Xinke Wu等人基于双脉冲和多脉冲测试方法,研究了在硬开关和软开关条件下商用氮化镓(GaN)功率器件的动态导通电阻(R DSON )特性。实验结果表明,不同GaN器件在硬开关和软开关条件下的动态R DSON 表现出不同的行为,这些行为受关断电压和频率的影…...

Java基础 5.10

1.方法重写课堂练习 package com.logic.override_; //编写一个Person类 包括属性/private(name, age) 构造器 方法say(返回自我介绍的字符串) //编写一个Student类 继承Person类 增加id score 属性/private 以及构造器 //定义say方法(返回自我介绍的信息) //在main中 分别创建…...

通信原理绪论

&#xff08;I&#xff09;信息量&#xff1a;第j条消息中包含的信息定义为&#xff1a;I(j) 消息是信息的表现形式 消息是信息的一种抽象和本质内容 消息中所含的信息量是该消息出现概率的函数&#xff0c;即 I I[P(x)] P&#xff08;x&#xff09;越小&#xff0c;I越…...

Maven 插件配置分层架构深度解析

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...