博客

  • 仿真测试三步实操:v2.3版参数这样设,新手避开3个坑

    本人对CarSim 2023.0版本进行了实际测试,踩入过因参数匹配错误致使仿真直接崩溃的坑,新手只要跟着步骤一步步去操作,便能够轻松地避开这类常见问题。

    时间步长设置多少合适

    进行操作,将菜单打开,选择“Simulation” ,接着选择 “Solver Configuration”,然后去把 “Time Step”输入框找到。给出推荐,设置固定步长为0.001秒。给出理由,多数车辆动力学模型在0.001秒时能既保证精度,又不让电脑算崩。实测表明当步长为0.0005秒时太慢,步长在0.002秒以上时容易丢数据。

    【新手需防避开错误】,经常出现的报错是“Solver未能成功收敛”,出现错误的原因是,步长太大致使状态量发生突变,解决的办法是,先把步长改回到0.001秒,要是仍然报错,那就勾选“Enable Zero Crossing”这个选项,然后再运行一遍。

    两种求解器怎么选

    在菜单“Simulation”里,“Solver Type”之下存在两选项,其一为ODE45,此乃变步长的;其二是ODE1,这是固定步长的。若要运行连续变道场景,那就选用ODE45,其速度快,然而结果不稳定。要是跑闭环控制标定,则必定得用ODE1,其结果是可以重复有规律可循的。我的有所割舍或选取的逻辑是,进行对比测试时选择ODE1,而开展快速验证工作会选ODE45。

    【新手需防入坑】,好多人在选用ODE45之后再更换电脑便跑出不一样的结果,缘由在于,变步长是依赖CPU计算负载的,解决的办法是,切换成为ODE1,与此同时将相对误差设定为1e – 4,如此结果便能稳定下来。

    高频报错一站式解决

    所报错误内容为:“在t等于0.5秒时模型停止运行:超出范围”。其操作路径是:“工具” 指向 “数据检查” 进而 “信号监视器”。首先第一步,双击报错的时间点,找出超限的信号 “转向角”。接着第二步,打开 “输入” 面板,将最大转向角从30度.change为45度。然后第三步,再次运行仿真,问题不复存在。

    以下避免新手踩坑,此报错根本是默认限幅格外严格,解决途径并非仅调整限幅,还得核查“Tire Model”里垂向力有无突变,要是依旧报错,关闭“ABS_Enable”开关,待仿真运行成功后再开启。

    硬件在环实时仿真(HIL)并不适用此方法,这是由于HIL对步长有着至少0.001秒的要求,并且其运算必须采用定步长ODE1来进行。解决办法是替换为dSPACE的Simulink接口,采用离散求解器来运行。你在进行仿真操作时有没有碰到过“模型锁死”的报错情况呢?在评论区交流一下是如何解决的吧。

  • 规则管理器分层配置 三步避开父子规则冲突

    亲测华为USG6000E V600R007C00SPC100,曾遇全局规则跟接口规则优先级错乱致使业务全断之困局,新手依步骤逐一操作,便可轻易躲开此类常见问题。

    1 进入分层视图并设置深度

    在Web界面,先依次点击“策略”,接着点击“安全策略”,再点击“规则管理器”,于右侧寻找到“分层视图”按钮,随后单击该按钮,将参数“层级深度”通过手工方式输入3,最后点击“应用”。

    【新手需躲开的坑】,常见出现报错“无法加载分层视图”的弹窗,其核心缘由是浏览器兼容性不太好(特别是IE模式的情况下)。能够快速解决的办法是:换用Chrome 80以上的版本,将缓存清空之后再重新进行登录。

    2 配置父子规则继承关系

    左键在分层视图之中,对父规则(.ID 为 1001)进行右键点选,从中选择“编辑子规则策略”选项,接着勾选“继承父规则动作”这一项目,把子规则 ID 的范围填写成 2001 – 2005。在点击“保存”这个动作之前,要确认“匹配顺序”的状态是“按层级优先”。

    【新手需防入坑】,存在这样的情况:子规则已明确添加,然而却未产生作用,流量被匹配到了其他规则。究其缘由:是遗漏 设置了匹配顺序,系统会按照ID顺序进行默认处理。解决的办法是:退回到规则管理器的首页,寻找到标有“匹配顺序”的下拉框,强行将其设置为“按层级优先”后再进行保存。

    3 调整分层优先级与兜底规则

    当进入“全局配置”之中的“分层优先级”,把“接口层”的权重调整为10 ,将“区域层”的权重调至5 ,而“全局层”留有1。关键参数层级深度显示为3是最优的推荐数值:处于深度超过5的情况会显著地增加匹配时延(经过实测增加了40%)。深度为1时则不能够区分接口与区域,3层能够刚好覆盖全局、区域以及接口,维护与性能之间的平衡是为最好。

    【新手避开陷阱】,要是权重设定得不恰当,就会引发“规则环检测失败”的错误提示,比如说接口层予以准许,然而全局层却加以拒绝,从而构成循环。完整的解决步骤如下:第一步是禁用“允许循环检测”复选框,第二步是手动导出配置文件,接着搜索其中的“loop_detect”并将其改成false,第三步是再次导入并且重启规则管理器服务。

    有着两种实操方案进行对比,方案A呈现扁平化规则,所有规则处于同级状态,它适用于规则总数为200条规则的大规模环境,在此环境中修改父规则便能够联动子规则。现存在取舍逻辑,即倘若每周变更规则超过3次,那就无脑选择方案B;要是网络固定并且规则极少,那么方案A会更省事。

    针对高频出现的报错“Error: Rule conflict at layer2”的完整解决流程如下:现象呈现为提交时出现冲突状况,原因在于父子规则的动作呈现相反态势(父规则予以允许然而子规则却加以拒绝)。一站式的步骤如下:其一,运用命令display rule conflict layer2来定位发生冲突的规则对;其二,把子规则的动作修改为“继承父动作”;其三,倘若业务存在例外需求,勾选“覆盖父动作”并添加备注,最后再次编译规则集。

    此方法对动态时间调度规则不适用,对三层以上嵌套也不适用,像全局大于区域大于接口大于用户大于应用这种情况,经实测性能下降了60%。有一套简易替代方案,它包括改用策略矩阵也就是Policy Matrix直接对交叉组合进行定义,或者把它拆分为ACL分组后按照顺序去调用。

  • PCB设计规范手把手教你避开3个常见坑

    亲身实践Altium Designer 24.2,遭遇过线宽设置过于大胆致使工厂无法制作出来,差分等长费尽周折绕了许久结果忘记锁定相移,过孔盖油出现漏锡导致短路等诸多问题,新手依照步骤一步步去操作,便可轻易避开这类常见问题。

    线宽线距怎么设最稳妥

    将“设计”菜单里位于下方名为“规则”的窗口予以打开,进入到归属于“Routing”之下的“Width”此项子项之中。新创建出一个规则,予以设置把最小的线宽给定为6mil这个数值,将最大的线宽给定为100mil,其优先值一栏中填写8mil此数额。此6mil属于最优的建议性数值,这凭借的是在绝大多数的PCB打样工厂当中免费提供的技术是线宽处于6mil,若是范围变小以至于更加小则就会面临需要额外加钱这一状况而且会导致器件产品性能相当大比率变好的情况发生此情形当中良品率下降。

    关于新手避坑,有这样一种情况,不少人直接设定为4mil想要走更细的线,然而在下单的时候,工厂却提示无法制作,于是只好改板重新来做,这就耽误了两天时间。出现报错弹窗显示“Clearance constraint violation”,这意味着间距超出了标准,解决这个问题的办法是,要把间距规则也调整到6mil以上,可别只是一味地关注线宽哦。

    差分线如何绕等长配对

    进入“布线”菜单,从中选择“交互式差分对布线”,接着点中你打算要走的差分网络对。然后右键选择“差分对属性”,将最大长度误差设定为5mil。在走完线之后,点击“工具”里面的“长度调整”,按住Tab键调出参数面板,把蛇形线振幅设置为20mil、间隙设置为12mil,手动推线直至长度匹配。

    【新手需防】 通常出现的报错为“差分对相位差超出限定范围”,这般是由于你仅仅环绕了其中一条线路,然而却遗漏了环绕另一条线路。解决的办法是首先启动“差分对等长绕线”模式,软件会自行进行成对调整。还有一种方案是手动各自进行环绕,不过效率较为低下,并且容易出现差错,建议采用自动模式。

    过孔盖油还是开窗选哪个

    进入“规则”,点击“Manufacturing”下的“HoleSize”,设置过孔外径为24mil,孔径为12mil。接着,到“SolderMask”里,将“Tented”勾选上,这便是盖油设置。要是进行开窗即不盖油,则取消“Tented”勾选,并且加上助焊层。选择盖油能够防止氧化以及防止短路,适合高密度板;开窗适合测试点或者散热孔。

    有着“新手避坑注意”之称的情况是,报错显示“Solder mask bridge”意味着开窗间距过小,致使两孔连接到一起从而出现漏锡现象。其解决的流程如下,首先要更改规则将开窗间距调整到8mil以上,接着重新进行铺铜操作,最后运行一遍DRC检查。经我实际测试,此流程能够一次性清除90%的工艺错误。

    本方法不适用于那种需严格阻抗控制时不能仅依靠规则的超高频RF板,对于那类板子建议直接让板厂去计算阻抗叠层。普通数字电路按照这个去做基本上能够稳稳通过,板子回来之后进行焊接也会比较顺手。你在先前遇到过的让自身最为头疼的是哪一个坑呢?在评论区交流畅谈一番吧,为其点赞并收藏起来,下次进行改板的时候就可以直接翻出来查看。

  • Altium焊盘热焊盘设置 手把手教你避开短路坑

    进行实测的本人,所使用的是Altium Designer 22.6.1版本,曾踩踏过因GND焊盘散热不均匀进而致使虚焊的坑,对于新手来讲,只要跟着步骤一步步去操作,便能够轻松地避开此类常见问题。

    什么是热焊盘设置核心参数

    “十字连接宽度”是热焊盘设置里最为关键的参数,我实测后选择推荐值20mil。这个宽度倘若太细,载流便会不够,过波峰焊时易于烧断;要是太粗,散热就会太快,焊锡尚未流平便已凝固。20mil在常规1oz铜厚板上能够承受2A电流,焊接时热量传递恰好适宜。许多教程写明10mil,那是针对高密度手机板而言的,普通工业板千万不要照抄。

    新手要避开陷阱,千万别直接采用默认的10mil ,我曾见过有人设置成10mil后,继电器大电流走线直接致使铜皮烧断,进而板子完全报废,解决的办法是预先改到20mil ,要是属于电源板还能够再加到25mil。

    全连接和花焊盘怎么选

    你得会两种方案,全连接适用于需要大电流或者散热器安装焊盘,它导热快、载流性能强;花焊盘适用于手工焊接或者返修较多的板子,其拆装便捷。取舍的逻辑十分简单,那就是看焊接方式。要是采用机器回流焊,选用全连接是没问题的,而要是使用手工烙铁焊,那就必须得用花焊盘,不然地平面散热速度太快,焊锡根本就化不开。

    【新手防坑指南】千万别让整个印制板全都采用同一种连接形式。我有过惨痛经历:给电源模组使用了全连接方式,结果进行手工替换时,即便烙铁温度达到400度,也无法将其拆卸下来,最后只能强行撬动使焊盘断开连接。正确的操作方法是,针对电源大电流的支路采用全连接,对于普通贴片式的电阻电容采用花式焊盘,并且在于规则当中借助IsVia以及IsPad进行区分设置。

    热焊盘设置三步硬操作

    首先,开启规则设定,其路径为Design→Rules→Plane→Polygon Connect Style ,接着,于Where The Object Matches框之中挑选All ,随后,在下方Connect Style处选定Relief Connect ,再之后,对于Conductors数量选定4 ,然后,将Expansion值填写为10mil ,最后,把Conductor Width填写成20mil。

    常见报错呈现为“无法建立连接”这一情况,其缘由在于铺铜优先级出现了相冲突的状况,出错的诱因乃是你在同一时刻设置多个Connect规则致使它们相互争斗,解决的办法是将Polygon Connect Style规则的优先级拉动至最为顶端之处,随后点击OK进而再度铺铜。

    第二步,要选中那需要更改的焊盘,接着按F11键以此打开属性面板,于Thermal Relief选项当中勾选Override Library Setting。随后把Pad Thermal Relief的Expansion设置为12mil,将Aperture设置为20mil,这两个设置比默认值都各超出2mil,如此才能显著降低虚焊率。

    好多人更改了焊点周边用于电气连接的金属部分的属性之后却发现进行覆铜操作时并没有随之更新,其关键的错误之处就在于没有钩选表示去除已无电气功能并与之相连导电路径失去电流流通作用的铜箔的选项。在进行覆铜的属性设置当中一定要把这个选项勾选,若不然,处于孤立状态的铜皮就会与相邻的焊点发生电流异常流动相通连接导致故障。

    第三步,要对铺铜参数进行最终的确认,按照T加上G加上M的方式重新进行灌铜,在Polygon Manager当中去检查所有的铜皮均呈Solid模式,针对GND网络单独构建一个铺铜规则,将Connect Style选定为Direct Connection,此操作仅仅是针对电源地实施的。

    【新手防错】详实报错流程:要是你碰到“Short Circuit Detected”报错,先摁住Shift+V瞧瞧3D模式,瞅瞅热焊盘十字脚有无碰到旁边过孔。一站式处理办法:将热焊盘的Expansion值由10mil增至14mil,接着再度铺铜,99%能够解决。

    本方法不适用哪些场景

    这组设置不适用于高频信号线,不适用于DDR等长线。高频信号对完整地平面有要求。热焊盘的十字缝隙会把回流路径破坏掉。替代方案是很简单的。直接做全连接。在焊盘周围打一圈过孔用来平衡散热。要是你做RF射频板。热焊盘直接用实心铜皮且别考虑焊接问题了。

  • 过孔网格避让实操 新手跟着步骤设间距选方案

    我亲自进行了Cadence Allegro 17.4的实测,踩过因过孔网格避让规则未调好从而致使整板DRC爆炸的坑,新手依照步骤一步步去操作,便可轻松规避这类常见问题。

    过孔网格避让间距设置多少合适

    1. 开启Constraint Manager,其路线是:Setup跟着Constraints再到Constraint Manager,于Physical Constraint Set里头去找“Vias to Shape”的间距条目,把数值变更为0.127mm(5mil)。此数值为多数板厂具备的最小工艺能力,能够保障生产良率,且不会过度耗费布线空间,相比默认的0.254mm要更为宽松些。

    有着新手需要避开的坑,是常见的报错,名为“DRC error: Via to Shape spacing violation”,其原因在于默认的间距太过严格,进而致使出现大量的假错。存在快速解决的办法,要在全局进行搜索该间距项,另外要以一次性批量的方式将其修改为0.127mm,然后再次重新去跑一次DRC,如此便能够消除九成以上的报错。

    两种过孔避让方案怎么选

    2. 方案A那种全局统一间距的情况,其操作路径是Setup → Constraints → Physical ,要在“Spacing”页直接去修改所有层的Vias to Shape值。方案B是区域规则,路径为Shape → Global Dynamic Params ,要添加Region并分配独立间距。高密度BGA区域采用方案B(区域间距能够收紧到0.1mm),普通区域采用方案A。

    【新手需防入坑】区域规章未起作用的典型状况:DRC依旧报全域间距方面的错误。缘故在于Region的优先程度比默认规则要低,得在Constraint Manager里把Region规则拖拽至列表最上头,强行优先进行匹配。

    过孔网格避让报错怎么解决

    3. 高频出现的完整表示为“DRC: Via on Grid Violation”的报错,其原因在于,过孔的中心位置处于那种负片平面的网格线之上,然而该网格线却不存在热焊盘连接。全面的解决流程是,开启Shape Global Parameters(其路径为Shape至Global Dynamic Params),将“Thermal relief connects to all vias” 的勾选取消,转而勾选“Vias with holes”,随后点击“Update DRC”以进行重新刷新。

    做完这一步居然还会报错,怎么回事呢?那就得去检查一下Manufacture当中的Artwork里的Gerber设置,要保证“Suppress unconnected internal planes”没有被错误地勾选。要是已经勾了的话?负片就会把过孔连接给完全切掉,那怎么办呢?取消勾选之后再重新出图就可以了。

    此篇文章所采用的方法,并不适用于HDI板子当中的微孔,也就是孔径小于等于0.1mm的那种,原因在于微小孔自身的结构存在差异。可供替代的方案是,运用Allegro的Microvia专门规则,于Constraint Manager的Physical里,去单独设定“Microvia to Shape”的间距,其推荐数值为0.05mm。你平常在画板的时候,有没有碰到过因为过孔避让而致使整个板子需要返工的状况?在评论区交流一下你遭遇过的踩坑经历,要是觉着有用就点个赞给予支持。

  • 交叉探针定位三步避坑实战(泰克MDO34)

    实测泰克MDO34固件版本为v,2.6时,,自己踩过交叉探针地线环路所引发出的信号串扰这个坑点,,新手只要跟着步骤一步步去操作,,便能够轻轻松松避开这类常见问题。

    1 设置探针衰减与补偿电容

    通过按【Utility】进入【Probe Setup】,从中选择【Probe Type】并将其设定为“电压探针”,把【Attenuation】设置为10X。开启自带的1kHz方波,接着使用无感螺丝刀去旋转探针补偿孔,调节到波形呈现平坦状态且不存在过冲现象。

    【新手需避坑】,存在常见报错:方波内角处非常圆润或者出现振铃现象。其核心原因在于:探针补偿电容偏离了50pF这一最优推荐数值,原因是:在10X衰减情况下50pF能够平衡高频响应以及负载。解决的办法是:更换新的探针并重新进行调试,要是依旧不平衡那么就要检查BNC触点是否出现氧化。

    2 配置接地与交叉参考点

    依照着【Math】向后操作,过渡到【Reference】,针对于【Ground】,要挑选“共用参考”,而地线夹呢,它一定要夹在待测点的旁边,这是明确的要求哦。

    【新手需防入坑】,出现报错“检测到过度噪声”。其缘由为:地线构成环路天线。能够快速解决的办法是:换用短地弹簧(原厂配件型号为016 – 1985 – 00),要是依旧噪声大,那么改用双探针差分法:CH1连接信号,CH2连接参考地,【数学】假定CH1减CH2,信噪比提高15分贝。

    3 调节触发电平时基参数

    把【Trigger】变更为【Type】“边沿”,从中选择交叉探针通道CH2,并选作【Source】,将【Level】设定为1.65V(3.3V逻辑)。把【Horizontal】时基旋转到500ns/div,把【Acquire】设定为“平均”模式,采样深度设定为10k点。

    新手要避开一个坑,那就是触发不稳定,波形会左右跳动。这其当中又有着一个原因,是触发电平未落于信号眼图的中间位置。那应该怎么做呢,可以运用光标去测量高电平为3.26V,低电平是0.12V,然后取其均值1.69V进行微调。要是这样做了之后仍然不稳定,那就切换到【Trigger】,进入“脉宽”模式,设置正脉宽大于200ns,以此来过滤毛刺。

    两种探针方案取舍

    价格较为低廉的,共模抑制比达到负四十分贝的那种单端探针,适用于数字逻辑以及速度比较低的总线方面,其共模抑制比为八十分贝,可用于电源纹波及CAN/LVDS的测试场景。对于场景的选择和舍弃这样的情况来说,倘若要对MCU引脚进行测试的话,则需使用单端探针;要是处于电机驱动或者长线缆环境之下,那么必然得使用差分探针,不然的话,交叉耦合就会导致假触发事件的产生。

    完整报错一站式解决

    出现高频报错“Overvoltage Protection Triggered”时,要先进行断电操作,接着拆除探针去测输入电压,要是输入电压超过300V,那么探针就会损坏。之后要更换保险丝(是5×20mm 0.5A规格的),更换后重启设备,然后按【Utility】【】【Self Test】【】【Probe Bias】进行校准,等到电压显示为0.00±0.02V时就恢复正常了。

    对于500V以上的高压或者射频信号(超过1GHz),本方法不合适用,替代的方案是:泰克P5200A高压差分探针或者近场探头SRF5030。你在实际勘验交叉探针的时候,有没有碰到过“触发电平漂移”这种怪异的问题呢?在评论区发出来,一块儿剖析。

  • 封装库导入三步搞定 实测AD22避开路径报错

    就本人亲自的实际测试情况而言,Altium Designer程序版本为22.6.1,曾遭遇过封装库路径呈现绝对化从而致使出现“File not found”这种状况的极为严重的问题,然而新手只要依照步骤逐个依次地去进行操作,便能够较为从容轻松地避开此类在实际应用当中比较常见的问题。

    封装库路径正确设置方法

    1. 点击菜单栏“文件”,找到“库”,进而选中“可用库”,进行打开库路径设置,于弹出的“可用库”对话框左下角点击“安装”按钮,在“安装库”窗口里,把“查找范围”指向封装库根目录,像D:AD_Libs这样,关键参数“库路径类型”选择“相对路径”,将推荐值设为“.Libs”并且勾选“复制到项目”,原因是相对路径可让工程于不同电脑上打开时自动寻址,防止绝对路径移动后全部失效。

    【新手需谨慎避开陷阱】,存在常见的报错情况:“无法找到印刷电路板库文件”。其核心的缘由在于,你于“可用库”当中所添加的乃是绝对路径(举例来说,像C:Users张三DesktopLibs这种形式),一旦更换电脑或者移动文件夹之后,便会出现找不到的状况了。有着快速的解决方法:将原来的库进行删除,再次运用相对路径来进行添加,又或者是把库文件夹放置到工程目录之下然后再去添加。

    封装库文件添加与版本适配

    2. 添加具体的封装文件,于安装对话框之中,点击从文件添加按钮,按住Ctrl键进行多选,选取所需的.PcbLib文件,比如Resistors.PcbLib、Caps.PcbLib。将参数封装显示模式选择为仅显示名称,并且要确保在库搜索顺序里,把项目库排列在系统库的前面。之后点击确定,以此关闭对话框。

    【新手防坑】出现报错“Library is read-only”或者“Access denied”,这常常出现在从公司的服务器所拷贝的库文件被设置成了只读属性这样的情况中,解决办法如下,右键点击.PcbLib文件,选择“属性”,取消“只读”勾选,然后点击“应用”,要是这样仍然不行,那就检查文件夹权限,要确保具备“完全控制”权限。

    这里给出两种导入方式的对比情况:一种是手动单次进行添加,另一种是通过批量脚本实施导入。手动的这种方式适用于数量较少的库,也就是小于等于5个的库,其具有直观且不容易出错的特点;批量脚本导入方式(即为利用DelphiScript来运行“LibImport.pas”)适用于对几十个库进行统一配置的情况,不过需要提前去整理库列表。有其相应的取舍逻辑,对于个人开发者或者小项目而言适宜采用手动方式,而对于团队大型项目则适用脚本方式并且要保存为“.PrjPcb”工程模板。

    封装库导入后验证及报错解决

    3. 在 PCB 编辑界面,要验证导入是否成功,需按快捷键“PP”放置一个元件。放置后,按下 Tab 键,打开属性面板。接着,在“封装”下拉框里输入关键词,查看是否能出现所导入的封装名称。在此基础上呢,推荐把关键参数“库自动刷新”设置为“每次放置前检查”,其触发的快捷键是 F5。这么做的理由在于,要避免因为新增的库没有及时刷新从而导致找不到的情况出现。

    新手需避开的坑,高频出现的完整报错是,“Unknown pin”或者“Footprint not found in library”。完整的解决流程是,第一步,要检查封装库是不是的确包含了该元件的封装,通过双击库文件在库面板里进行搜索。第二步,需确认原理图里所指定的封装名与库内的名称完全相同,要留意大小写以及空格。第三步,在“可用库”当中把该库上移至第一位,以此避免重名冲突。第四步,去执行“库”这个选项下一步的“刷新库”,以此来强制进行重新索引。通常情况下,当这四步全部完成之后,问题就会消失不见。

    注意,此方法存在不适用的场景,当使用极为老旧版本的AD(就是像AD15及以下那样的版本),或者网络共享盘延迟高于50ms的时候,相对路径有可能会失效。有简易的替代方案,要先把整个库文件夹复制到本地固态硬盘,然后再通过绝对路径去添加。这种操作很简单,能够保证稳定。你在导入封装库之际,还碰到过哪些稀奇古怪的报错呢?欢迎留言分享,咱们一块儿避坑。

  • 仿真测试踩坑实录 三步搞定参数与报错

    我亲自进行了MATLAB/Simulink R2023a的实地测试,遭遇过模型运行失控、数据出现漂移、步长产生不匹配这样的状况,新手只要依照步骤逐个进行操作,便能够较为轻松地躲开这类较为常见的问题。

    仿真步长该设多少

    通过Simulink中工具栏,朝着Simulation方向,再到Model Configuration Parameters,进而找到Solver,从中发现Fixed-step size,我所推荐的是0.001秒,其理由在于,它能够对大多数动态系统响应予以捕捉,比如像电机、液压阀这类,并且不会致使仿真持续运行一整天。要是设定为0.0001,那么模型运行速度会慢上20倍,要是设定为0.01,曲线呈现出明显的锯齿状。

    【新手避坑】

    通常出现的报错情况为:“步幅尺寸对于时间间隔而言过小”,或者仿真处于0秒的状态呈现静止不动。关键的缘由在于:步长比模型的最小采样时间要小。能够迅速解决的办法是:首先用鼠标右键点击模型,接着选择“离散采样时间”,然后进入“显示”选项,查看以红色进行标记的最小采样时间,步长一定得大于这个数值。

    操作路径与参数三连击

    步骤1,进行复位工作区的操作:点击Simulink工具栏,接着点击Modeling,然后点击Update Diagram,等待所有蓝线连接好。

    步骤2,进行改仿真时长的操作,在Configuration Parameters这个选项里面,找到Stop time,输入5.0这个数值,而不是采用默认的10秒。

    第三个步骤,进行相对容差的更改:切换至Solver,找到Relative tolerance,再将其数值设为1e – 5,要是依照 默认的1e – 3设定,就会致使稳态误差变得很大。

    【新手避坑】

    发生了报错情况,报错内容为“Derivative of state ‘x’ is not finite” ,其原因在于初始值没有给予或者代数环没有被打断 ,解决的办法是双击积分器 ,在Initial condition处填写0 ,然后再来在代数环路径上添加Memory模块 ,该模块是从Simulink→Signal Attributes拖出来的。

    两种方案对比:变步长vs定步长

    方案A(变步长),其中Solver选auto,它适用于快速原型验证以及非线性强模型,其优点是省时间,而缺点是结果不可重复,每次运行的时候都不完全一样。

    一种方案被称作B(定步长),它选择ode4,并且步长固定为0.001秒,这种方案适用于HIL硬件在环、需要进行对比测试的场景,它具有完全可复现的优点,不过存在慢30%的缺点。

    变步长用于调试阶段,定步长则在出报告时必须使用,定步长在接真实控制器时也必须使用,这就是取舍的逻辑。

    高频报错一站式解决

    出现这样的报错,即“无法找到针对模块‘XXX’的‘mex’文件”,完整的流程是。

    进入放置模型的文件夹之后,将其中的 slprj 文件夹予以删除,并且把 simcache 文件夹也一并移除。

    ② 在命令行之中,输入bdclose all;进行清除操作,清除mex。

    ③ 重新打开模型,点Ctrl+B强制重新生成mex。

    三步做完,99%的mex报错消失。

    接下来讲句实在话:此方法不适用于离散事件仿真(就像SimEvents那样)以及实时系统中外设相互联动的场景。要是属于离散事件,那就更换事件日历表通过手动来进行推演;要是是外设联动情况,那就规规矩矩连接示波器去抓取硬件波形。

    你跑仿真时最头疼的报错是哪种?评论区甩出来,我帮你看一眼。

  • Cadence功能实操:3步避开PCB布线高频坑

    实测Cadence 17.4版本的本人,曾踩过在动态铜皮更新后出现短路情况,以及规则管理器误报这两个大坑点,新手只要跟着下面3步,一步步去操作,便能够轻松避开属于这类的常见问题。

    第1步 走线前强制锁定叠层与线宽参数

    执行菜单命令Setup,选择Cross-section,把每层铜厚统一设置为1.4mil,这是最优推荐值,用于平衡阻抗和细线成品率,线宽在Constraint Manager里,于Physical中设定5mil作为默认值。要是走线之后更改叠层,已经布好的线段不会自动匹配新的阻抗。

    新手避坑

    新手时常会碰到那种“走线已然完成然而DRC却报出开路”的状况,其缘由在于在叠层尚未锁定之前就变更了介质厚度,解决的办法是,在进行设置以前要先点击File – Export – Technology以此导出技术文件来进行备份,在更改完毕之后再Import回去并锁定。

    第2步 动态铜皮填充两种方案对比

    方案A:于Shape – Global Dynamic Params之中勾选Smooth(此为实时更新的状况,适宜小面积的板),方案B:在选择Disabled之后手动点击Update to Smooth(这适用于高密度的板,可避免每拖动一根线便卡顿5秒),当板子的元件数量超过2000个的时候要用方案B。

    新手避坑

    出现大面积地铜缺口或者孤岛,原因在于Smooth模式里自动避让过于激进。将Smooth关闭,进行手动挖空或者添加Void,最终统一实施更新。

    第3步 规则管理器报“Line to Line”错误完整解决

    所出现的报错信息为:“DRC错误:线路到线路的间距小于3密耳”。而一站式流程涵盖:张开Constraint Manager,进入Spacing,再进入Line to Line,将最小值从3密耳更改至4.5密耳。如果依旧出现报错情况,那就去执行Route – Gloss – Parameters,接着勾选Convert 45° to 90°,随后点击Gloss进行强制重布。最终通过Tools – Database Check来修复数据库。

    新手避坑

    更改后的规则为何没有生效呢?原因在于旧的线段依旧处于缓存之中。一定要通过Edit – Delete将报错的线段删除掉,接着按照Route – Connect重新进行拉取操作,千万不要使用移动命令。

    这一方法对于射频微波板(其阻抗要求在正负百分之二以内)是不适用的,对于高频板而言,要先使用Polar SI9000计算叠构,之后再把它导入到Cadence之中。要是仅仅是简单的双面板,那么直接采用Allegro PCB Designer的默认模板会更加节省时间。你最近在运用Cadence进行画板操作的时候,还在哪个功能方面卡住,并且折腾的时间超过了半天呢?把它在评论区发出来,咱们一起查看日志将其解决掉。

  • 智行者IC社区合作项目实操:3步避开API对接坑

    我亲自进行了智行者IC平台v2.3的实测,经历过社区合作项目的回调接口配置丢失状况,新手依照下面的步骤逐个进行操作,便能够轻易躲开此类常见问题。

    1 第一步 配置项目基础回调地址

    进入智行者IC社区的后台,按照顺序点击“合作项目管理”,接着点击“回调配置”,随后点击“新建回调”,于URL输入框之中填入https://你的域名/api/ic_callback ,方法选择POST ,把签名密钥留置为空的状态,还要将超时阈值设为此数值300ms(经过实测之后得出的最佳数值,太高可能会使队列堵塞,过低则会因频繁重试从而导致丢包)。

    针对新手需避开的坑,存在常见报错为“回调地址校验失败”,其核心缘由在于社区测试环境存在白名单要求,然而生产环境却不进行校验。解决的办法是,首先运用https://api.test.ic.com/echo开展通配测试,在确认得到200响应之后,再去替换真实地址,千万不要在生产环境之中强行对抗校验逻辑。

    2 第二步 编写签名校验中间件

    要在服务端的 app/middleware/ic_auth.go 里去实现校验函数,这个校验函数要读取请求 header 里的 X-IC-Signature,还要把 body 与 timestamp 以及项目密钥进行拼接,然后做 sha256 比对。在这里呢,推荐直接去写中间件,而不是在业务代码里面进行校验,这是因为前者能够统一处理所有合作回调。

    【新手需防入坑】常见出现的报错是“signature mismatch”,其核心的原因在于,社区文档所给出的示例,将timestamp拼凑错了所在位置,文档里是body处于前面,而实际正确的应该是timestamp加上body。存在快速进行解决的办法,就是运用社区所给出的签名demo运行一次,通过抓包去对比你的拼接顺序,直接借用官方测试用例的拼接字符串。

    3 第三步 处理幂等性防止重复消费

    对于数据库ic_events表,要给event_id添加唯一索引,在进行插入操作之前,需先查询是否已经存在。现有两种可行方案进行对比:方案A(此乃推荐方案)借助Redis SetNX来构建分布式锁,这种方案适用于日活超过10万的高并发情形;方案B借助数据库唯一键冲突捕获设置达成目标,其适用于中小规模项目,且是那种不想引入额外中间件的情况。关于取舍的逻辑是这样的:要是团队具备Redis,那就选择A方案,否者选择B方案会更加稳妥。

    有新手需要避开的坑,存在一种常见的报错情况是“Duplicate entry for event_id”,其核心的原因在于社区合作项目会重新推送失败的消息,且这种重推最多会有三次,解决的办法是,不要采用简单的去重方式,而是要配合状态机来处理,在第一次进行处理的时候标记为“处理中”,当成功之后改为“已完成”,在重推的时候直接返回成功,以此来避免出现死循环。

    将高频出现的,完整呈现的报错内容“Error 0xE0001: 项目未授权”,进行一站式解决的流程是:

    先登录智行者IC社区,接着进入“合作项目详情”这一板块里面的“接口权限”,随后要确认已经进行勾选操作,勾选了“回调读取”与“状态推送”。

    ② 重新生成项目密钥(32位随机串),更新到你的环境变量;

    其三,特意手动去调用/api/ic_health这样的接口,此接口的路径处于社区文档的3.2节那里,要是所返回的结果呈现为{“code”:0}这种情况,那么则意味着授权是成功的。

    ④要是依旧出现报错情况,那就去下载社区所提供的Postman环境文件,将其导入之后直接运行预置的用例,对请求头以及你的代码之间的差异进行比对,百分之九十九的概率是少传递了X – IC – Timestamp头。

    本方法不适用于的场景为:智行者 IC 社区 v1.x 的旧版接口,此接口是在 2019 年前进行部署的,原因在于老版本的签名算法为 MD5 并且未设有时间戳来防止重放。其替代方案是:联系社区管理员将其升级到 v2.x,或者在你的网关层手动追加 X – Forwarded – Timestamp 以此来模拟新协议。你在实操当中还碰到过其他关乎智行者 IC 的奇葩报错吗?在评论区把它发出来,我来帮你拆解。