减少报文传输时间,本系统中主站利用重新编址后的从站顺序组装通信数据,采用输出优先的方式,在数据区中只装载需要写给各从站的物理输出资源的映射信息,保证只传输有效数据信息,最后将组装好的数据校验打包发送给第一个从站;所述环网通信帧会依次被每个从站接收处理,从站接收后会裁剪数据帧,截取自身物理输出的映射信息,添加物理输入的映射信息,并将重组后的数据帧发送给下一个从站或主站,整个传输过程数据帧长度会因各从站的信息需求自动的变化,减少了传输过程中的冗余信息;
[0040]具体通信过程为主站的通信管理模块会通知环网通信模块根据有效从站的映射信息组装通信数据,并由主站数据传输模块将数据校验打包成数据帧发送到共享总线上;所述数据帧将会被总线上的所有从站接收,各从站利用自己的数据传输模块过滤接收到的数据帧,若数据帧的目标节点地址为该从站的节点地址,则对接收的数据进行校验,若校验正确,进行缓冲存储,并通知通信解析模块对该数据进行解析;通信解析模块从数据区起始地址截取物理输出的映射信息并将对应的物理输入的映射信息插入数据区尾地址中,并将节点地址加1,通过所述从站数据传输模块对修改后的数据进行重新校验打包,生成新的数据帧发送给下一个节点地址的站点。
[0041]在环网通信过程中,若出现故障,则返回步骤2进行故障处理;若经故障处理确认环网通信中断,则进行步骤4,切换为点对点通信,保证网络的可靠性。
[0042]步骤4、点对点通信,用于辅助环网通信完成主站和从站之间的数据交换,通信过程中,主站会采用轮询方式按照节点地址从小到大的顺序依次对有效从站发送点对点通信帧,通信过程中一次帧传输可以完成主站与其中一个从站的数据交换;主站会根据有效从站的设备地址组装点对点通信数据,并将数据校验打包生成点对点通信帧发送到共享总线上;所述点对点通信帧将会被总线上的所有从站接收,各从站对接收到的数据帧进行过滤,若数据帧的目标地址不是该从站的设备地址则丢弃,否则接收,从数据区中提取自身物理输出的映射信息并将物理输入的映射信息写入数据区中,对数据重新校验打包,生成响应数据帧,发送至共享总线待主站接收;主站接收到目标从站的响应数据帧后,会以轮询方式和下一个从站通信;
[0043]具体通信过程为主站的通信管理模块会通知点对点通信模块根据有效从站的设备地址组装点对点通信数据,并由主站数据传输模块将数据校验打包成数据帧发送到共享总线上;所述数据帧将会被总线上的所有从站接收,各从站利用自己的数据传输模块对接收到的数据帧进行过滤,若数据帧的目标地址不是该从站的设备地址则丢弃,否则对接收的数据进行校验,若校验正确,进行缓冲存储,并通知通信解析模块对该数据进行解析,通信解析模块会从数据区中提取自身物理输出的映射信息并将对应的物理输入的映射信息写入数据区中,通过所述从站数据传输模块对数据进行重新打包、校验,生成响应数据帧,并发送至共享总线待主站接收。主站接收到目标从站的响应数据帧后,会以轮询方式和下一个从站通信。
[0044]在点对点通信过程中,主站会周期性的检测网络状态,确认网络拓扑结构是否已经恢复,若恢复则自动切换回环网通信方式。在本实例中,系统转为点对点通信后,主站发送点对点通信帧依次与所有从站通信。当某个从站连续5次没有响应,则认为该从站掉线,为提高通信的实时性,以后不再每轮扫描该从站,而是每隔20轮与掉线从站通信一次,如果掉线从站有响应,则下一轮继续通信,连续三次都有响应,则认为该设备在线,如果所有从站都在线,则返回步骤1子步骤(a),扫描共享总线上的所有从站,若所有从站都为有效从站,并且历史从站全部在线,则切换回步骤3恢复环网通信,否则返回步骤2进行故障处理。
[0045]步骤5、通信终止,当通信过程中遇到不可恢复故障时,主站将切换为空闲状态,不发送任何数据帧,整个通信系统停止工作。在空闲状态中,主站会通过人机交互模块等待上位机的启动命令,接收到启动命令后返回步骤1,重新进行初始化工作。
[0046]所述步骤1中,初始化设置具体包括以下子步骤:
[0047](a)从站扫描:系统上电后,主站会对总线上的所有从站进行全地址扫描,按照设备地址从小到大的顺序依次对指定地址的从站发送扫描帧,获取从站的设备类型和物理资源,确认网络拓扑结构;主站有两种扫描方式:首次扫描和自恢复扫描,若为首次扫描即主站中没有存储历史从站信息时主站会存储每个从站的设备类型和物理资源的数量,建立新的网络拓扑结构。若为自恢复扫描即主站中已存储历史从站信息时,主站会对重新扫描上的所有从站进行信息比对:扫描上的从站的设备类型和设备地址与主站中存放的历史从站信息相同,则为有效从站,否则为无效从站;若有无效从站,则记录故障码,说明网络拓扑结构有异常,待扫描完毕后进行步骤2,进行故障处理;否则,即完成设备扫描,进行下一子步骤;
[0048](b)节点地址配置:如图1所示,主站按子步骤(a)所确定的网络拓扑结构对连接到总线上的各个从站进行节点地址配置,主站分配给从站的节点地址是连续且不重复的,主站会根据各从站的I/O资源计算各从站的净输出值(所述净输出值是指各从站的物理输出与物理输入的差值)进行降序排列,以净输出值的排列顺序为各从站配置节点地址。其中同一类型的从站之间根据设备地址从小到大的顺序分配节点地址,主站配置完所有从站后也会给自己分配一个节点地址,该节点地址为n+1。在进行环网通信时,主站和其他η个从站会组成一个有η+1个节点的环型网络。采用这种分配方式为后续的环网通信帧的动态分配提供了基础。在节点地址配置过程中,若有配置超时或负响应,则进行步骤2,进行故障处理;否则,完成节点地址配置并进行下一子步骤;
[0049](c)参数配置:主站会根据自身的参数信息对共享总线上所有从站进行统一的参数配置,配置参数均为系统的公共参数,包括:映射保持时间、通信参数等。主站采用广播方式发送参数设置帧,完成总线上所有从站的参数配置,配置参数中分为两类,一类是立即生效参数,如映射保持时间,另一类是系统重新上电生效参数,如通信参数;若参数配置失败,则进行步骤2,进行故障处理;否则,完成参数配置并进行下一子步骤。
[0050](d)初始化设置成功,进行步骤3,各个站点之间进行环网通信。
[0051]所述步骤2中,故障处理具体为:在通信过程中,主站的通信管理模块会根据主站的故障检测模块记录的故障码,判别故障类型,对现场总线系统进行故障处理,若故障可恢复,则通过步骤4继续通信,若故障不可恢复,则进行步骤5,停止通信。
[0052]所述步骤3中,通过环网通信帧完成主站和从站、从站和从站之间的数据交换,如图4所示,本实例中环网通信帧的节点地址为1字节(内容为1?255),帧类型为1字节(内容为0x43),数据区长度为2字节(内容为数据区字节数),数据区为0?512字节(内容为各从站映射的输出、输入数据),校验码为2字节(内容为数据帧的循环冗余校验码)。环网通信帧采用输出优先方式传输,数据帧会先经过净输出值最大的第1从站s-1,然后经过净输出值次大的第2从站s-2,依次经过所有从站最终由净输出值最小的第η从站s-n回给主站处理。通信过程中,所述环网通信帧的数据区采用动态分配方式,所述动态分配方式是指数据帧经过各从站时,从站会先从数据区起始地址中获取输出数据,再从数据区的尾地址起插入输入数据,并修改数据长度;全过程数据区长度会由多变少,又由少变多,保证传输数据均为有效数据,减少了传输过程的时间浪费。如图4所示,本实例中,首先主站根据各从站的映射信息组装了一条只有输出数据的环网通信帧发送给第1从站s-1,第1从站s-Ι接收后从数据区起始地址中获取自身的输出数据,再从数据区的尾地址起插入自身的输入数据并修改数据长度,将节点地址加1,重新校验打包发送给第2从站s-2;第2从站s-2重复第1从站s-Ι的工作将数据帧发给第3从站s-3,依次类推,这条环网通信帧以递推方式经过了所有从站,最终回给主站处理。每个通信周期中,主站只需发送一条数据帧就可以完成与所有从站的数据交换,从而控制共享总线上的所有从站,实现高速的环网通信控制。此外,传输过程中,也大大减少了主站的工作负荷,提高了主站的控制逻辑的执行效率。
[0053]所述步骤4中,通过点对点通信帧完成主站和从站之间的数据交换,如图5所示,所述点对点通