发明名称 一种分布式控制系统多从机程序在线同步升级的方法
摘要 本发明公开了一种分布式控制系统多从机程序在线同步升级的方法,传统的分布式控制系统进行应用程序更新时都是单独对每个节点单元进行更新,每个单元在程序升级过程中都进行相同的操作,重复性大,导致对整个系统的升级效率低。本发明同步升级方法的硬件装置为内部Flash可编程MCU单元(从机单元)、CAN总线和主机程序烧写器;其中多个内部Flash可编程MCU单元(从机单元)与一个主机程序烧写器通过CAN总线相连;本发明可同时对多个从机单元进行程序在线同步升级,最大数量可以到达100个从机单元,并且在总线挂接最大数量的从机单元情况下最高通信速率可达100kbps,提高了分布式控制系统的程序升级效率。
申请公布号 CN103279371B 申请公布日期 2016.04.20
申请号 CN201310194153.X 申请日期 2013.05.22
申请人 杭州电子科技大学 发明人 高明煜;黄继业;蔡步森;曾毓;马国进;何志伟;吴占雄;李芸
分类号 G06F9/445(2006.01)I 主分类号 G06F9/445(2006.01)I
代理机构 杭州君度专利代理事务所(特殊普通合伙) 33240 代理人 杜军
主权项 一种分布式控制系统多从机程序在线同步升级的方法,其特征在于:分布式控制系统各从机单元同时上电,从机单元程序跳转到BOOT空间等待主机程序烧写器握手命令,主机程序烧写器开始对每一个编号为i的从机单元一一进行发送握手命令,1≤ i≤100,主机程序烧写器在对第一个从机单元发送完握手命令后,若在<img file="dest_path_image002.GIF" wi="49" he="30" />ms内没有收到该从机单元回复握手命令,则将从机单元从总线上删除,然后访问下一从机单元;若在<img file="664684dest_path_image002.GIF" wi="49" he="30" />ms内收到该从机单元回复握手命令,则主机程序烧写器依次对下一个从机单元发送握手命令,直到完成对<img file="dest_path_image004.GIF" wi="46" he="30" />个从机单元握手;若从机单元在(n+w+x)ms内没有收到主机程序烧写器发送的握手命令,则从机单元程序跳转到应用程序空间运行;若从机单元在(n+w+x)ms内收到主机程序烧写器发送的握手命令,则从机单元回复主机程序烧写器握手命令;其中<img file="544915dest_path_image002.GIF" wi="49" he="30" />、n和w由下式表示:<img file="dest_path_image006.GIF" wi="449" he="33" />(1)<img file="dest_path_image008.GIF" wi="400" he="30" />(2)<img file="dest_path_image010.GIF" wi="129" he="33" />(3)<img file="294434dest_path_image002.GIF" wi="49" he="30" />:表示主机烧写器对一个从机单元握手后等待该从机单元回复的时间<img file="652735dest_path_image004.GIF" wi="46" he="30" />:表示分布式控制系统中从机单元的数量<img file="dest_path_image012.GIF" wi="49" he="30" />:表示数据域中的字节数<img file="dest_path_image014.GIF" wi="40" he="30" />:表示数据帧中帧起始、仲裁场、控制场以及CRC场中的CRC序列这些固定格式的总位数<img file="dest_path_image016.GIF" wi="32" he="30" />:表示数据帧中不需要进行位填充部分的总位数<img file="dest_path_image018.GIF" wi="41" he="30" />:表示数据帧的帧结束段后插入的一个帧间空间的总位数<img file="dest_path_image020.GIF" wi="37" he="30" />:表示填充位的总位数<img file="dest_path_image022.GIF" wi="29" he="29" />:表示发送1bit数据所需的时间<img file="dest_path_image024.GIF" wi="53" he="33" />:表示从机单元收到主机程序烧写器命令到回复主机程序烧写器命令之间的延迟CAN总线上挂接的从机单元数量为<img file="496276dest_path_image004.GIF" wi="40" he="22" />个,CAN总线通信采用标准数据帧格式,在单帧长度最长的情况下<img file="796676dest_path_image020.GIF" wi="32" he="21" />取整的最长长度表示为:<img file="dest_path_image026.GIF" wi="486" he="27" />(4)<img file="dest_path_image028.GIF" wi="42" he="30" />:表示帧起始的位数<img file="dest_path_image030.GIF" wi="34" he="30" />:表示仲裁场的总位数<img file="dest_path_image032.GIF" wi="42" he="30" />:表示数据长度编码段的总位数<img file="dest_path_image034.GIF" wi="90" he="30" />公式中<img file="dest_path_image036.GIF" wi="17" he="26" />表示计算结果向下取整在单帧长度最长的情况下n表示为:<img file="dest_path_image038.GIF" wi="501" he="30" />(5)在单帧长度最长的情况下<img file="36421dest_path_image002.GIF" wi="49" he="30" />表示为:<img file="dest_path_image040.GIF" wi="550" he="33" />(6)CAN总线上的从机单元在收到主机程序烧写器的命令后可在0到10ms内回复主机程序烧写器命令,所以<img file="385363dest_path_image024.GIF" wi="53" he="33" />=10ms; (n+w+x)ms中x表示分布式控制系统上电后主机程序烧写器需要在xms内向从机单元发送握手命令,否则会出现部分从机单元握手失败情况;主机程序烧写器在对所有的从机握手完成后,主机程序烧写器读取第一个扇区的hex数据,通过广播的方式发送该扇区hex数据的写入起始地址、长度、传输状态及校验,然后将该扇区的hex数据通过CAN总线广播给每一个从机单元;从机单元接收主机程序烧写器发送的hex数据的写入起始地址、长度、传输状态及校验,然后判断传输状态是否为hex数据传输结束帧;若为hex数据传输结束帧,则跳转到应用程序空间,运行应用程序;若不是hex数据传输结束帧,从机单元根据接收到的hex数据的长度值,开始接收主机程序烧写器广播的相同长度的hex数据;接收完成收后,从机单元开始校验接收到的hex数据;若校验正确,则将接收到的hex数据写入到应用程序空间;若校验错误,则跳过写入hex数据到应用程序空间的操作;然后从机单元等待主机程序烧写器写查询写入状态命令,若<img file="dest_path_image042.GIF" wi="68" he="28" />ms内没有收到主机程序烧写器的查询命令,则结束程序烧写;主机程序烧写器广播发送完成一个扇区的hex数据后,开始对每一个编号为i的从机单元一一进行询问写入扇区状态,i的取值范围在1到100,且编号为i的从机单元未被主机程序烧写器从CAN 总线上删除;主机程序烧写器向一个从机单元询问写入扇区状态后,若在10<img file="633810dest_path_image002.GIF" wi="49" he="30" />ms内没有收到该从机单元回复写入状态,则将从机单元从总线上删除;若在10<img file="855844dest_path_image002.GIF" wi="49" he="30" />ms内收到该从机单元回复写入状态,然后访问下一从机单元,若下一个从机单元已经从CAN 网络上删除,则跳过访问该从机单元,从机单元编号i自增1访问下一个从机单元,按此方法依次访问直到对<img file="452392dest_path_image004.GIF" wi="46" he="30" />个从机单元的写入扇区状态询问完成;若hex文件已经发送完成,则主机程序烧写器发送hex数据传送结束帧,从机单元收到hex数据传送结束帧后跳转到应用程序空间,运行应用程序;主机程序烧写器发送完hex数据传输结束帧后,统计各从机单元烧写状态。
地址 310018 浙江省杭州市下沙高教园区2号大街