西门子中国总代理商|驱动器代理商

2025-05-30 08:18 114.95.101.251
发布企业
上海兆维智控科技有限公司商铺
认证
资质核验:
已通过营业执照认证
入驻顺企:
1
主体名称:
上海兆维智控科技有限公司
组织机构代码:
91310120MAEBD1A69W
报价
请来电询价
品牌
西门子
型号
模块
产地
德国
关键词
PLC,CPU,触摸屏,变频器,交换机,电机,电线,电缆,低压,
所在地
上海市奉贤区环城西路3111弄300号2幢1层
联系电话
15618725685
全国服务热线
15618725685
经理
岳经理  请说明来自顺企网,优惠更多
请卖家联系我
15618725685

产品详细介绍

数据结构 算法效率

一、问题背景

为了让您更好的理解此贴,请先移驾看帖子

【万泉河】我现在告诉你们不用M和T的程序好在哪里

中Zane版在44楼提出的问题,

 

本帖要说的就是IO地址冲突检测,也就是IO地址性检测中,“空间换时间”策略的应用。

二、由来

在帖子[旧事]--初踏征途实现了地址冲突检测的功能,但由于对数据组织的仓促,以至于在做地址雷同查找操作时(查找历史数据中是否已经存在当前的设定值),使用了遍历存储单元的方法,查找效率低下,当IO点的规模越大,需要进行的比较操作的次数越多

当时手头有别的事情要做,也就没有再深究。

原来的数据规划如图所示

数据块DB中存储了所有有有效的历史数据,每一批历史数据由两部分组成,A区(输入I地址)数据(包含4个DWORD数据)和B区(输出O地址)数据(3个DWORD数据),第个DWORD包括IO地址的字节号WORD和位号WORD,图示共有三批历史数据、一批当前数据,

算法:分别把当前批数据中的A区数据中的每个数据与每批历史数据中A区中的每个数据做比较,当前批数据中的B区数据中的每个数据与每批历史数据中B区中的每个数据也做比较,如果数值相同,则使能输出标志Same。

上个看《算法(第4版》

3.4节的“散列表”(HashTable),突然想起来可以把数据再重新组织一下,提高查找效率,于是有了此帖。

三、改进

现将数据重新组织如下,IO地址格式为Byte.Bit,每个Byte有8个Bit,这里使用一个包含8个数据类型为INT元素的数据代表一个寻址字节Byte,在博途平台下的PLC数据类型中我们新建一个名为BitsTable的数据类型,它包含一个数组,有8个INT类型的元素,我们将其默认值设为“-1”(表示初始状态)而不是“0”;

我们在全局数据块DB中,建立一个包含元素类型为“BitsTable"的数组,并将其命名为”AddressTable",或者为“BytesTable"则更容易理解,

至此,我们建立了一个可以形象为如下图所示的表格

四、算法描述

至此,我们再处理IO地址冲突检测就方便多了,当设定值Buffer中ByteSet和BitSet在合法范围内时,如ByteSet=0,BitSet=3时,我们只需要直接使用数组的索引找到AddressTable[0],再找到其中的元素BitsTable[3],即将对应的ByteSet、BitSet值代入并判断表达式”AddressTable[ByteSet].BitsTable[BitSet]= -1“是否成立(当值为”-1“时表示此地址I0.3(以输入I为例)未被使用,执行如下语句:

AddressTable[ByteSet].BitsTable[BitSet]= BitSet;    //set value of BitSet to BitsTable[BitSet]

ByteSet :=-1;

BitSet :=-1;

将BitSet值写入对应的数组元素,并将地址设定Buffer中的ByteSet和BitSet初始为”-1“,为下次地址输入作准备,如果输入ByteSet=0,BitSet=3时,

IF AddressTable[ByteSet].BitsTable[BitSet]= -1 THEN

    #AddressAlreadyExists:= TRUE;    //output"AddressAlreadyExists" bit

算法简图如下:

功能块FB的接口如图,

块内做了两个辅助功能,ResetChannel和ResetAllChannel,用来将”-1“赋值给BitsTable[]中的单个元素,和所有元素,对接口进行修改后,还可以复位某个AddressTable[k],或者连续几个

AddressTable[k] -- AddressTable[k+n],有兴趣可自行更改。


所属分类:中国电工电气网 / PLC
关于上海兆维智控科技有限公司商铺首页 | 更多产品 | 联系方式 | 黄页介绍
成立日期2025年02月21日
法定代表人汤忠伟
注册资本218
主营产品我们是西门子工控产品专业服务提供商,欢迎来电来函咨询,合作共赢,共同发展!
经营范围一般项目:技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;软件开发;电子元器件与机电组件设备销售;电子元器件批发;工业自动控制系统装置销售;电气设备销售;电气设备修理;仪器仪表销售;仪器仪表修理;工业机器人安装、维修;工业机器人销售;专用设备修理;计算机及通讯设备租赁;机械设备租赁;电子产品销售;五金产品零售;金属材料销售;办公设备耗材销售;互联网销售(除销售需要许可的商品);日用品销售;办公用品销售;人工智能应用软件开发;人工智能基础软件开发;人工智能硬件销售;人工智能行业应用系统集成服务;人工智能公共数据平台;信息系统集成服务;人工智能双创服务平台;网络技术服务;计算机系统服务;电子、机械设备维护(不含特种设备);普通机械设备安装服务;会议及展览服务;市场营销策划;体验式拓展活动及策划;知识产权服务(专利代理服务除外);版权代理;科技中介服务;租赁服务(不含许可类租赁服务);税务服务;计算机软硬件及辅助设备零售;通用设备修理。(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)
公司简介SIEMENS可编程控制器1、SIMATICS7系列PLC:S7-200、S7-1200、S7-300、S7-400、ET-2002、逻辑控制模块LOGO!230RC、230RCO、230RCL、24RC、24RCL等3、SITOP直流电源24VDC1.3A、2.5A、3A、5A、10A、20A、40A可并联.4、HMI触摸屏TD200TD400CK-TPOP177TP177,MP277MP377 ...
公司新闻
顺企网 | 公司 | 黄页 | 产品 | 采购 | 资讯 | 免费注册 轻松建站
免责声明:本站信息由上海兆维智控科技有限公司自行发布,交易请核实资质,谨防诈骗,如有侵权请联系我们   法律声明  联系顺企网
© 11467.com 顺企网 版权所有
ICP备案: 粤B2-20160116 / 粤ICP备12079258号 / 粤公网安备 44030702000007号 / 互联网药品信息许可证:(粤)—经营性—2023—0112