CN105790843B - 一种适用于Profibus的光纤通信方法 - Google Patents
一种适用于Profibus的光纤通信方法 Download PDFInfo
- Publication number
- CN105790843B CN105790843B CN201410821989.2A CN201410821989A CN105790843B CN 105790843 B CN105790843 B CN 105790843B CN 201410821989 A CN201410821989 A CN 201410821989A CN 105790843 B CN105790843 B CN 105790843B
- Authority
- CN
- China
- Prior art keywords
- address
- frame
- optical port
- optical
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Small-Scale Networks (AREA)
- Optical Communication System (AREA)
Abstract
本发明涉及通信技术领域,具体的说是一种适用于Profibus的光纤通信方法。本发明在Profibus数据帧通过光路进行发送的过程中,包括以下步骤:在网络节点的LP端口接收电信号数据帧;在本地检测该数据帧的目的地址和源地址;根据源地址更新LP端口地址表,根据目的地址和两个光口的地址表选择发送策略:如果目的地址存在于某一光口地址表中,则从该光口发送该数据帧;如果目的地址不存在于任一光口地址表中,则从两个光口同时发送该数据帧。本发明可以直接将现有的使用电信号通信的Profibus总线扩展为光纤介质通信。
Description
技术领域
本发明涉及通信技术领域,具体的说是一种适用于Profibus的光纤通信方法。
背景技术
在现场总线通信媒介中,常用的传输介质有双绞线、电力***、同轴电缆等。传统的电通信介质布线较复杂,抗干扰能力相对较差,且对于拓扑结构的支持比较单一。相对于传统的电信号传输,光纤通信有着传输速率高、信道容量大、传输距离远、损耗低、抗干扰能力强等优点。近年来,光通信技术在高速现场总线通信领域的应用已成为一个研究热点。并且在很多场合得到了应用。随着现场总线网络化的发展趋势,需要通信***能够支持包括总线型、星系、环形、混合型在内的多种网络拓扑结构。
发明内容
针对现有技术中存在的上述不足之处,本发明提出一种适用于Profibus的光纤通信***的设计方法,使用一片FPGA,在FPGA内部实现了通信的物理层,数据链路层和网络层的功能。在OSI/RM(开放***互连参考模型)的物理层,数据链路层和网络层的功能。并着重在数据链路层和网络层实现了帧转发功能。
本发明为实现上述目的所采用的技术方案是:一种适用于Profibus的光纤通信方法,在Profibus数据帧通过光路进行发送的过程中,包括以下步骤:
在网络节点的LP端口接收电信号数据帧;
在本地检测该数据帧的目的地址和源地址;
根据源地址更新LP端口地址表,根据目的地址和两个光口的地址表选择发送策略:如果目的地址存在于某一光口地址表中,则从该光口发送该数据帧;如果目的地址不存在于任一光口地址表中,则从两个光口同时发送该数据帧;
在将光信号数据帧进行转发或转换为Profibus数据帧的过程中,包括以下步骤:
在网络节点的OP光口接收光信号数据帧;
在本地检测该数据帧的目的地址和源地址;
根据源地址更新OP光口地址表,根据目的地址、另外一个光口的地址表和LP端口地址表选择发送策略:如果目的地址存在于另外一个光口的地址表或LP端口地址表中,则从该光口或LP端口发送该数据帧;如果目的地址不存在于任一地址表中,则从该光口和LP端口同时发送该数据帧。
所述光信号数据帧包括:同步周期、帧起始字节、数据或控制位、目的地址、源地址、帧长度、数据区、帧结束字节。
所述根据源地址更新LP端口/OP光口地址表,包括以下过程:
初始化时,各地址表都为空;
在通过光纤收到的数据解包后,检测其源地址,如果是从第一光口收到的数据帧,且源地址不在本地地址表及第二光口可到达的地址表中出现,则将源地址添加至第一光口可到达的地址表中,表示第一光口可以到达该源地址;如果源地址在第二光口可到达的地址表中出现,则说明已拥有到达此源地址且更短的路径,不需再次添加,将此帧丢弃;如果是从第二光口收到的数据帧,且源地址不在本地地址表及第一光口可到达的地址表中出现,将源地址添加至第二光口可到达的地址表。
还包括:如果通过光纤收到的数据帧的源地址是本机地址,说明链路中出现环,为避免数据不停在线路上转发,直接将此帧丢弃。
如果第一光口在空闲状态下,无法正常收到相邻的节点发送的同步数据K28.5,则通过第二光口发布链路状态帧,即数据或控制位为1的控制帧;帧的数据区是第一光口可到达的地址表的内容;第二光口发生故障时,通过第一光口发送此控制帧。
接收到控制帧的光口将此光口对应表中所有在此控制帧中出现的地址删除,表示此光口已无法到达数据帧中的地址;同时将此控制帧通过另一光口继续发送;如果控制帧中的所有地址均未在表中出现,则停止转发此控制帧。
本发明具有以下优点及有益效果:
1.可以直接将现有的使用电信号通信的Profibus总线扩展为光纤介质通信。
2.支持多种拓扑结构,并具有一定的自适应功能。对双环网拓扑的支持提供了通信***的可靠性。
3.对帧内容进行解析,在进行多端口转发的时候具有更高的灵活性,可以有效减少网络流量。
附图说明
图1为本发明单个通信模块的数据传输三角形;
图2为帧转发方式的帧格式定义;
图3为本发明实验使用的冗余环网拓扑图;
图4为本发明实验使用的冗余环网在发生故障之后的拓扑图;
图5为本发明实验使用的冗余环网在经过故障自愈后的拓扑图;
图6为本发明通信模块的结构图。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
本发明使用帧转发方式实现了物理层、数据链路层及网络层内的操作。为实现上述目的,本发明采用以下技术方案:
形成各种不同网络拓扑的基本单位是网络节点,在本设计中,每个节点的功能可以简化为如图1所示的数据传输三角形。LP表示本地通信端口,是提供给本地的其他处理单元的接口。OP表示光口,每个节点有两个光口,数据可以通过光口发送并在光纤上传输,发送至与其连接的节点。如果是使用光中继的方式,数据传输仅存在与OP1和OP2之间。若作为在通信中的发送者或接受者,则需要同LP端口进行通信。
每次的数据发送、接收及处理的基本单位都为帧。帧转发方式的帧格式定义如图2所示。
8b/10b编码是一种通过将8bit数据编码为10bit数据在串行总线上传输,使数据流中的1和0的数量相等,以获得线路的直流平衡。在非直流平衡的高速串行通信线路中,当存在多个连续的逻辑0或逻辑1电平的时候,信号若随后发生转换,就会因为电压位阶的原因导致传输信号发生错误,直流平衡的最大作用就是避免在串行数据流中出现较长的0或1,从而解决这个问题。
为了能够获得更高的稳定性,在帧转发方式的设计中采用了8b/10b编码方式。SYN使用8b/10b编码中的10B编码K28.5(b'0011111010或b'1100000101)来同步。只有当收到3个连续的SYN之后,才认为线路进入可靠接收模式。分别采用8b/10b编码中的10B编码K27.7和K29.7来表示SOF和EOF。这是为了在接收端能够方便的辨识数据帧的开始与结束位置。D/C表示帧的类型是数据帧或控制帧,控制帧主要作用是在无法正确接收相邻节点发送的信号时,往相邻的节点发送自身的链路状态。DA和SA分别表示帧的目的地址和源地址。在进行帧转发的时候使用。LE表示数据区域的长度。DATA是存放数据的区域。
本***的节点模块采用FPGA实现。帧转发方式的结构如图6所示。图中靠近上部的Rx FIFO和Tx FIFO是本通信***为上层应用提供的操作接口。写入Tx FIFO的数据将通过光纤发送至其他现场总线的通信节点。从光纤接口接收的数据最终会被写入Rx FIFO,等待本地处理器读出。***中的FIFO都采用异步FIFO,异步FIFO与普通FIFO最大的不同在于异步FIFO的读写时钟不同,即分别采用独立的时钟进行读或写。异步FIFO多用在多时钟的模块间通信之中,实现数据在不同时钟域之间的传输。在光通信的接口中采用异步FIFO之后,可以将待发送或接收到的数据进行缓存,同时使得核心控制部分的时钟与光接口部分的时钟独立。
内部的控制逻辑都是以帧为数据单位进行处理的,所以所有FIFO写入或者读出也是以帧为单位的。本地通信接口处的Conveyer部分负责将待发送的数据组织成帧的方式,并根据两光口的地址表进行发送路径的选择,将数据传入第一光口或第二光口的Arbitrator部分。光口的Conveyer部分负责将从光路接收到数据拆包解析,根据本地通信口的地址表及另一光口地址表进行发送路径的选择。图中可以看到,每个接口都有两个数据来源。Arbitrator部分的主要作用是当Arbitrator的两路数据来源同时有效的时候进行裁决,使在同一时刻,只处理一路数据输入。
LP端的Conveyer首先将收到的数据帧解析,根据其DA及***内的3个地址表进行转发,如果需要转发至光口,则需要把数Profibus的据帧封装至光路定义的数据帧内。光口的Conveyer接收到数据,如果需要发送至另一光口,则直接将光路定义的帧转发。如果需要转发至本地端口,则把Profibus数据帧从光路数据帧中提取处来,转发至LP端口。
使用了帧转发策略,具体的步骤如下:
1.成帧:将待发送的数据组织成帧的方式,目的地址为字段填入目的地址DA,本地地址作为SA(认为设定或通过发送者提供)。D/C段设置为0表示数据。每个节点都会有3个数据表分别记录本地地址(表0),光口1可到达的地址(表1),光口2可到达的地址(表2)。初始化时,各表都为空。在此过程中,将SA添加到表0,表示本机通过本地数据端口可以到达SA。最后将数据发送至通过光纤与自己相连接的邻居。
2.地址表维护:将通过光纤收到的数据解包,检测其SA,如果是从光口1收到的数据帧,且SA不在表0及表2中出现,则将SA添加至表1,表示光口1可以到达SA地址。如果SA在表2中出现,则说明以拥有到达此SA地址且更短的路径,不需再次添加,且将此帧丢弃,因为正常情况下,相同的帧应该已经被光口2收到。如果是从光口2收到的数据帧,且SA不在表0及表1中出现,将SA添加至表2。
3.环网策略:如果通过光纤收到的数据帧SA是本机地址,说明链路中出现环,为避免数据不停在线路上转发,直接将此帧丢弃。
4.转发:通过光纤收到的数据解包,检测其DA,如果是从光口1收到的数据帧,检查表0和表2是否有DA,如果表0中有此DA地址,则将数据发送至本地数据端口,不在继续向下一节点发送。如果表2中有DA地址,则将数据发送至光口2,并且不向本地数据端口发送数据,此时,节点仅起到数据转发的作用。如果表0和表2中均无此地址,则同时向本地数据端口及光口发送此数据帧。如果数据包是从光口2收到的,则检查表0和表1,操作步骤与上述步骤相同。
5.链路状态发布:若光口1在空闲状态下,长时无法正常收到相邻的节点发送的同步数据K28.5,则通过另一光口光口2发布链路状态帧,即D/C段为1的控制帧。帧的数据区域是光口1可到达的地址表表1的内容。光口2发生故障时,通过光口1发送此控制帧。
6.地址表更新:接收到控制帧的光口将此光口对应表中所有在此控制帧中出现的地址删除。表示此光口已无法到达数据帧中的地址。同时将此控制帧通过另一光口继续发送。如果控制帧中的所有地址均未在表中出现,则停止转发此控制帧。
如图3-5所示,***支持冗余环网拓扑且在线路故障时可以快速自愈:
当链路为环网时,根据策略,接收到自身发送的数据将直接丢弃。当拓扑为图3所示时,考虑以下***建立地址表的过程:
时刻1:模块0发送DA为2,SA为0的数据帧。将地址0加入LP地址表。
时刻2:模块1收到模块0发送的数据帧。将地址0加入OP1地址表。
时刻3:假设由于线路的延迟,模块3通过OP2收到相同的数据帧。在模块1收到数据帧后收到数据。将地址0加入OP2地址表。
时刻4:模块1将数据帧转发至模块2及本地数据端口。模块2将地址0加入OP1地址表。
时刻5:模块3将数据帧转发至模块2及本地数据端口。模块2发现OP1地址表中已经有地址0,所以将此帧丢弃。
时刻6:模块2将数据帧转发至模块3及本地数据端口。模块3发现OP2地址表中已经有地址0,所以将此帧丢弃。
至此,此数据帧的一次发送及地址表的建立已完成。且对于模块1、2、3中都有最短到达模块0的最短路径信息。模块1通过OP1。模块2通过OP1,模块3通过OP2。同时,在此数据帧的发送过程中,此帧有且仅有一次到达各个模块的LP。
当模块2需要给模块0返回数据时,即DA为0,SA为2的数据帧。数据帧将沿着模块2,模块1,模块0的路径进行传输。同时在模块2的LP,模块1的OP2,模块0的OP2的地址表中添加地址2。所以当模块0再次发送DA为2,SA为0的数据帧的时候,由于OP2的地址表中包含地址2,已经有了通往地址2的路径,所以此帧不会再像第一次那样进行广播发送。可以有效减少链路的流量。
下面的实例说明了冗余链路的链路信息发布方法,如图4所示。
假设模块1,模块2之间的线路连接发生问题,此时启动链路恢复。
时刻1:检测到链路断开,模块1通过正常的光口OP1发送链路状态控制帧。帧的内容为链路故障光口OP2的地址表,内容为2。同时将OP2表清空。模块2通过正常的光口OP2发送链路状态控制帧。帧的内容为链路故障光口OP1的地址表,内容为0。同时将OP1表清空。
时刻2:模块0收到模块1发送的控制帧。将OP2中的所有出现在控制帧中的地址删除。此例中,删除地址2。同时把此帧通过OP1转发至模块0。
时刻3:假设模块2与模块3间的通信延迟大于模块1到模块0间的通信延迟,此时模块3收到模块2发送的包含地址0的控制帧。经比对,发现OP1中未出现0地址,停止转发并将此帧丢弃。
时刻4:模块0收到模块1发送的包含地址2的控制帧。将OP2地址表中的2删除。同时把此帧通过OP1转发至模块3。
时刻5:模块0收到模块1发送的包含地址2的控制帧。发现OP2中未出现地址2,停止转发并将此帧丢弃。
下面的实例说明了冗余链路的链路恢复方法,如图5所示。
时刻1:模块0发送DA为2,SA为0的数据帧。由于表1、表2中均没有地址2,将数据帧通过OP1、OP2发送。
时刻2:模块1收到模块0发送的数据帧。由于OP2线路故障,数据帧仅通过LP发送。
时刻3:由于线路延迟,假设此时模块3收到模块0发送的数据帧。将数据帧通过LP和OP1发送。
时刻4:模块2收到模块3发送的数据帧。将地址0加入OP2地址表。由于OP1线路故障,同时LP的地址表有地址2,则数据帧仅通过LP发送。
时刻5:模块2的LP端口进行数据响应,发送DA为0,SA为2的数据帧。此数据帧将通过模块2、模块3、返回至模块0的LP端口,同时建立相应地址表。链路恢复之后的状态如图所示。
Claims (6)
1.一种适用于Profibus的光纤通信方法,其特征在于,在Profibus数据帧通过光路进行发送的过程中,包括以下步骤:
在网络节点的本地电通讯端口LP端口接收电信号数据帧;
在本地检测该数据帧的目的地址和源地址;
根据源地址更新LP端口地址表,根据目的地址和两个光口的地址表选择发送策略:如果目的地址存在于某一光口地址表中,则从该光口发送该数据帧;如果目的地址不存在于任一光口地址表中,则从两个光口同时发送该数据帧;
在将光信号数据帧进行转发或转换为Profibus数据帧的过程中,包括以下步骤:
在网络节点的OP光口接收光信号数据帧;
在本地检测该数据帧的目的地址和源地址;
根据源地址更新OP光口地址表,根据目的地址、另外一个光口的地址表和LP端口地址表选择发送策略:如果目的地址存在于另外一个光口的地址表或LP端口地址表中,则从该光口或LP端口发送该数据帧;如果目的地址不存在于任一地址表中,则从该光口和LP端口同时发送该数据帧。
2.根据权利要求1所述的一种适用于Profibus的光纤通信方法,其特征在于,所述光信号数据帧包括:同步周期、帧起始字节、数据或控制位、目的地址、源地址、帧长度、数据区、帧结束字节。
3.根据权利要求1所述的一种适用于Profibus的光纤通信方法,其特征在于,所述根据源地址更新LP端口/OP光口地址表,包括以下过程:
初始化时,各地址表都为空;
在通过光纤收到的数据解包后,检测其源地址,如果是从第一光口收到的数据帧,且源地址不在本地地址表及第二光口可到达的地址表中出现,则将源地址添加至第一光口可到达的地址表中,表示第一光口可以到达该源地址;如果源地址在第二光口可到达的地址表中出现,则说明已拥有到达此源地址且更短的路径,不需再次添加,将此帧丢弃;如果是从第二光口收到的数据帧,且源地址不在本地地址表及第一光口可到达的地址表中出现,将源地址添加至第二光口可到达的地址表。
4.根据权利要求1所述的一种适用于Profibus的光纤通信方法,其特征在于,还包括:如果通过光纤收到的数据帧的源地址是本机地址,说明链路中出现环,为避免数据不停在线路上转发,直接将此帧丢弃。
5.根据权利要求1所述的一种适用于Profibus的光纤通信方法,其特征在于,如果第一光口在空闲状态下,无法正常收到相邻的节点发送的同步数据K28.5,则通过第二光口发布数据或控制位为1的链路状态控制帧;链路状态控制帧的数据区是第一光口可到达的地址表的内容;第二光口发生故障时,通过第一光口发送此链路状态控制帧。
6.根据权利要求5所述的一种适用于Profibus的光纤通信方法,其特征在于,接收到控制帧的光口将此光口对应表中所有在此控制帧中出现的地址删除,表示此光口已无法到达数据帧中的地址;同时将此控制帧通过另一光口继续发送;如果控制帧中的所有地址均未在表中出现,则停止转发此控制帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410821989.2A CN105790843B (zh) | 2014-12-25 | 2014-12-25 | 一种适用于Profibus的光纤通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410821989.2A CN105790843B (zh) | 2014-12-25 | 2014-12-25 | 一种适用于Profibus的光纤通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105790843A CN105790843A (zh) | 2016-07-20 |
CN105790843B true CN105790843B (zh) | 2018-04-24 |
Family
ID=56377844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410821989.2A Active CN105790843B (zh) | 2014-12-25 | 2014-12-25 | 一种适用于Profibus的光纤通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105790843B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107566042B (zh) * | 2017-08-28 | 2019-12-13 | 北京卓越信通电子股份有限公司 | 一种profibus冗余环网光纤收发器的实现方法 |
DE102020110753A1 (de) | 2020-04-21 | 2021-10-21 | Turck Holding Gmbh | Bus-Koppler für ein Netzwerk und Verfahren zum Betreiben eines Bus-Kopplers |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446131B1 (en) * | 1999-06-19 | 2002-09-03 | Hewlett-Packard Company | Bridges and other layer-two devices for forwarding MAC frames |
CN101611615A (zh) * | 2007-03-02 | 2009-12-23 | 西门子公司 | 网络节点中的冗余帧过滤 |
CN101719922A (zh) * | 2009-12-04 | 2010-06-02 | 上海交通大学 | Profibus-dp工业现场总线与无线zigbee间的协议转换装置和方法 |
CN101976074A (zh) * | 2010-11-03 | 2011-02-16 | 浙江工业大学 | 基于现场总线和控制网络的工业控制*** |
CN103428005A (zh) * | 2005-07-19 | 2013-12-04 | 罗斯芒特公司 | 具有以太网供电功能的接口模块 |
-
2014
- 2014-12-25 CN CN201410821989.2A patent/CN105790843B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446131B1 (en) * | 1999-06-19 | 2002-09-03 | Hewlett-Packard Company | Bridges and other layer-two devices for forwarding MAC frames |
CN103428005A (zh) * | 2005-07-19 | 2013-12-04 | 罗斯芒特公司 | 具有以太网供电功能的接口模块 |
CN101611615A (zh) * | 2007-03-02 | 2009-12-23 | 西门子公司 | 网络节点中的冗余帧过滤 |
CN101719922A (zh) * | 2009-12-04 | 2010-06-02 | 上海交通大学 | Profibus-dp工业现场总线与无线zigbee间的协议转换装置和方法 |
CN101976074A (zh) * | 2010-11-03 | 2011-02-16 | 浙江工业大学 | 基于现场总线和控制网络的工业控制*** |
Also Published As
Publication number | Publication date |
---|---|
CN105790843A (zh) | 2016-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4951280A (en) | Method and apparatus for configuring data paths within a supernet station | |
CN107508640B (zh) | 基于光纤通道技术的双环冗余自愈光纤网络构建方法 | |
CN107347027A (zh) | 一种基于EtherCAT的链路冗余通信*** | |
EP2887596A1 (en) | Network device and information transmission method | |
US20070153822A1 (en) | Media Access Control Device for High Efficiency Ethernet Backplane | |
CN103490961A (zh) | 一种网络设备 | |
CN105262789A (zh) | 基于fpga的mac层到mac层通信***及控制方法 | |
CN103716092A (zh) | 一种总线型网络中双向光纤通信的组网***及通信方法 | |
CN105553795B (zh) | 一种在工业以太网中传输标准以太网数据的方法 | |
CN105790843B (zh) | 一种适用于Profibus的光纤通信方法 | |
CN108063736A (zh) | 一种支持长距离电缆通讯的工业以太网交换机及控制方法 | |
JP2015119227A (ja) | 通信システム、通信装置、及びパス切り替え方法 | |
EP1988470B1 (en) | Network device and transmission method thereof | |
JP2008131614A (ja) | 運用保守管理フレームを処理する通信装置、データ構造及びプログラム | |
CN101072141B (zh) | 以太网接入转换装置、复用网关设备及接入转换方法 | |
CN101997745A (zh) | 基于fpga的e1插时隙及e1_ip数据汇聚混合接入装置及方法 | |
CN103124233B (zh) | 一种信号中继***及其实现方法 | |
CN101355601B (zh) | 数字微波***中的网络公务电话及其实现方法 | |
CN113938446A (zh) | 一种基于mlag环境的组播表项同步方法及设备 | |
CN114006785A (zh) | 一种单双绞线tsn无源耦合器及设计方法 | |
CN113238537A (zh) | 一种基于以太网的高速工业现场总线及其数据传输方法 | |
KR101442567B1 (ko) | 링 네트워크 토폴로지에서 프레임기반 라우팅을 이용한 프레임 무손실 통신 방법 | |
CN102150400A (zh) | 路由器及集群路由器 | |
CN205265697U (zh) | 一种基于标签交换技术的分组光传输终端芯片 | |
CN101141473A (zh) | 物理层与媒体访问控制层之间的复用传输装置与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Nanping Road in Dongling District of Shenyang city of Liaoning Province, No. 110168 16-2 Patentee after: Shenyang Zhongke CNC Technology Co.,Ltd. Address before: Nanping Road in Dongling District of Shenyang city of Liaoning Province, No. 110168 16-2 Patentee before: SHENYANG GOLDING NC & INTELLIGENCE TECH. Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |