一种电网设备通信方法
技术领域
本发明涉及电网通信领域,具体涉及一种电网设备通信方法。
背景技术
随着电网规模的不断扩大和数据采集信息的日益扩充,电量采集的数据通信量也随之增大,系统采用任务的选择合并与排序、多个通信工作站同时工作。
为此,引入多线程机制等方式提高通信效率,并需要配置相应的加密算法,保证数据的安全性、有效性和完整性。
发明内容
为了解决上述现有技术中存在的缺陷和不足,本发明一种电网设备通信方法,包括。
S1.应用工作站制定主站自动通信方案,该方案包括通信起始时间、间隔及数据项目,存入服务器上的数据库。应用工作站插入新方案或修改方案,根据方案生成自动通信任务,并根据自动通信任务的内容进行合并,根据自动通信任务的重要度等级进行任务排序,存入任务表。
对于每个主站的自动通信都是预先设定的,每隔一段固定时间,自动通信任务就会自动向服务器提出通信请求,服务器接受请求并检测资源使用情况,査看是否有可用的串口,若有则将该串口分配给该自动通信任务,并动态创建新线程来监视该串口,接收和处理数据;如果没有空闲的串口,则等待直到有串口被释放并分配给该自动通信任务。
S2.通信工作站不断检测服务器上的任务表,查看是否有执行的任务,若有则向通信工作站的通信服务程序传送通信任务及相关信息,并修改该任务的标志,检测分配通信资源,根据所需资源的忙闲状态进行资源分配。
S3.通信服务程序为收到的每一个自动通信或手动通信任务创建一通信线程,每五个线程使用所分配的串口及对应的资源,完成相应的通信任务所规定的内容。采集终端返回的数据通过通信工作站传送到服务器并存储在临时数据库。
S4.主站与采集终端通过创建的通信线程在加密模式下进行加密通信,采集终端为发送数据包预先添加一个随机字符串,所述随机字符串称为初始化向量,并使用链接块密码模式或哈希链接块密码模式的加密模式。在主站与采集终端两个通信方之间使用共享的两个计数器,每个通信方向一个。
其中,计数器最初设置为零,并且应至少为128bit,计数器值能够用作信息加密中的随机字符串,每个信息加密后,如果使用链接块密码模式,则计数器增加1;如果使用哈希链接块密码模式,则增加加密数据块的数量。两个通信方均知道计数器的值,并且两个计数器在预定时间进行同步。
S5.当主站接收到这些加密数据包时,主站解密数据包,检查计数器值是否正确,一旦主站接收到密文的第一个块,主站会检查计数器值是否正确。如果是正确的,则主站继续解密并更新其计数器。否则,主站丢弃整个密文。主站使用计数器解密密文的第一个块;如果解密的明文的第1位与计数器值的密文不一致,则说明计数器未同步或密文被破坏。如果密文被篡改,则依靠纠错机制来丢弃整个数据包,否则主站继续尝试其余计数器,直到计数器检验过程成功。然后主站使用经过验证的计数器和相应的密钥対信息进行解密,生成的信息的每个块一旦可用就将其传送到服务器。如果在预设数量的试验中不能验证计数器,则主站通知采集终端传输失败,并在下一部分启动计数器同步协议。
对于两个通信方建立安全信道,密钥需要在部署时添加到两台设备中。该密钥可以是共享的主密钥或一个会话的共享密钥,能够从使用简单密钥建立协议的共享密钥建立。利用该密钥识别的安全信道建立其他信道,包括会话安全信道、时间同步信道、认证广播信道和认证紧急信道。
所述计数器同步协议可以由任一方启动,可以直接添加两个设备的初始计数器值。两个设备也可以使用提供的计数器同步协议添加初始计数器值。主站还可以使用认证广播信道,使用一条信息将多个采集终端的计数器值设置为相同值。
S6.如果存在信息认证码,则验证所述信息认证码的正确性。如果信息认证码是正确的,主站将解密信息传输到服务器;否则,主站选择通知采集终端信息已损坏或尝试重新同步计数器。
S7.主站将解密的字节立即传送到服务器,当遇到最后一个字节时。如果信息认证码成功验证,则主站将最后一个字节传递给服务器;否则,主站丢弃最后一个字节,或发送一个随机字节到服务器,依靠纠错机制来舍弃整个信息。
在非加密模式下,可仅进行信息认证,采集终端发送明文到主站,在这种模式下,不使用计数器值作为随机字符串,但是需要在信息认证码中认证计数器值,并在操作后增加计数器值。除了加密模式和非加密模式外,还支持数据直传模式。即数据在在没有加密和认证的情况下传输。
其中,所述应用工作站支持任务的选择合并与排序。包括自动通信任务和手动通信任务,所述自动通信任务是指,主站根据设定的周期,按主站自动通信方案完成数据从采集终端到主站的传输,并在服务器上备份一份完整的临时数据库。手动通信任务是指,按照用户任意指定的启动时间去读取任意线路表或数据采集器的任意时间段内数据。
当多个应用工作站发手动通信指令时,如果发出的手动通信指令指定的抄表对象为同一个采集器,采集数据项目一致,仅仅随时通信启动时间不同的情况下,若所述多个手动通信任务启动时间相隔不超过5min,则合并为一个任务;如果发出的手动通信指令对象为同一个采集器,采集任务启动时间相同,但采集数据项目不完全一致,则将任务按数据项目进行合并。
优选地,所述应用工作站设定通信方案时,按照任务启动时间的先后对通信任务进行排序,当出现通信任务的启动时间一致时,遵循下面的原则进行排序。
当通信任务类型不相同时,手动通信任务优先于自动通信任务。其中手动通信任务为用户随机启动并要求现场査看数据。若都为自动通信任务时,按照用户的重要等级程度来排序,分为一级用户、二级用户、三级用户,等级高的用户优先被采集。
当主线程检测到有手动通信任务时,手动通信任务优先于所有的自动任务,此时主线程顺序检查所有串口中是否有空闲的串口,如果否则等待,直到有一个空闲的串口分配给该手动通信任务,然后动态创建新线程来监视该串口,并接收和处理数据。
本发明一种电网设备通信方法,对电网设备间的通信任务安排和数据加密进行了合理配置,实现了连接建立的及时性和数据传输的安全性。
附图说明
图1为本发明一种电网设备通信方法的流程图。
具体实施方式
如图1所示,本发明一种电网设备通信方法,包括。
S1.应用工作站制定主站自动通信方案,该方案包括通信起始时间、间隔及数据项目,存入服务器上的数据库。应用工作站插入新方案或修改方案,根据方案生成自动通信任务,并根据自动通信任务的内容进行合并,根据自动通信任务的重要度等级进行任务排序,存入任务表。
对于每个主站的自动通信都是预先设定的,每隔一段固定时间,自动通信任务就会自动向服务器提出通信请求,服务器接受请求并检测资源使用情况,査看是否有可用的串口,若有则将该串口分配给该自动通信任务,并动态创建新线程来监视该串口,接收和处理数据;如果没有空闲的串口,则等待直到有串口被释放并分配给该自动通信任务。
S2.通信工作站不断检测服务器上的任务表,查看是否有执行的任务,若有则向通信工作站的通信服务程序传送通信任务及相关信息,并修改该任务的标志,检测分配通信资源,根据所需资源的忙闲状态进行资源分配。
S3.通信服务程序为收到的每一个自动通信或手动通信任务创建一通信线程,每五个线程使用所分配的串口及对应的资源,完成相应的通信任务所规定的内容。采集终端返回的数据通过通信工作站传送到服务器并存储在临时数据库。
S4.主站与采集终端通过创建的通信线程在加密模式下进行加密通信,采集终端为发送数据包预先添加一个随机字符串,所述随机字符串称为初始化向量,并使用链接块密码模式或哈希链接块密码模式的加密模式。在主站与采集终端两个通信方之间使用共享的两个计数器,每个通信方向一个。
其中,计数器最初设置为零,并且应至少为128bit,计数器值能够用作信息加密中的随机字符串,每个信息加密后,如果使用链接块密码模式,则计数器增加1;如果使用哈希链接块密码模式,则增加加密数据块的数量。两个通信方均知道计数器的值,并且两个计数器在预定时间进行同步(例如,在非高峰时间)。
S5.当主站接收到这些加密数据包时,主站解密数据包,检查计数器值是否正确,一旦主站接收到密文的第一个块,主站会检查计数器值是否正确。如果是正确的,则主站继续解密并更新其计数器。否则,主站丢弃整个密文。主站使用计数器解密密文的第一个块;如果解密的明文的第1位与计数器值的密文不一致,则说明计数器未同步或密文被破坏。如果密文被篡改,则依靠纠错机制(通常为CRC码)来丢弃整个数据包,否则主站继续尝试其余计数器,直到计数器检验过程成功。然后主站使用经过验证的计数器和相应的密钥対信息进行解密,生成的信息的每个块一旦可用就将其传送到服务器。如果在预设数量的试验中不能验证计数器,则主站通知采集终端传输失败,并在下一部分启动计数器同步协议。
对于两个通信方建立安全信道,密钥需要在部署时添加到两台设备中。该密钥可以是共享的主密钥或一个会话的共享密钥,能够从使用简单密钥建立协议的共享密钥建立。利用该密钥识别的安全信道建立其他信道,包括会话安全信道、时间同步信道、认证广播信道和认证紧急信道。
所述计数器同步协议可以由任一方启动,可以直接添加两个设备的初始计数器值。两个设备也可以使用提供的计数器同步协议添加初始计数器值。主站还可以使用认证广播信道,使用一条信息将多个采集终端的计数器值设置为相同值。
为了实现会话密钥的活跃度,通常一个节点向另一个节点发送随机数,另一个节点将加密的会话密钥与密文和随机数的认证者一起发送。
S6.如果存在信息认证码,则验证所述信息认证码的正确性。如果信息认证码是正确的,主站将解密信息传输到服务器;否则,主站选择通知采集终端信息已损坏或尝试重新同步计数器。
S7.主站将解密的字节立即传送到服务器,当遇到最后一个字节时。如果信息认证码成功验证,则主站将最后一个字节传递给服务器;否则,主站丢弃最后一个字节,或发送一个随机字节到服务器,依靠纠错机制来舍弃整个信息。
在非加密模式下,可仅进行信息认证,采集终端发送明文到主站,在这种模式下,不使用计数器值作为随机字符串,但是需要在信息认证码中认证计数器值,并在操作后增加计数器值。除了加密模式和非加密模式外,还支持数据直传模式。即数据在在没有加密和认证的情况下传输。
其中,所述应用工作站支持任务的选择合并与排序。包括自动通信任务和手动通信任务,所述自动通信任务是指,主站根据设定的周期,按主站自动通信方案完成数据从采集终端到主站的传输,并在服务器上备份一份完整的临时数据库。手动通信任务是指,按照用户任意指定的启动时间去读取任意线路表或数据采集器的任意时间段内数据。
当多个应用工作站发手动通信指令时,如果发出的手动通信指令指定的抄表对象为同一个采集器,采集数据项目一致,仅仅随时通信启动时间不同的情况下,若所述多个手动通信任务启动时间相隔不超过5min,则合并为一个任务;如果发出的手动通信指令对象为同一个采集器,采集任务启动时间相同,但采集数据项目不完全一致,则将任务按数据项目进行合并。
优选地,所述应用工作站设定通信方案时,按照任务启动时间的先后对通信任务进行排序,当出现通信任务的启动时间一致时,遵循下面的原则进行排序。
当通信任务类型不相同时,手动通信任务优先于自动通信任务。其中手动通信任务为用户随机启动并要求现场査看数据。若都为自动通信任务时,按照用户的重要等级程度来排序,分为一级用户、二级用户、三级用户,等级高的用户优先被采集。
当主线程检测到有手动通信任务时,手动通信任务优先于所有的自动任务,此时主线程顺序检查所有串口中是否有空闲的串口,如果否则等待,直到有一个空闲的串口分配给该手动通信任务,然后动态创建新线程来监视该串口,并接收和处理数据。
进一步地,采用多个通信工作站同时工作,提高了系统的通信效率。多个通信工作站同时工作时,可能出现多个通信工作站同时对服务器上的任务表进行访问的情况,也可能出现多个通信工作站同时对服务器上的临时数据库进行访问的情况。为避免不同通信工作站执行同一通信任务的情况,及多个通信工作站同时对临时数据库操作时相互干扰的现象,可采用数据库的并发事务处理机制。
所谓事务是一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。事务在功能上保持一致性,并保证事务间的隔离性。当某一通信工作站访问任务表时,利用数据库的事务机制封锁任务表,这样,其他通信工作站就暂时不能访问任务表,此封锁直到该通信工作站任务分配完毕且任务标志修改成功才解除,当其他通信工作站访问此任务表时,可通过检测任务标志避免将已分配的任务再次进行分配。同理,当某一通信工作站在向临时数据库存入数据记录时,封锁此临时数据库,使其他通信工作站无法对此临时数据库进行操作,只有在数据存储完毕后,才解除对此临时数据库的封锁。
并且,采用基于多线程技术的并发通信机制,有多个通信工作站同时工作,一个工作站对应多个调制解调器通信。多线程并发通信机制由两部分组成,一部分是主线程,负责主窗口的消息,提供监听服务,响应来自客户端的通信任务;另一部分是通信线程,由主线程动态创建,负责与客户端建立连接、信息交互。
在每个通信工作站串口均设置一个服务器,其目的就是为了扩展串口,扩展系统的资源。如果能每个厂站能对应一个串口,就不会出现资源冲突的情况。同时,将从串口接收到的数据放在通信工作站的本地临时库上,代替直接将数据送入服务器的临时数据库的方法,并且避开服务器的繁忙时间,由一线程专门负责从通信工作站的本地库中取出数据存入服务器的临时库中,这样大大减少了服务器磁盘的物理读写次数,减少了大批数据存储所需时间,使通信效率得到提高,整体性能得到优化。数据入库时,在通信工作站硬盘上将采集上来的数据备份。
所述纠错机制可以为CRC循环冗余纠错。
本发明一种电网设备通信方法,对电网设备间的通信任务安排和数据加密进行了合理配置,实现了连接建立的及时性和数据传输的安全性。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。