更新日期:2024-01-18 17:32:39
0引言
在轨道交通车辆的设计和制造环节,EB软件可以帮助工程师快速绘制原理图,并自动导出包含设备信息和线缆信息的线表。该线表可用于整车生产,有助于提高生产效率和质量。
线表中的路径信息一般需要根据整车设备布置确定,然后手动将其填到EB软件或线表文件。由于整车设备非常多,其路径信息亦非常多,手动填充过程耗时且繁琐,可能会出现路径信息错位等问题。
EB软件已集成VBA(Visual Basic for Applications)开发环境,二次开发成本低。为了自动填充线表路径信息,基于EB VBA开发了自动填充插件。
1总流程
总流程如图1所示。首先通过程序将连接器、端子排和位置号导出到Excel中,然后人工添加路径信息,接着通过Excel VBA程序处理格式,最后通过程序导入Excel文件,将路径信息填充到原理图的线缆属性中。
图1 总流程图
2导出连接器和端子排信息
连接器或端子排一般会按照节车号、位置号放到对应的目录下,只考虑以下的4种情况:
(1)文件夹→单元→文件夹→连接器或端子排,如MC车→+111→A111→X1;
(2)文件夹→单元→连接器或端子排,如MC车→+111→X1;
(3)单元→文件夹→连接器或端子排,如+111→A111→X1;
(4)单元→连接器或端子排,如+111→S1。
2.1 变量定义
每节车位置号从A01-A99,A为节车号。考虑到位置号细分,如A01.1和A01.2,假设位置号总数不超过300个。每个位置号下面的设备总数不超过1000,一般司机室设备总数最多,常规项目司机室连接器和端子排总数在150个左右。
2.2 读取连接器和端子排信息
不考虑二极管,读取类型为接插件装配的连接器和端子排。以第(4)种情况为例对读取流程进行说明,如下所示:
(1)读取整车设备文件夹下的每一个变量X,若X的类型为单元(aucObjUnit)且X的子项数量不为0,则通过X的Name属性得到节车号(+号后面的第1个字符),通过ReferenceName属性得到位置号(如+111),随即遍历X的每一个子项Y,进入步骤(2);
(2)若Y的类型名称(TypeName)为接插件装配且X的注释不为二极管,则开始读取连接器或端子排名称(如XT111)、功能区号(如=11)。若Y的名称中包含=号,使用Mid函数读取=号后面的所有字符,即为功能区号。Y的ReferenceName属性包含位置号和名称,格式为+111 -XT101,通过Replace函数将位置号替换为空,得到-XT101;通过Y的Name属性得到接插件名称,如-X1。
(3)通过计数器得到每个单元的数量和名称。后面填充路径时采用查表法进行匹配,即先匹配单元名称再遍历每一个子项。
2.3 保存到Excel
位置号和连接器信息存储在数组中,无法直接将数组的整列数据一次性写入到Excel中。如果逐个写入到Excel,将会非常耗时,故在创建了空的Excel文件后,将Excel中的空表格值写入到Variant变量R(x),写入后调用的格式为R(x)(i, j),将其赋给R(x)(i, j),再整体写入到Excel。
通过Format函数在文件名中加入导出的时间,每次导出名称不会相同。导出的连接器和端子排信息如图2所示,手动填写第E-K列。
图2 导出的Excel文件
3 Excel格式处理
导出的数据放置在每个表格的A-L列。如果表格为自制或者在添加过程中按照司机室、客室等将数据拆分,则需要在读取前将数据汇总到A-L列,做成标准表格。
图3 Excel格式处理流程
格式处理流程如图3所示,在表格中加入CommandButton按钮,双击按钮触发程序。
4导入连接器信息
4.1 读取Excel路径
EB集成的VBA没有读取文件路径的函数,需要自行定义,定义的函数调用了Windows API的GetSaveFileName和GetOpenFileName函数。
4.2 读取Excel内容
通过Range函数将每一节车的路径信息直接赋给Variant类型的变量RD。重新计算每一个表格的行数。
4.3 路径ID
可以通过ID或Item编号的属性进行读写操作,但是Item编号可能随着属性顺序的调整而改变,故此处选择通过ID写入数据。常用的属性ID如表1所示。
表1 常用属性ID及编号
通过OpenWorksheetDirectEx读取线号数据,然后通过第4.4节的自定义函数读取连接点信息。
4.4 提取线缆两端的连接点信息函数
连接点信息在TargetAssociations属性中,但是该属性包含的子项不一定和连接点一一对应,需要通过Role属性判定,aucRolePin1Wire、aucRolePin2Wire分别表示连接点1和连接点2。
一般来说,连接点1和连接点2的第1个字符就是位置号的+号,可以直接读取,此处考虑位置号在任意位置或位置号前有空格的情况。连接器或端子排的名称可能不相邻,比如+111 -M101 屏柜 -X1 1,此时需要依次读取-号的所有位置,然后通过连字符&将名称连接在一起。
接着读取功能区,和第2.2节中的操作一样。由于线表中连接点1和位置号小于等于连接点2的位置号,此处需要根据位置号更改连接点顺序,确保连接点1的位置号小于等于连接点2的位置号。
4.5 匹配连接点信息
匹配流程如下:
(1)通过连接点的位置号确定节车号z,读取RD(z)的变量个数;
(2)匹配RD(z)中位置号,相同时读取该位置号包含连接器或端子排总数;
(3)遍历所有连接器或端子排,当名称、位置号完全相等时开始填充路径,通过表1中的ID赋值。填充完后必须使用Call x.Store进行保存,其中x为打开的线号名。
4.6 填充备用线路径
备用线没有连接器1、连接器2的信息,只有线束号等信息,故匹配备用线线束号和已经填充了路径的线束号,相同时读取路径。
通过OpenWorksheetDirectEx读取的是整车线号,如果直接遍历所有线缆,非常耗时,比如2车数据一般在1车数据后面,读取2车数据时,需要先和1车数据比对,增加了无用的时间。故需根据车型、位置号对线缆进行分类存储,比如+109的线缆全部放到数组1的第9个子数据集。
匹配时,通过位置号确定对应的数据集,然后开始变量该数据集中的所有线束号,相同时读取对应的路径信息。
4.7 案例验证
导出的连接器和端子排信息的程序运行的进度条如图4所示。使用GetTickCount计算程序运行时间,常规城轨项目的程序运行时间在5s左右,符合要求。
图4 导出连接器和端子排信息的进度条
导出的Excel保存在C盘根目录,如图5所示,文件名包含项目名和导出时间。
图5 导出文件
注意,没有关联功能区的连接器也会被导出,如图6所示,人工填写路径信息,说明可以写也可以不写。
图6 导出结果
导入路径信息的进度条如图7所示。
图7 填充路径的进度条
和传统手动导入路径相比,手动录入路径信息到Excel的步骤相同,其他步骤均由程序自动完成,节省了大量时间。
评论
有什么想说的在下面留言