<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel rdf:about="https://blog.x-tools.top/feed/rss/tag/PCB/">
<title>小夏的猪窝 - PCB</title>
<link>https://blog.x-tools.top/tag/PCB/</link>
<description></description>
<items>
<rdf:Seq>
<rdf:li resource="https://blog.x-tools.top/archives/104/"/>
<rdf:li resource="https://blog.x-tools.top/archives/98/"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="https://blog.x-tools.top/archives/104/">
<title>AutoSi9000S 更强大的批处理阻抗计算器！！</title>
<link>https://blog.x-tools.top/archives/104/</link>
<dc:date>2025-05-11T14:26:00+00:00</dc:date>
<description>前言上回说到，一个GitHub项目“Auto_Si9000_WPF”，这是基于WPF编写的桌面应用程序，支持不同模型的批量阻抗计算，但是这个软件的有很大缺陷：1、不支持阻抗等数据的保存；2、反算会将原始线宽线距等参数一起变更；现完全对本项目进行重构，依然是WPF的桌面应用程序，项目名字为：“AutoSi9000S”；AutoSi9000S 亮点总表的设计观念（类似Excel表），支持多个模型数据一起观察，根据选择模型实现智能参数禁用；更强大的对等反算系统，调整后与原始的线宽线距完全分离，互不影响；不使用系统的MessageBox，自定义的通知方式，永远不要点"确定"，更加人性化的提示功能；引入常规叠构、阻抗所在层、参考层的概念，反向引用叠构数据到选中数据中，使阻抗计算更加简单快捷；存档功能，使用Sqlite本地数据库保存所有阻抗数据，支持多存档管理，数据不丢失！显示参数过多？试试自定义列设置，隐藏掉不常用的列！Si9000原生计算界面的生成功能，一键导出预览，这图很有用！软件部分 Gif动图展示AutoSi9000S计算演示速度非常快！AutoSi9000S反算演示对等的反算线宽线距调整功能，仅需调整线宽即可做到阻抗调整，可简化CAM优化流程！AutoSi9000S复制演示批量复制功能，批量计算演示：感兴趣的可以和我联系，一起学习，感谢您的点击！</description>
</item>
<item rdf:about="https://blog.x-tools.top/archives/98/">
<title>关于SI9000计算阻抗接口的研究</title>
<link>https://blog.x-tools.top/archives/98/</link>
<dc:date>2024-11-26T01:50:24+00:00</dc:date>
<description>开篇在PCB设计中，阻抗控制主要是指控制信号线的特性阻抗，使其与传输线或连接设备的阻抗匹配，以确保信号在传输过程中不产生过多的反射和损耗，常用于传输线的设计中。上述的重点就是阻抗匹配，客户端若在PCB中存在阻抗管控的要求，需要某一段线路的阻抗在XΩ±Y%（例：50Ω±10%）的范围内，PCB厂商在生产的过程中需要尽量保证阻抗线完整、平滑。除了在生产过程中保证应该有的质量保证，还需要在工程设计阶段对资料中阻抗线的理论阻抗值进行模拟，如果模拟的阻抗值超出客户要求的阻抗管控范围，或偏差较大时，PCB厂商通常会对阻抗线进行建议调整，以确保阻抗值在客户要求的范围内。此外PCB生产完毕后，还需要指定的阻抗条测试模块，对PCB的阻抗进行测试，此时测量出来的就是板内实际的阻抗值了。那么，如何对阻抗进行模拟计算呢？Polar SI9000我们需要使用到各种阻抗模拟的软件，本文使用的软件为：Polar SI9000，SI9000是Polar公司开发的一款用于PCB设计的阻抗模拟软件，可以帮助设计师精确计算和优化传输线的特性阻抗。该软件中有各种阻抗线的模拟层叠结构，常用的有单线、单线共面、双线、双线共面，以及提供了内层、外层、盖油、不盖油的几类模拟阻抗模拟计算结构；若需要模拟阻抗，只需要选择一个符合客户资料设计的阻抗线模型，填入需要的参数后，点击Calculate(计算)即可实现对理论阻抗的模拟。接下来我们使用Coated Microstrip1B(外层单线盖油)模型来实现对阻抗的模拟计算：首先，填入软件需要的参数：介质层厚度(H1)、介质层介电常数(Er1)、线路下线宽(W1)、线路上线宽(W2)、线路厚度(T1)、基材上油墨厚度(C1)、线路上基材厚度(C2)、油墨介电常数(CEr)；这些参数根据PCB厂商总结的常规参数填入即可，其中W1与W2，阻抗线的上下线宽通常是相差1Mil（受蚀刻药水的影响），1Mil是PCB厂商的常规蚀刻要求侵蚀的量，W1-W2=1Mil；关于板材以及油墨的介电常数需要让板材、油墨供应商来提供；填完参数点计算即可出现相应的阻抗Zo值了。以上是一个阻抗仿真的步骤，实际上操作会比文本描述更加繁琐，更何况一个PCB中常规情况下不仅仅只有1个阻抗需要管控。并且SI9000的保存做的不是很好，如果PCB的层压叠构改变，所有阻抗都需要重新计算！非常难受... 这就让我产生了对SI9000阻抗程序的研究，找到软件的接口，制作一个基于SI9000计算接口的阻抗计算项目；CalcEngineBEMDll.dll旧版本的SI9000安装目录中，没有CalcEngineBEMDll.dll，应该是集成在软件中了，本文使用的SI9000版本是V7.1.0，其中CalcEngineBEMDll.dll版本为V3.30，PolarGraphDll.dll的版本为V1.30。该阻抗计算软件的接口均在CalcEngineBEMDll.dll中，SI9000.exe本体就是调用dll中的开放的接口来实现阻抗值的计算。为什么？因为SI8000是SI9000的老版本，8000的安装目录中提供了两个Excel文件，分别为Si8000.xls、Si8000Expert.xls，这些Excel中的VBA代码均被加密，使用网上的破解方法进入查看工程代码后，发现表中实现阻抗值计算的方法均是来自CalcEngineBEMDll.dll，该dll使用depends.exe加载后显示存在139个方法，其中阻抗计算的方法就有95个，在depends.exe加载的dll并不能展示方法所需的参数个数、参数类型等信息，但是在SI8000的Excel中VBA工程中所有方法的参数、参数类型都在其中！以上，我们可以知道，阻抗计算方法在DLL中，方法可以被调用，方法的传参可以参考VBA工程；但前提是，用户电脑上必须安装好SI9000软件才可以；接下来，本文中我将使用Python对DLL中计算方法进行调用，其它的语言请读者自行尝试。Python调用Python是一个强大的高级编程语言，简单易用，各种领域都会有它的身影，无论是大小项目，都可以使用现有的pip包轻松实现。示例项目使用的包为Python自带的ctypes，这个项目结构如下：|--Auto_SI9000|----main.py &gt; 调用calcFun中的类实现阻抗值计算|----models.py &gt; 定义一些需要使用的结构体|----si9000.py &gt; 加载DLL，定义DLL中方法的传参及返回值|----calcFun.py &gt; Calc类(单计算)，Calc_Plus类(多计算，继承Calc)|---lib文件夹 &gt; 存放需加载的DLL相关文件接下来展示一下调用DLL的简单代码流程：1、首先调用DLL中的ClaimFlexLicence方法，认证一下产品Key（仅需要认证一次）；2、使用IsCalculationModelAllowed方法，指定需要使用的模型并允许DLL可以准备开始计算；3、调用计算方法CoatedMicrostrip1B方法，并传入需要前面讲到的单线模型需要的一些参数（H1、Er1等），调用完成后会立刻返回，它的返回值是int(long)类型，1或0；该方法会将传入的参数进行检查，检查后会立刻返回检查的结果，返回1，则代表计算已经开始，返回0，代表计算参数存在错误，需要重新检查参数正确性！4、调用QueryCalculationFinished等待方法，等待计算结束；5、使用QueryCalculationResult方法获取阻抗计算结果，该方法如果直接传入结构体，会出现写入权限限制的问题，需要将变量的地址作为参数解决该问题；最后，结构体中的dImpedance就是结果阻抗值了！以上的调用流程均是来自VBA工程中的，其中部分方法可以跳过，或更改流程，读者可自行尝试。最后本文到此为止就结束了，更多的DLL方法请自行在VBA工程中解读；该项目目前还未完成，现只提供了一个单线模型的计算方法示例；我会在文本末尾添加上本次示例项目的下载链接（Python代码，SI9000安装包），请自行下载，感谢各位！项目下载链接：https://image.180402.xyz/S3/Auto_SI9000%20V2.exe</description>
</item>
</rdf:RDF>