发明内容
本发明实施例提出的一种IO-LINK端口扩展装置及方法,能够扩展IO-LINK物理端口,使得IO-LINK主站的一个物理端口可以接入多个IO-LINK从站设备,并能完全以IO-LINK方式进行通信,且使IO-LINK设备的选择没有限制,与常规的IO-LINK主站的物理端口接入方式一致。
第一方面,本发明实施例提供了一种IO-LINK端口扩展装置,包括IO-LINK主站以及集线器;所述IO-LINK主站与所述集线器通过IO-LINK通信进行通信;其中,
所述IO-LINK主站包括多个第一IO-LINK物理端口以及多个虚拟端口;所述集线器包括IO-LINK物理层、微控制器、多个第二IO-LINK物理端口以及多路开关;所述集线器通过IO-LINK通道接收IO-LINK主站命令,并通过所述微控制器控制所述多路开关的通断,使IO-LINK通信能在多个第二IO-LINK物理端口之间切换,从而实现通道复用;其中,所述虚拟端口数量与集线器上的第二IO-LINK物理端口数量相一致。
优选地,所述虚拟端口是IO-LINK协议栈程序和IO-LINK主站的物理端口驱动程序之间的中间件程序。
第二方面,本发明实施例还提供了根据第一方面所述的IO-LINK端口扩展装置的一种IO-LINK端口扩展方法,所述方法由IO-LINK主站执行,其包括:
读取接入的IO-LINK设备的设备参数;
根据读取的设备参数,判断所述接入的IO-LINK设备是否为集线器;
当判断所述IO-LINK设备为集线器时,读取所述集线器的端口状态;
根据所述集线器的端口状态动态申请虚拟端口,并依次对所述虚拟端口发送唤醒信号;
获取虚拟端口唤醒后的通信速率,并筛选出最高通信速率的虚拟端口;
根据所述最高通信速率的虚拟端口进行的通信状态,进行信道切换。
优选地,当虚拟端口进行非周期通信状态时,采用命令字方式进行信道切换;
当虚拟端口进行周期性通信状态时,采用时间片划分方式进行信道切换。
优选地,当虚拟端口进行非周期通信状态时,调用PreOp_TransportMsquence函数进行通信,并向集线器发送控制命令进行端口选择,以使得所述集线器接收所述选择端口命令后,通过所述微控制器控制多路开关,将IO-LINK通信连接到指定的所述第二IO-LINK物理端口上。
优选地,当虚拟端口进行周期性通信状态时,采用时间片划分方式进行信道切换之前,还包括:
获取每个虚拟端口的虚拟通道所采用的M序列类型及长度,并计算出一个M序列的通信时间;
将所述通信时间发送给集线器,以使得集线器根据所述通信时间设定定时器,来划分时间片。
优选地,当虚拟端口进入周期性通信状态后,还包括:
发送命令字Cycle_Tag至所述集线器,以通知所述集线器新一轮IO-Link周期开始,并根据所述集线器上的定时器设定的定时时间连续发送不同虚拟端口的M序列至所述集线器,以使得所述集线器将所述M序列发送至与所述集线器连接的IO-LINK从站设备进行通道切换;其中,在所述集线器接收到命令字后,所述集线器进入虚拟通道的进行通信,并启动用于探测M序列的结尾并进行信道切换的Change_Channel函数;其中,所述Change_Channel函数中的定时器Tm的定时时间为当前IO-LINK通信速率下发送的单个bit的时间Tbit的2倍,当Change_Channel探测到一个M序列通信完毕后,所述集线器发送命令至所述多路开关进行通道切换。
优选地,所述最高通信速率为236bps。
实施本发明实施例,具有如下有益效果:
1、能够扩展IO-LINK物理端口,使得IO-LINK主站的一个物理端口可以接入多个IO-LINK从站设备,并能完全以IO-LINK方式进行通信,且使IO-LINK设备的选择没有限制,与常规的IO-LINK主站的物理端口接入方式一致,能够让一个8端口的IO-LINK主站连接64路IO-LINK从站设备,充分利用了IO-LINK主站资源,降低了使用IO-LINK的技术的成本。
2、本申请能在集线器中传递真正的IO-LINK信号,而不仅仅是开关量信号。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一实施例:
参见图1,本发明第一实施例提供了一种IO-LINK端口扩展装置,包括IO-LINK主站以及集线器;所述IO-LINK主站与所述集线器通过IO-LINK通信进行通信;其中,
所述IO-LINK主站包括多个第一IO-LINK物理端口以及多个虚拟端口;所述集线器包括IO-LINK物理层、微控制器、多个第二IO-LINK物理端口以及多路开关;所述集线器通过IO-LINK通道接收IO-LINK主站命令,并通过所述微控制器控制所述多路开关的通断,使IO-LINK通信能在多个第二IO-LINK物理端口之间切换,从而实现通道复用;其中,所述虚拟端口数量与集线器上的第二IO-LINK物理端口数量相一致。
参见图1,在本实施例中,每个虚拟端口对应集线器上的一个物理端口,两者之间采用IO-LINK协议进行通信。而多个虚拟端口采用分时复用的方式,共同使用一个主站上的物理端口。虚拟端口根据所连接的是普通IO-LINK设备还是IO-LINK集线器动态申请。当连接普通IO-LINK设备时,虚拟端口与主站物理端口一一对应。当连接IO-LINK集线器时,由于集线器本身也是一个IO-LINK从站设备,主站与集线器先进行通信,交换集线器本身信息,主站根据集线器的物理端口数量,动态申请相同数量的虚拟端口。然后主站通过虚拟端口与连接在集线器上的IO-LINK从站进行通信。
在本实施例中,所述虚拟端口是IO-LINK协议栈程序和IO-LINK主站的物理端口驱动程序之间的中间件程序。对于IO-LINK协议栈层,它提供了IO-LINK访问的应用程序接口(API)。主要的API函数有PreOp_TransportMsquence(Port,State,*OutMsg,*InMsg)和Op_TransportMsquence(*OutMsg[],*InMsg[])。此外虚拟端口层还提供主站与集线器交换信息的函数Hub_Control(cmd)。
其中,函数PreOp_TransportMsquence是在IO-LINK规范中的Starup和PreOperate状态负责进行IO-LINK的Msquence序列的发送与接收,其中参数Port是端口号,State是当前IO-LINK通信所处的状态,取值范围为Starup和PreOperate;OutMsg是发送数据,InMsg是接收的数据,具体执行过程参见图2。
其中,函数Op_TransportMsquence是在IO-LINK规范中的Operate状态中的M序列的发送与接收函数。其中参数OutMsg[]是各虚拟通道待发送的M序列信息的数组。InMsg[]是各虚拟通道的待接收数据数组,K是虚拟通道总数,具体执行过程参见图3。
其中,Hub_Control是IO-LINK主站用来控制集线器的函数,参数CMD是发送给集线器的命令。Hub_Info是集线器返回来的信息。具体地,CMD参数有:Switch_Port,StartUP_Mode,Op_Mode,Pre_Mode,Cycle_Tag。分别用于通知集线器切换通道、进入Starup模式、进入Operate模式、进入PreOperate模式,一个周期的数据发送结束。Hub_Control所利用的也是IO-LINK信道,并使用Type0的M序列进行通信。
参见图4,在本实施例中,所述集线器包括IO-LINK物理层、微控制器、多个第二IO-LINK物理端口以及多路开关;所述集线器本身可以被IO-LINK主站识别为一种IO-LINK设备,但是集线器只实现了IO-LINK协议的物理层(PL)与数据链路层(DL层),并且永远只会处于Startup状态,即只能与IO-LINK主站以Type-0的M序列交换Page1页面参数。其中,Page1页面的参数如表1所示。当集线器连接于IO-LINK主站物理端口上时,按照IO-LINK协议规则,IO-LINK主站会自动读取其Page1页面的从地址0x02到0x0B的参数,从获取的厂家ID和设备ID,IN-LINK主站就可以知道所连接的是集线器。并且根据0x05可得知集线器所连接的IO-LINK设备情况。
表1集线器的Page1参数
所述集线器通过IO-LINK通道接收主站命令,并通过微控制器控制多路开关的通断,使IO-LINK通道能在多个物理端口之间切换,从而实现通道复用。而集线器本身的物理层芯片则在多路开关之前就连接在IO-LINK通道上,所以集线器本身是一直可以监听IO-LINK上的通信。根据IO-LINK协议,Page1上的地址为0x03,0x05,0x06参数为只读参数。普通的IO-LINK设备收到读这两个地址的时候,会发生错误,设备一般不会理会其发送的命令。但是本专利设计的集线器能够接收这两个地址的读写命令。IO-LINK主站虚拟端口层的Hub_Control所发送的命令,其实就是主站发送写地址0x03的命令。预设集线器最多的端口数量最多为8,则在地址0x05保存了一个八位二进制字,每一位标识集线器端口状态,0标识没有接IO-LINK设备,1标识有接IO-LINK设备。主站获取集线器端口状态后,申请相应数量的虚拟端口。
综上,本发明实施例能够扩展IO-LINK物理端口,使得IO-LINK主站的一个物理端口可以接入多个IO-LINK从站设备,并能完全以IO-LINK方式进行通信,且使IO-LINK设备的选择没有限制,与常规的IO-LINK主站的物理端口接入方式一致,能够让一个8端口的IO-LINK主站连接64路IO-LINK从站设备,充分利用了IO-LINK主站资源,降低了使用IO-LINK的技术的成本。
本发明第二实施例:
本发明第二实施例还提供了一种IO-LINK端口扩展方法,所述方法由IO-LINK主站执行,其包括:
S101,读取接入的IO-LINK设备的设备参数,并根据读取的设备参数,判断所述接入的IO-LINK设备是否为集线器。
S102,当判断所述IO-LINK设备为集线器时,读取所述集线器的端口状态,并根据所述集线器的端口状态动态申请虚拟端口,依次对所述虚拟端口发送唤醒信号。
S103,获取虚拟端口唤醒后的通信速率,并筛选出最高通信速率的虚拟端口。
在本实施例中,所述IO-LINK主站发送wakeup信号的方式唤醒并判断IO-LINK设备。所述IO-LINK通信包括三种通信速率4.3bps、36bps以及236bps,为了避免设备通信速率太慢,造成通信周期过长,在本实施例中,只支持在虚拟端口上单一的通信速率,通过限制只允许最高通信速率的IO-LINK设备方能连接到集线器上,对于不满足规定速率的虚拟端口停止使用。并通过写集线器的0x05地址,通知集线器更新端口使用情况参数。
S104,根据所述最高通信速率的虚拟端口进行的通信状态,进行信道切换。
在本实施例中,根据不同通信状态的特性,采用了两种技术来复用信道,具体地,当虚拟端口进行非周期通信状态时,采用命令字方式进行信道切换;当虚拟端口进行周期性通信状态时,采用时间片划分方式进行信道切换。
其中,在一种实现方式中,当虚拟端口进行非周期通信状态时,调用PreOp_TransportMsquence函数进行通信,并向集线器发送控制命令进行端口选择,以使得所述集线器接收所述选择端口命令后,通过所述微控制器控制多路开关,将IO-LINK通信连接到指定的所述第二IO-LINK物理端口上。具体地,当虚拟端口连接设备均处于Startup或PreOperate状态时,这两种状态都是非周期通信状态,此时没有通信实时性的要求,采用命令字方式进行信道切换。此时调用PreOp_TransportMsquence函数进行通信(如图3所示)。此函数首先等待获取主站物理端口的互斥量Mutex,以获得使用权限,取得权限后立即向集线器发送控制命令进行端口选择,即写集线器的地址0x03,命令字为8位2进制字节。命令格式的一种实现是:低四位表示端口号,高四位表示命令类型。集线器收到主站的选择端口命令后,会控制多路开关,将IO-LINK信道连接到指定的端口上。然后主站就使用虚拟端口进行一次IO-LINK通信。通信完毕后释放Mutex,以便其他虚拟端口使用物理信道。
在另一种实现方式中,当虚拟端口进行周期性通信状态时,采用时间片划分方式进行信道切换之前,还包括:
获取每个虚拟端口的虚拟通道所采用的M序列类型及长度,并计算出一个M序列的通信时间;
将所述通信时间发送给集线器,以使得集线器根据所述通信时间设定定时器,来划分时间片。具体地,当虚拟端口处于Operate状态,需要进行周期性通信,此时对数据有实时性要求。如果再采用写集线器命令字来切换信道会产生较大的延迟。为此采用了时间片划分方式进行信道切换。在进入Operate状态之前,主站已经获知了每个虚拟通道所采用的M序列类型及长度,而通信速率又约定一致,所以可以大致计算出一个M序列的通信时间。主站将计算出来的时间片信息发送给集线器,集线器依据此信息设定定时器,来划分时间片。
其中,当虚拟端口进入周期性通信状态后,还包括:发送命令字Cycle_Tag至所述集线器,以通知所述集线器新一轮IO-Link周期开始,并根据所述集线器上的定时器设定的定时时间连续发送不同虚拟端口的M序列至所述集线器,以使得所述集线器将所述M序列发送至与所述集线器连接的IO-LINK从站设备进行通道切换;其中,在所述集线器接收到命令字后,所述集线器进入虚拟通道的进行通信,并启动用于探测M序列的结尾并进行信道切换的Change_Channel函数;其中,所述Change_Channel函数中的定时器Tm的定时时间为当前IO-LINK通信速率下发送的单个bit的时间Tbit的2倍,当Change_Channel探测到一个M序列通信完毕后,所述集线器发送命令至所述多路开关进行通道切换,具体参见图6以及图7。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。