发明内容
有鉴于此,本发明提供了一种现场总线网络控制系统及其网络诱导延时计算方法,无需做全系统时钟同步,可有效简化工业通信的复杂度。
本发明提供了一种现场总线网络控制系统网络诱导延时计算方法,所述方法包括:
在所述现场总线网络控制系统中某回路的第k轮询周期内,所述k≥2且为正整数:
记录该回路中网络调度管理器NSM向该回路中控制器/执行器节点C/AN发出请求报文的时刻t5,j(k),以及所述C/AN接收完毕所述NSM发送的请求报文的时刻t6,j(k);
提取保存的所述回路的第k-1轮询周期中所述C/AN接收所述NSM转发数据的网络诱导延时τmc(k-1)和所述NSM与所述C/AN之间的时间差△τmc(k-1);
根据式:τmc(k)=τmc(k-1)+((t6,j(k)-t5,j(k))-△τmc(k-1)),计算所述第k轮询周期内的所述C/AN接收所述NSM转发数据的网络诱导延时τmc(k)。
进一步,在记录的t5,j(k)和t6,j(k)之后,所述方法还包括:根据式:△τmc(k)=t6,j(k)-t5,j(k),计算所述第k轮询周期内所述NSM与所述C/AN之间的时间差△τmc(k);
在计算得到τmc(k)和△τmc(k)之后,所述方法还包括:保存τmc(k)和△τmc(k)。
进一步,所述方法还包括:
在所述回路的所述第k轮询周期内:
记录所述NSM向该回路的传感器节点SN发送请求报文的时刻t1,i(k);
提取保存的所述回路的第k-1轮询期内所述NSM向所述SN发送请求报文的时刻t1,i(k-1);
根据式:τbd(k)=t1,i(k)-t1,i(k-1)-T,计算其它回路对本回路的影响延时τbd(k),其中T为轮询周期;
保存t1,i(k)为所述回路的第k+1轮询周期计算τbd(k+1)做准备。
进一步,所述方法还包括:
在所述回路的所述第k轮询周期内:
记录所述SN接收所述NSC发送的请求报文的时刻t2,i(k)、所述SN根据所述NSC发送的请求报文做出应答报文的时刻t3,i(k)、所述NSM接收完毕所述SN发送的应答报文的时刻t4,i(k);
根据式:τsm(k)=[(t4,i(k)-t1,i(k))-(t3,i(k)-t2,i(k))]·ξ,计算所述SN上传数据至所述NSM的网络诱导延时τsm(k),其中ξ为所述SN返回的应答报文包长度与总报文包长度的比值。
进一步,所述方法还包括:
在所述回路的所述第k轮询周期内:
记录所述NSM向所述C/AN发出请求报文的时刻t5,j(k);
根据式:τmd(k)=t5,j(k)-t4,i(k),计算所述NSM准备转发数据至所述C/AN所需的处理时间τmd(k)。
进一步,所述方法还包括:
在所述回路的所述第k轮询周期内:
计算所述C/AN控制算法运算处理的时间τcd(k)和被控对象的自身延时τp(k);
根据式:τ(k)=τsm(k)+τmd(k)+τmc(k)+τbd(k)+τcd(k)+τp(k),计算所述回路所述第k轮询周期内的总网络诱导延时τ(k)。
进一步,所述方法还包括:
在该回路的第1轮询周期内:
记录所述NSM向所述SN发送请求报文的时刻t1,i(1);
记录所述NSM向所述C/AN发出请求报文的时刻t5,j(1)、所述C/AN接收完毕所述NSM发送的请求报文的时刻t6,j(1)、所述C/AN根据所述NSM的请求报文向所述NSM做出应答报文的时刻t7,j(1)、所述NSM接收完毕所述C/AN发送的应答报文的时刻t8,j(1);
根据式:τmc(1)=[(t8,j(1)-t5,j(1))-(t7,j(1)-t6,j(1))]·η或τmc(1)=通信报文包大小×通信速率,计算得到τmc(1),其中,η表示请求报文包长度与总报文包长度的比值;
根据式:△τmc(1)=t6,j(1)-t5,j(1),计算得到△τmc(1);
保存t1,i(1)、τmc(1)和△τmc(1)为该回路的第2轮询周期的计算做准备。
本发明还提供了一种现场总线网络控制系统,包括:属于同一回路的NSM、SN和C/AN,所述NSM,用于在所述回路的第k轮询周期内,所述k≥2且为正整数,记录所述NSM向所述C/AN发出请求报文的时刻t5,j(k),并将该时刻发送至所述C/AN;
所述C/AN,用于接收所述NSM发送的t5,j(k),记录接收完毕所述NSM发送的请求报文的时刻t6,j(k);
所述C/AN,还用于根据式:τmc(k)=τmc(k-1)+((t6,j(k)-t5,j(k))-△τmc(k-1)),计算所述第k轮询周期内所述C/AN接收所述NSM转发数据的网络诱导延时τmc(k),其中τmc(k-1)和△τmc(k-1)为所述回路的第k-1轮询周期中所述C/AN接收所述NSM转发数据的网络诱导延时和所述NSM与所述C/AN之间的时间差。
进一步,所述C/AN,还用于根据式:△τmc(k)=t6,j(k)-t5,j(k),计算所述第k轮询周期内所述NSM与所述C/AN之间的时间差初值△τmc(k);
以及,用于保存τmc(k)和△τmc(k)。
进一步,所述NSM,还用于在所述第k轮询周期内,记录所述NSM向所述SN发送请求报文的时刻t1,i(k);以及
根据式:τbd(k)=t1,i(k)-t1,i(k-1)-T,计算其它回路对本回路的影响延时τbd(k),其中t1,i(k-1)所述回路的第k-1轮询周期所述NSM向所述SN发送请求报文的时刻;以及
用于保存t1,i(k)。
本发明的有益效果:
本发明实施例针对现有的需采用全系统时钟同步才能计算网络诱导延时的问题,采用异步差分的方式实现了C/AN接收NSM转发数据的网络诱导延时的计算,而该方式无需做全系统时钟同步,普通性能的系统也能满足其要求,可以有效的降低工业通信的复杂度。
具体实施方式
请参考图1,是本发明提供的现场总线网络控制系统的实施例的结构示意图。
如图1所示,该现场总线网络控制系统采用主从通信方式,其包括:一网络调度管理器(Network Scheduler Manager,NSM)101,若干传感器节点(Sensor Node,SN)102、若干控制器/执行器节点(Controller/Actuator Node,C/AN)103,被控对象104,以及连接NSM101和SN102、C/AN103之间的基于现场总线的网络105,其中控制器分布在各个执行器节点上。工作时,NSM101负责完成通信管理和人机交互,并采用时间触发方式轮询各SN102,以及采用事件触发方式将数据转发给C/AN103,在C/AN103完成实时控制运算并对实际被控对象104实施操作输出,构成全分布的网络控制系统。
在图1中,该现场总线网络控制系统的延时包括六个部分组成,即SN102上传送数据至NSM101的网络诱导延时τsm(k)、NSM101准备转发数据所需的处理时间τmd(k)、C/AN103接收到NSM101转发数据的网络诱导延时τmc(k)、C/AN103控制算法运算处理的时间τcd(k)、被控对象104自身的延时τp(k)和系统其它测控回路延时对当前回路的影响延时τbd(k)。其中,τmd(k)、τcd(k)和τp(k)可直接计算得到,而在主从通信模式下,由于NSM101是主站,SN102和C/AN103是从站,因此τsm(k)可在NSM101计算得到,但τmc(k)却难以直接在C/AN103直接得到,这可以事先确定一个初值,再采用异步差分的方法滚动计算得到,其它测控回路延时对当前回路影响τbd(k)也可在异步差分方法中计算得到,这一过程后续会详细说明,在此不赘述。
在介绍计算延时之前,首先对该现场总线网络控制系统的通信流程(含时间序列)进行说明,具体的,如图2所示,其包括:
步骤S201、NSM按照时间触发方式,在t1时刻开始向SN发送请求报文。
步骤S202、SN在t2时刻开始接收NSM发送的请求报文。
步骤S203、SN在t3时刻开始向NSM101返回应答报文。
步骤S204、NSM接收SN返回的应答报文,并在t4时刻接收完毕。
步骤S205、NSM按照事件触发方式,在t5时刻向C/AN发送请求报文。
步骤S206、C/AN接收NSM发送的请求报文,并在t6时刻接收完毕。
步骤S207、C/AN在t7时刻开始向NSM返回应答报文。
步骤S208、NSM接收C/AN返回的应答报文,并在t8时刻接收完毕。
下面对本发明提供的现场总线网络控制系统中网络诱导延时计算方法进行详细说明。
具体的,为便于计算单次周期内的网络诱导延时,将NSM按照时间驱动方式向某个固定SN发起通信的时刻视为固定不变的周期性变化时刻。系统单次周期内的延时包括五个部分组成:
τ(k)=τsm(k)+τmd(k)+τmc(k)+τbd(k)+τcd(k)+τp(k) (1)
其中,在该式中,网络诱导延时主要体现在τsm(k)和τmc(k)上,其它几个延时时间均可直接计算得到。因此,为了确定SN上传数据到NSM的网络诱导延时τsm(k),系统采用如图2所示时间序列,首先,由NSM按照时间触发方式向第i个SN发出上传采集数据的请求报文,并记下此刻的时间t1,i(k);其次,SN将采集的传感数据、收到请求报文时刻t2,i(k)和发出应答报文时刻t3,i(k)封装在应答报文中,返回给NSM;然后,NSM在接收完毕SN应答报文之后,记下此刻的时间t4,i(k)。则SN与NSM之间的网络诱导延时τsm(k)为:
τsm(k)=[(t4,i(k)-t1,i(k))-(t3,i(k)-t2,i(k))]·ξ (2)
其中,ξ的取值代表请求报文包长度与总报文包长度的比值。工业网络通信中的周期性数据通常都呈现出短帧、小包、数据频发的特征,因此,可将请求报文和应答报文视为相同的最小通信包,则式(2)中ξ可取值为如果SN上传数据量较多,导致应答报文包长度大于NSM下发的请求报文包长度,则在NSM可根据应答报文包长度与请求报文包长度,直接计算ξ值。
在计算NSM转发数据至C/AN的网络诱导延时过程中,同样根据图2所示时间序列,由NSM按照事件触发方式向第j个C/AN发出下发数据的请求报文,记下其起始此刻的时间t5,i(k),并将该时间附加到请求报文中下发;C/AN在正确接收到请求报文后,将其收完毕请求报文的时刻t6,i(k)记录下来。由于这时C/AN已收到全部数据,可开始进行控制运算。则NSM与C/AN之间的网络诱导延时τmc(k)为:
其中,τmc(k-1)为上一个周期的NSM与C/AN之间网络诱导延时,△τmc代表本周期网络诱导延时与上一个周期网络诱导延时之间的变化增量。该式充分体现了异步通信环境下差分计算网络诱导延时的特点,全系统没进行时钟同步,NSM上的t5,j(k)与C/AN上的t6,j(k)并不是基于同一个基准时钟,但对其差值再求两个周期之间的差分计算,可以直接描述出两个周期之间τmc的变化情况。
在采用式(3)进行递推计算的过程中,需要涉及到初值问题。可以在系统首次轮询通信时,也就是k值为1时,设定初始的τmc(k-1)、t5,j(k-1)、t6,j(k-1)均为0,但由于系统是采用异步通信方式,NSM上的t5,j(0)与C/AN上的t6,j(0)并不是基于同一个基准时钟,所以,不能直接采用式(3)直接计算得到τmc(0),只能参考式(2)的方法,进行计算初始的τmc(0)。根据图2所示时间序列,由NSM按照事件触发方式向第j个C/AN发出下发数据的请求报文,记下其起始此刻的时间t5,j(0),并将该时间附加到请求报文中下发;C/AN在正确接收到请求报文后,将其收完毕请求报文的时刻t6,j(0)记录下来;然后,C/AN将收到请求报文时刻t6,j(0)和发出应答报文时刻t7,j(0)封装在应答报文中,返回给NSM;NSM在接收完毕C/AN应答报文之后,记下此刻的时间t8,j(0)。则首次通信所确定的C/AN与NSM之间网络诱导延时τmc(0)为:
τmc(1)=[(t8,j(1)-t5,j(1))-(t7,j(1)-t6,j(1))]·η (4)
其中,η的取值代表请求报文包长度与总报文包长度的比值,首次通信时,该值直接取为通过式(4)求得该初值后,NSM即在当前周期将其下发至C/AN保存,在后续通信过程中,会不断把当前已计算得到的τmc(k)值更新到该值,作为下一个周期使用式(3)计算时的τmc(k-1)。
上面对τsm(k)和τmc(k)的计算方式进行了说明,需要指出的是:上述采用异步差分的方式计算τmc(k),一方面计算精度高,另一方面不需要全系统时钟同步,可以有效降低工业通信的复杂度,这是本发明实施例的关键所在。下面更详细的对本发明实施例的现场总线网络控制系统中网络诱导延时计算方法进行说明。
请参考图3,是本发明提供的现场总线网络控制系统中网络诱导延时计算方法的实施例的流程示意图。其包括:
步骤S301、在控制回路的第一个轮询周期内,确定该回路中NSM与C/AN节点之间的网络诱导延时初值τmc(1)、NSM与C/AN之间时间差初值△τmc(1)以及NSM向SN发起请求报文的起始时刻初值t1,i(1)并保存。
步骤S302、在控制回路的第二个轮询周期,采用差分方法计算本次轮询周期内的该回路网络诱导延时τ,并用该轮询周期内NSM与C/AN之间的网络诱导延时τmc(2)、NSM与C/AN之间时间差△τmc(2)以及NSM向SN发起请求报文t1,i(2)的起始时刻来更新相应的初值。
步骤S303、在后续的任一轮询周期,利用前一个轮询周期内得到的NSM与C/AN之间网络诱导延时初值τmc(k-1)、NSM与C/AN之间时间差初值△τmc(k-1)以及NSM向SN发起请求报文的起始时刻t1,i(k-1),滚动计算本轮询周期内该控制回路的网络诱导延时τ,并更新为下一个轮询周期内的NSM与C/AN之间网络诱导延时初值τmc(k)、NSM与C/AN之间时间差初值以△τmc(k)及NSM向SN发起请求报文的起始时刻初值t1,i(k)。
下面分别对这三个步骤进行说明。
如图4所示,是步骤S301的实施例的流程示意图,其包括:
步骤S401、第一个轮询周期时,NSM按照时间触发方式向第i个SN下发探测报文,并记下其起始此刻的时间t1,i(1)。
步骤S402、NSM在收到第i个SN的应答报文后,按照事件触发方式向第j个C/AN发出下发数据的请求报文,记下其发送请求报文的起始此刻的时间t5,j(1)。
步骤S403、C/AN在正确接收到请求报文后,将其收完毕请求报文的时刻t6,j(1)记录下来。
步骤S404、C/AN将t6,j(1)和发出应答报文时刻t7,j(1)封装在应答报文中,返回给NSM。
步骤S405、NSM在接收完毕C/AN应答报文之后,记下此刻的时间t8,j(1),并利用式:τmc(1)=[(t8,j(1)-t5,j(1))-(t7,j(1)-t6,j(1))]·η或τmc(1)=通信报文包大小×通信速率,计算得到τmc(1),用式:△τmc(1)=t6,j(1)-t5,j(1),计算得到△τmc(1),并将t1,i(1)、τmc(1)和△τmc(1)保存下来,用于下个周期的滚动计算。
如图5所示,是步骤S302的实施例的流程示意图,其包括:
步骤S501、第2个轮询周期时,NSM按照时间触发方式向第i个SN发起通信,发出上传采集数据的请求,并记下其起始时刻t1,i(2)。
步骤S502、SN将采集的传感数据、收到请求报文时刻t2,i(2)和发出应答报文时刻t3,i(2)按表一格式封装在应答报文中,返回给NSM。
表一
步骤S503、NSM在接收完毕SN应答报文后,记下此刻的时间t4,i(2)。
步骤S504、NSM采用式:τsm(2)=[(t4,i(2)-t1,i(2))-(t3,i(2)-t2,i(2))]·ξ,或者,τsm(2)=通信报文包大小×通信报文包速率,计算得到τsm(2),采用式:τbd(2)=t1,i(2)-t1,i(1)-T计算得到τbd(2),其中T为轮询周期。
步骤S505、由NSM按照事件触发方式向第j个C/AN发出下发数据的请求报文,记下此刻的时间t5,j(2),并由式:τmd(2)=t5,j(2)-t4,i(2)计算得到NSM准备转发数据所需的处理时间τmd(2),最后将△τmc(1)、τmc(1)、τsm(2)、τbd(2)、τmc(2)和t5,j(2)按照表二格式下发。
表二
步骤S506、C/AN在正确接收到请求报文后,将其收完毕请求报文的时刻t6,j(2)记录下来,并由式:计算得到τmc(2),由式:△τmc(2)=t6,j(2)-t5,j(2)计算得到△τmc(2),并将τmc(2)和△τmc(2)保存下来,用于下个周期的滚动计算。
步骤S507、由τ(2)=τsm(2)+τmd(2)+τmc(2)+τbd(2)+τcd(2)+τp(2)计算得到第二个轮询周期系统总延时τ。
如图6所示,是步骤S303的实施例的流程示意图,需要说明的是,在第2轮询周期结束时,可以首先判断系统是否继续运行,如果继续运行,则参照下述的方式处理,实际中在每次轮询周期结束时时均应进行如此判断。具体的,步骤S303包括:
步骤S601、第k个轮询周期时,SM按照时间触发方式向第i个SN发起通信,发出上传采集数据的请求,并记下其起始时刻t1,i(k)。
步骤S602、SN将采集的传感数据、收到请求报文时刻t2,i(k)和发出应答报文时刻t3,i(k)按表三封装在应答报文中,返回给NSM。
表三
步骤S603、NSM在接收完毕SN应答报文后,记下此刻的时间t4,i(k)。
步骤S604、NSM采用式τsm(k)=[(t4,i(k)-t1,i(k))-(t3,i(k)-t2,i(k))]·ξ,或者,式:τsm(k)=通信报文包大小×通信报文包速率计算得到τsm(k),采用式:τbd(k)=t1,i(k)-t1,i(k-1)-T,计算得到τbd(k)。
步骤S605、NSM按照事件触发方式向第j个C/AN发出下发数据的请求报文,记下此刻的时间t5,j(k),由式:τmd(k)=t5,j(k)-t4,i(k)计算得到τmd(k),最后将τsm(k)、τbd(k)、t5,j(k)、τmd(k)附加到请求报文中下发,如表四。
表四
报文头 |
传感数据 |
τsm(k) |
τbd(k) |
τmd(k) |
t5,j(k) |
此处与第二个轮询周期不同,由于从第二个轮询周期,计算得到的△τmc(k)和τmc(k),其中k=2,3,4,...,就已经保存在第j个C/AN中,所以不需要再下发△τmc(k)和τmc(k)的值到C/AN中了。
步骤S606、C/AN在正确接收到请求报文后,将其收完毕请求报文的时刻t6,j(k)记录下来,则由式:计算得到τmc(k),由式:△τmc(k)=t6,j(k)-t5,j(k),计算得到△τmc(k),并将t1,i(k)、τmc(k)和△τmc(k)保存下来,用于下个周期的滚动计算。
步骤S607、由τ(k)=τsm(k)+τmd(k)+τmc(k)+τbd(k)+τcd(k)+τp(k)计算得到系统总延时τ。
此处,在采用异步差分法求得系统延时的基础上,可继续动态调整控制器参数,即可明显改善存在网络诱导延时环境下的系统性能。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。