一对多半双工通信方法及系统
技术领域
本发明涉及主从设备的半双工通信领域,具体涉及一种一对多半双工通信方法及系统。
背景技术
目前,主机对多台从机进行管理时,主机一般使用半双工(指在通信过程的任意时刻,信息既可由A传到B,又能由B传A,但只能有一个方向上的传输存在)通过一对多的方式对多台从机进行通信(例如计算机管理外部设备),通信方法为:主机将所有需要管理的从机信息形成轮询管理列表后,依次与轮询管理列表中的每台从机进行首尾循环通信,即当轮询管理列表中最后一台从机通信完成后,即时与轮询管理列表的第一台从机进行通信(第一台从机通信完成后,该从机的信息会放入轮询管理列表的队尾)。
但是,上述通信方法存在以下缺陷:
(1)主机2次与同一台从机进行通信的间隔时间,有可能小于从机的指定通信间隔时间,这种情况一般在从机数量较少时发生。例如轮询管理列表中的从机数量为10台,从机的通信间隔时间为100ms,但是主机与10台从机通信的总共时间为50ms(每台从机的通信时间为5ms),此时主机50ms后再次与同一台从机进行通信的间隔时间,这必然小于从机的通信间隔时间(100ms)。上述情况不仅会增加主机与从机不必要的通信次数,进而增大主机和从机的负荷,而且有可能使得从机无法完成信息的采集,降低了通信质量;例如主机与从机通信后,从机需要80ms完成自身信息的采集,但是50ms后主机再次与从机通信,则会中断从机的信息采集。
(2)主机与从机通信时,若从机因自身原因(例如从机没有工作)未应答,主机会在指定时间内等待从机应答,指定时间内从机应答、或者通信超时(指定时间过后从机未应答)后,再与下一台从机进行通信。若通信超时的从机数量较多,则会显著延长每次与轮询管理列表中的从机的通信时间(因为主机会频发与通信超时的从机重复进行通信),进而大幅度降低了通信效率,不便于人们使用。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:如何提高主机与多台从机采用半双工通信时的通信质量和通信效率。
为达到以上目的,本发明提供的一对多半双工通信方法,包括以下步骤:
S1:主机将所有需要管理的从机信息形成轮询管理列表,转到S2;
S2:主机遍历轮询管理列表中的从机,当遍历到的当前从机为可通信时,主机向当前从机发起通信请求,若当前从机应答超时,则将当前从机信息从轮询管理列表中取出。
在上述技术方案的基础上,S2中所述主机向当前从机发起通信请求,若当前从机应答超时,则将当前从机信息从轮询管理列表中取出的流程包括:
S201:主机向当前从机发起通信请求后,判断当前从机是否在超时时间内应答,若是,将当前从机信息从轮询管理列表中取出后,重新加入轮询管理列表,S2结束;否则将当前从机的超时次数加1,转到S202;
S202:主机判断当前从机的超时次数是否在指定超时次数以上,若是,转到S203,否则转到S201;
S203:主机将当前从机信息从轮询管理列表中取出,S2结束。
在上述技术方案的基础上,S2中主机遍历轮询管理列表中的从机的顺序为:轮询管理列表中的从机排列顺序;S201中将取出的从机信息重新加入轮询管理列表中的位置为队尾。
在上述技术方案的基础上,S203的流程包括:主机将当前从机信息从轮询管理列表中取出、并加入黑名单列表;S1之后还包括以下步骤:将黑名单列表中的至少1台从机信息加入至轮询管理列表。
在上述技术方案的基础上,S2中所述遍历到的当前从机为可通信的标准为:当前从机的通信间隔时间为0。
本发明提供的一对多半双工通信系统,包括设置于主机上的轮询管理列表创建模块和半双工通信模块;
轮询管理列表创建模块用于:将所有需要管理的从机信息形成轮询管理列表;
半双工通信模块用于:遍历轮询管理列表中的从机,当遍历到的当前从机为可通信时,向当前从机发起通信请求,若当前从机应答超时,则将当前从机信息从轮询管理列表中取出。
在上述技术方案的基础上,所述半双工通信模块向当前从机发起通信请求,若当前从机应答超时,则将当前从机信息从轮询管理列表中取出的流程包括:
向当前从机发起通信请求,判断当前从机是否在超时时间内应答:
若是,将当前从机信息从轮询管理列表中取出后,重新加入轮询管理列表;
若不是,将当前从机的超时次数加1,判断当前从机的超时次数是否在指定超时次数以上,若是,将当前从机信息从轮询管理列表中取出;否则重新向当前从机发起通信请求。
在上述技术方案的基础上,所述半双工通信模块遍历轮询管理列表中的从机的顺序为:轮询管理列表中的从机排列顺序;半双工通信模块将取出的从机信息重新加入轮询管理列表中的位置为队尾。
在上述技术方案的基础上,所述半双工通信模块还用于:将应答超时的从机信息加入黑名单列表;轮询管理列表创建模块还用于:将黑名单列表中的至少1台从机信息加入至轮询管理列表。
在上述技术方案的基础上,所述半双工通信模块遍历到的当前从机为可通信的标准为:当前从机的通信间隔时间为0。
与现有技术相比,本发明的优点在于:
(1)与现有技术中主机频繁与从机通信相比,参见本发明方法的S2可知,本发明根据轮询管理列表遍历从机时,只有在遍历到的从机为可通信,主机才会向从机发起通信请求。因此,本发明不仅能够显著减少主机与从机不必要的通信次数,降低主机和从机的负荷,而且能够保证主机在与从机通信后,从机能够完成自身工作后再被主机通信,进而提高了通信质量。
与此同时,与现有技术中主机频繁与通信超时的从机重复进行通信相比,参见本发明方法的S2可知,本发明在从机应答超时时,会将应答超时的从机信息从轮询管理列表中取出,以此避免主机频繁与通信超时的从机重复进行通信,进而显著缩短了通信时间,大幅度提高了通信效率,便于人们使用,非常适于推广。
(2)参见本发明S2可知,本发明在与轮询管理列表中的从机通信时,还会将黑名单列表中的从机信息加入至轮询管理列表,进而避免从机因一次通信超时(即应答超时)导致永久无法通信的问题,以此进一步保证通信质量。
附图说明
图1为本发明实施例中一对多半双工通信方法的流程图;
图2为本发明实施例三中S2的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的一对多半双工通信方法,包括以下步骤:
S1:主机将所有需要管理的从机信息形成轮询管理列表,转到S2。
S2:主机遍历轮询管理列表中的从机,当遍历到的当前从机为可通信时,主机向当前从机发起通信请求,若当前从机应答超时(即在超时时间内未应答),则将当前从机信息从轮询管理列表中取出。
下面通过六个实施例说明本发明的方法。
实施例一:
S1中主机将所有需要管理的从机信息形成轮询管理列表后,还包括以下步骤:主机为轮询管理列表中的每台从机设置通信间隔时间。
实施例二:
S2中遍历到的当前从机为可通信的标准为:当前从机的通信间隔时间为0;遍历到的当前从机为可通信的判断过程为:判断当前从机的通信间隔时间是否为0,若是,则确定从机可通信,否则等待指定时间后重新进入判断流程。
实施例三:
参见图2所示,S2中主机向当前从机发起通信请求,若当前从机应答超时,则将当前从机信息从轮询管理列表中取出的流程包括:
S201:主机向当前从机发起通信请求,主机判断当前从机是否在超时时间内应答,若是,将当前从机信息从轮询管理列表中取出后,重新加入轮询管理列表,以此实现主机对该从机的多次通信,S2结束;否则将当前从机的超时次数加1,转到S202。
S202:主机判断当前从机的超时次数是否在指定超时次数以上,若是,转到S203,否则转到S201。
S203:主机将当前从机信息从轮询管理列表中取出,S2结束。
实施例四:
在实施例三的基础上,由于本实施例中主机遍历轮询管理列表中的从机的顺序为:轮询管理列表中的从机排列顺序,因此为了实现从机在1次轮询后(即与遍历轮询管理列表中的所有从机均通信过1次)被通信,S201中将取出的从机信息重新加入轮询管理列表中的位置为队尾。
实施例五:
在实施例三的基础上,S203的流程包括:主机将当前从机信息从轮询管理列表中取出、并加入黑名单列表;S1之后还包括以下步骤:将黑名单列表中的至少1台从机信息加入至轮询管理列表,以实现对黑名单列表中的从机进行再次通信,进而避免从机因一次超时通信导致永久无法通信的问题,因为有可能从机一次超时通信是暂时性故障(例如从机未工作),待故障恢复后(例如从机从未工作到开始工作)则可正常通信。从黑名单列表中取出的从机信息的数量可自行设定,例如主机可再处理3个从机信息,则从黑名单列表中取出3台从机信息加入轮询管理列表。
实施例六:1台主机需要与50台从机进行半双工通信,通信方法为:
步骤一、主机将30台从机信息形成轮询管理列表后,为轮询管理列表中的每台从机设置通信间隔时间,所有从机的通信间隔时间均为100ms,转到步骤二。
步骤二、主机按照轮询管理列表中从机的排列顺序,遍历轮询管理列表中的从机,定义遍历到的当前从机为A,从机A的通信间隔时间为0,即从机A可通信,转到步骤三。
步骤三:主机向从机A发起通信请求,主机判断从机A是否在超时时间(10ms)内应答:
若是,将从机A的从机信息从轮询管理列表中取出后,重新加入轮询管理列表的队尾,结束。
若不是,主机判断从机A的超时次数在指定超时次数(3次)以上,若是,主机将从机A的从机信息从轮询管理列表中取出、并加入黑名单列表,转到步骤四,否则重新执行步骤三。
步骤四:在步骤一形成的轮询管理列表中的所有从机通信完成后,黑名单列表中存在5台从机信息(即代表5台从机通信超时),将黑名单列表中的3台从机信息加入至轮询管理列表。
由此可知,与现有技术中主机频繁与从机通信相比,本发明根据轮询管理列表遍历从机时,只有在遍历到的从机为可通信,主机才会向从机发起通信请求。因此,本发明不仅能够显著减少主机与从机不必要的通信次数,降低主机和从机的负荷,而且能够保证主机在与从机通信后,从机能够完成自身工作后再被主机通信,进而提高了通信质量。
与此同时,与现有技术中主机频繁与通信超时的从机重复进行通信相比,本发明在从机应答超时时,会将应答超时的从机信息从轮询管理列表中取出,以此避免主机频繁与通信超时的从机重复进行通信,进而显著缩短了通信时间,大幅度提高了通信效率,便于人们使用,非常适于推广。
进一步,本发明在与轮询管理列表中的从机通信时,还会将黑名单列表中的从机信息加入至轮询管理列表,进而避免从机因一次超时通信导致永久无法通信的问题,以此进一步保证通信质量。
本发明实施例中的一对多半双工通信系统,包括设置于主机上的轮询管理列表创建模块和半双工通信模块。
轮询管理列表创建模块用于:将所有需要管理的从机信息形成轮询管理列表;将半双工通信模块形成的黑名单列表中的至少1台从机信息加入至轮询管理列表。
半双工通信模块用于:遍历轮询管理列表中的从机,遍历顺序为:轮询管理列表中的从机排列顺序;当遍历到的当前从机为可通信时(当前从机的通信间隔时间为0),向当前从机发起通信请求,若当前从机应答超时,则将当前从机信息从轮询管理列表中取出,具体流程包括
向当前从机发起通信请求,判断当前从机是否在超时时间内应答:
若是,将当前从机信息从轮询管理列表中取出后,重新加入轮询管理列表的队尾;
若不是,将当前从机的超时次数加1,判断当前从机的超时次数是否在指定超时次数以上,若是,将当前从机信息从轮询管理列表中取出后,加入至黑名单列表;否则重新向当前从机发起通信请求。
需要说明的是:本发明实施例提供的系统在进行模块间通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。