二维数组范文
二维数组范文(精选3篇)
二维数组 第1篇
炼铁高炉的供配料系统, 主要包括槽下备料设备、排料设备、炉顶布料设备等, 是高炉生产中的关键环节, 其配料的科学性、合理性、上料的速度以及炉顶布料的效率, 都直接影响着高炉生产的顺行。在皮带上料工艺的高炉中, 槽下备料一般由焦仓、矿仓以及相应的振筛、称量斗等设备组成, 完成焦碳、矿石的筛分、称重和备料;炉顶设备则主要由料罐、分料器、上密封阀、下密封阀以及布料器和料位计等设备组成, 完成炉顶的布料。从槽下焦仓、矿仓排缷出的焦碳、矿石分别由焦输出皮带和矿输出皮带运转到主上料皮带, 一直输送到炉顶进行布料入炉, 需要长达300~400 m的运输距离和将近4~5min的运送时间。如此长的上料距离和上料时间, 一方面, 在槽下未设中间斗的工艺下, 槽下焦仓、矿仓称量斗中的料一旦排缷到输出皮带上, 就意味着进入上料流程, 如果炉顶布料设备出现异常, 除了停止上料主皮带和槽下输出皮带外, 没有更好的控制手段;另一方面, 如果槽下的焦、矿仓的备料和排料不提前进行, 而等炉顶布料完成后再依次进行的话, 这样的上料速度和布料效率远远满足不了生产的要求。
因此, 要提高上料速度和布料效率, 满足高炉生产的需要, 就必须充分考虑槽下所设计的焦、矿仓的数量、皮带速度和长度等因素, 并根据槽下和炉顶设备状态对备料、排料、布料等循环过程做出预测和准备, 对皮带上的料流进行准确的跟踪, 提高上料速度和布料效率。
1 料单原理及设计
1.1 皮带上料生产工艺
皮带上料的高炉上料系统主要由矿仓、焦仓、振动筛以及称量斗组成。备料系统分为矿槽和焦槽两个部分, 焦仓、矿仓并列布置在主上料皮带同侧。焦炭和矿石在槽下进行筛分后, 合格的焦炭、矿石装入称量斗中称量待放;上料系统, 主要由焦输出皮带、矿输出皮带、上料主皮带以及炉顶布料设备组成。正常生产时, 矿、焦称量斗闸门按备料程序设定的排料顺序打开, 将焦碳、矿石卸入焦输出皮带和矿输出皮带, 再通过输出皮带和矿输出皮带转运至上料主皮带, 运至炉顶料斗中, 通过分料器进入料罐, 再通过布料器布料入炉。
1.2 料单设计原理
为了科学合理的实现槽下的供配料, 提高上料的速度以及炉顶布料的效率, 利用二维数组, 以料单形式, 根据生产设备的状态和布料结果, 进行循环指针步进, 并提前做出预测, 实现备料、排料以及布料等循环过程。这里以某钢厂皮带上料工艺的高炉为背景, 以槽下5个焦仓、13个矿仓、主皮带370 m, 槽下焦、矿输出皮带最远150 m, 皮带速度为2 m/s, 炉顶双料罐、无料钟等主要工艺设备为例, 介绍一组高炉供配料料单的设计原理, 主要包括矿仓备料代号表单、焦仓备料代号表单、排出方式表单、布料代号表单、上料周期控制表单。
(1) 矿仓备料代号表单
主要功能是用来定义料批中矿仓的备料代号, 具体定义该备料代号下选中的备料矿仓及其备料重量。考虑到矿仓的数量多, 输出皮带相对较长, 它的不同组合以及不同的排料顺序, 直接影响着排料、布料效率, 因此, 对每个备料代号下选中的矿仓, 定义了最优的排料方式。按照上述功能, 设计如表1所示的表单, 用K[1..7][0..14]二维数组定义来定义单元格的设定值。数组K[x]中, x∈ (1..7) 整数, 其存放的数值为备料代号 (1~7) ;数组K[x][y]中, x∈ (1..7) 整数、y∈ (1..13) 整数, 其存放的数值为备料代号K[x]下, 矿仓号y中设定的备料重量 (为0是代表没有中) ;数组K[x][14]中, x∈ (1..7) 整数, 其存放的数值为备料代号K[x]下的各矿仓的排出方式设定值 (见后排出方式表单设计原理) 。
(2) 焦仓备料代号表单
主要功能和原理除与矿仓备料代号表单相同, 由于焦仓数量少, 这里不再设置“排出方式”, 而是按照焦仓编号由小到大的顺序进行排料, 用J[1..7][0..5]二维数组来定义单元格的设定值。其数组单元存放与上述矿仓备料代号表单基本相同, 为区别矿仓备料代号, 这里焦仓备料代号用11~17来定义, 如表2所示。
(3) 排出方式表单
高炉冶炼中所使用的矿料种有很多种, 如球团、烧结、块矿、杂矿等, 这样, 一般大型高炉都会配备多个矿仓。根据高炉炉况和炉内矿料逐层分布的工艺特点, 不同矿料种的入炉也就有严格的顺序, 而各矿仓输出皮带至主上料皮带乃至炉顶的距离也存在着时间上的差异。为了对矿仓放料顺序进行合理组合, 预测各矿仓输出皮带的排料时间, 提高上料效率, 确保主上料皮带料面的连续性和均匀性, 特设计了矿仓的排出方式表单。它主要用来定义矿仓备料代号表单中已经选中并备妥矿仓的排料顺序。每种排料方式下, 对应着矿仓备料代号表单中所选中矿仓的最优排料顺序定。按照上述功能, 设计如表3所示的表单, 用M[1..5][0..13]二维数组定义来定义单元格的设定值。数组M[x]中, x∈ (1..5) 整数, 其存放的数值为排出方式代号 (1~7) ;数组M[x][y]中, x∈ (1..5) 整数、y∈ (1..13) 整数, 其存放的数值为排出方式[x]下, 矿仓号y在所有选中矿仓中的排出顺序号, 如1, 2, 3等, 如表3所示。
(4) 布料代号表单
高炉生产中, 岗位操作工按照炉长给定的料种、批重, 根据设备的特性以及长期的实践经验进行布料参数的设定。炉顶布料设备的参数, 包括矿石或焦炭入炉时布料器的倾斜角度 (α) 、布料圈数 (β) 、料流阀的开度 (γ) 以及探尺料线, 倾斜角度α决定布料的环, 布料圈数β与节流阀的开度γ, 决定着炉料在布料层的分布, 探尺的料线用来探测炉内料面的高度。理论上, 设定了批重和布料圈数, 也就决定了料流阀的开度。而实际应用中, 岗位操作工根据每批料的布料结果, 需要适时的修正料流阀的开度, 以保证按设定布料圈数进行布料。根据高炉多环布料工艺要求, 本表单设计为一个类4810的三维表格。表格的行名称为布料代号, 每个代号对应倾动角度、布料圈数、料流阀开度以及设定的料线等四个控制项。无料钟炉顶通常是11环生产工艺, 这里以5环的表单为例进行说明, 用B[1..4][1..7][0..2]三维数组来定义单元格的设定值, 如表4所示。数组B[x]中, x∈ (1..4) 整数, 其存放的数值为布料代号 (1~4) ;数组B[x][y][z]中, x∈ (1..4) 整数、y∈ (1..5) 整数、z∈ (1..2) 整数, 其存放的数值为布料代号B[x]下, 第y环布料参数倾动角度 (B[x][y]) 、布料圈数 (B[x][y]) 的设定值;B[x]、B[x]中, x∈ (1..4) 整数, 其存放的布料代号B[x]下料流阀的开度设定值和料线设定值。
(5) 上料周期控制表单
高炉上料工艺的每个批料由一个矿批和一个焦批组成, 按照炉顶布料参数设定的装料制度, 炉顶装完一个矿批和一个焦批为一个料批周期, 高炉上料和布料以料批周期循环方式周而复始进行。上料周期控制表单是所有这些配料表单的主控表格, 用来定义每个料批周期所对应的上料和布料参数, 并根据步进指针, 控制料批周期的循环运行。这里设定了12个周期, 用数组C[1..3][1..15]来存放单元格的设定值, 如表5所示。
2 料单工作流程
在炼铁高炉的生产中, 工艺技术人员根据设备、原料以及炉况的实际情况, 制定相应的生产工艺数据, 岗位操作人员利用计算机控制系统开发的上述表单界面, 自动的转换成料批的备料、排料以及布料策略数据。一个料批要按顺序经历备料、排料、布料三个环节, 而从工艺特点及设备控制角度, 备料、排料和布料又是三个相对独立的过程, 为了提高上料速度和布料效果, 在表单的应用和实现过程中, 设置了备料、排料和布料三个步进指针, 这样, 当上一批料备料完成后, 无需等待其后续的排料、布料环节, 而直接根据设备的状态和步进条件, 进行下一批料的备料。排料、布料环节也按同理进行步进控制, 其实现和处理流程如图1所示。
在工作流程中, 初始化工作就是将高炉工长下达的工艺配料、布料策略数据自动转换为上述各料单的设定值, 同时对备料、排料、布料指针以及程序周期进行复位。一旦供配料功能启动后, 各料单的设定值就被存储到设计的数组里, 并且所有指针都指向第一个料批相关的表单。随着备料、排料、布料设备状态及其满足条件的变化, 根据各指针的步进, 存储料单数组的指针也同步进行步进, 从而获取相应的设定值和控制参数, 自动的按工长给定的工艺配料、布料策略实现高炉的上料。考虑到设备故障及其它异常情况的发生, 还设置了周期修改和强制执行的功能, 这样可以根据现场的实际情况, 将步进指针指强制定位, 并且保证在执行完成当前周期后马上生效, 方便了修改, 灵活了操作。
正常生产时, 在上料周期控制表中读取备料指针P备, 取出指针所指向的布料代号C[P备], 判断是备焦代号还是备矿代号。从焦 (矿) 仓备料代号表单中查得选中的焦 (矿) 仓号和设定重量, 备料联锁条件具备时, 自动启动焦 (矿) 仓的振筛、给料机, 将原料仓内焦 (矿) 料按照设定重量进行筛分, 装入称量斗内。当称量斗内焦 (矿) 料重量达到设定重量时, 其对应的振筛、给料机将依次停机, 完成本周期备料, 备料指针步进到下一周期。料仓备料过程如图2所示。
3 实现的效果
基于二维数组的高炉料单设计, 在实现上有以下几方面突出的效果:
(1) 利用二维数组的存储结构特点, 提高了运算速度和效率, 优化了资源占用。
在对设定的料单数据进行查表和定位时, 需要检索大量的数据, 其存储结构的合理性, 直接影响着检索的效率。在二维数组存储结构的遍历算法中, 主要通过指针和数组的数组两种方式进行定位, 提高了运算速度和效率, 并且减少了控制系统CPU的资源占用。
(2) 以关联表单形式, 改变了高炉传统的槽下备料和炉顶布料分立的局面, 减化了操作。
传统高炉的料单分别在槽下和炉顶设置备料和布料数据, 槽下设定料单的同时, 炉顶也必须设定料单, 而且两个料单的内容要完全一致。基于二维数组的高炉料单, 以上料周期控制表单为主键, 与其它表单进行关联, 并以数组形式进行存储和查表, 减化了操作流程, 更趋合理。
(3) 利用堆栈指令和取模MOD运算, 可以方便的识别和跟踪料流。
根据排料方式, 对选中的料仓进行排料的同时, 用堆栈的“先进先出”原理, 对仓号进行堆栈处理, 可以准确的记录料批的料头和料尾, 再通过输出皮带和主上料皮带上的料流检测开关, 实现对料流的模拟和跟踪。而对于多料批的判断, 则通过取模MOD运算, 根据余数达到识别的目的。
(4) 设备故障时指针的强制和例外处理, 确保了上料效率。
用多指针进行料单的控制, 指针各司其职, 有机配合, 可以实现同一料单下的备料、排料、布料的所有参数传递及其控制。而当现场发生设备故障或料单设定异常时, 通过周期指针的修改与强制, 使得执行完当前周期后, 新设定指针马上生效, 从而避免料单紊乱影响上料故障的发生。
4 结语
二维数组 第2篇
本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。
要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。
这个要求就不是 ORDER BY 能解决的问题了。因此翻看 PHP手册查找到了如下方法,做此笔记。
代码:
二维数组 第3篇
#include#includeint main{ int(*p)[4] = (int (*)[4])malloc(12 * sizeof(int));//数组指针 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) {*(*(p + i) +j) = i * 4 + j + 1 ; } } for ( i = 0; i < 3; i++) { for (j = 0; j < 4; j++) {printf(“%dt”, *(*(p + i) + j)); } } printf(“n”); system(“pause”); return 0;}
方法二:
二维数组范文
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。