配置外部通信协议的系统及其方法转让专利

申请号 : CN201010112353.2

文献号 : CN101902457B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 顾宇栋龚敬群韦伟陈晓武

申请人 : 上海宝信软件股份有限公司

摘要 :

本发明揭示了一种配置外部通信协议的系统及其方法,系统包括平台核心模块以及至少一配置通信协议的插件式模块;所述平台核心模块包括核心通信模块、数据库交互模块以及通信管理模块;所述核心通信模块分别连接所述插件式模块和所述通信管理模块,发送用户请求到所述通信管理模块,并接收所述通信管理模块发出的响应请求;配置外部通信协议的方法包括配置通信规约插件服务器端运行方法和配置通信规约插件客户端运行方法,本发明能够很好实现软件模块的分工开发,能够复用代码;插件技术的使用使得通信平台核心软件的功能扩展和升级都变得方便简单;减少通信规约软件重新编写、编译与发布麻烦与时间;提供简单、快捷、统一的网页配置方法和界面。

权利要求 :

1.一种配置外部通信协议的系统,分别连接数据库和外部计算机,其特征在于:包括平台核心模块以及至少一配置通信协议的插件式模块;

所述平台核心模块包括核心通信模块、数据库交互模块以及通信管理模块;

所述核心通信模块分别连接所述插件式模块和所述通信管理模块,发送用户请求到所述通信管理模块,并接收所述通信管理模块发出的响应请求;

所述数据库交互模块分别连接所述核心通信模块、插件式模块以及数据库,双向交互数据,所述核心通信模块处理与数据库交互相关的任务;

所述插件式模块连接所述外部计算机,解析通信规约并传输数据,所述插件式模块包括通信规约配置模块、配置通信规约的插件实现模块、网页界面配置管理模块;

所述通信规约配置模块通过多项协议参数描述了每种通信规约的实现细节、并实现通信业务流程的配置;

所述插件实现模块为成功连接的对端节点生成一个对象,当对象激活时,所述插件实现模块接受并处理该通信连接上的所有数据收发处理、并且从通信规约配置模块中读取对应规约所有的通信参数并实现该种通信规约的数据解析、最后决定是否关闭通信连接;

所述网页界面配置管理模块提供网页界面对通信规约配置模块进行规约参数、通信业务流程进行配置并保存,并对各项内容值的输入条件进行限定。

2.如权利要求1所述的配置外部通信协议的系统,其特征在于:所述平台核心模块还包括日志管理模块,所述日志管理模块连接所述核心通信模块,发送日志管理信息到所述核心通信模块。

3.如权利要求1所述的配置外部通信协议的系统,其特征在于:所述通信规约配置模块中每条电文均由电文头部、电文数据、结束符组成。

4.如权利要求3所述的配置外部通信协议的系统,其特征在于:所述通信规约配置模块中电文的头部都是由如下字段组合而成:电文长度、电文号、时间、发送端主机代号、接收端主机代号、序列号、功能码、保留字段。

5.如权利要求4所述的配置外部通信协议的系统,其特征在于:所述电文长度、电文号、时间、发送端主机代号、接收端主机代号、序列号、功能码、保留字段均是ASCII编码或二进制编码方式。

6.如权利要求1所述的配置外部通信协议的系统,其特征在于:所述通信规约配置模块中至少包括数据电文,还包括心跳电文和通信应答电文。

7.如权利要求1所述的配置外部通信协议的系统,其特征在于:所述通信规约配置模块中电文的截取方式是通过电文长度截取或通过指定结束符截取。

8.如权利要求1所述的配置外部通信协议的系统,其特征在于:所述通信规约配置模块中的通信规约是静态规约或动态规约中的一种”。

9.如权利要求1所述的配置外部通信协议的系统,其特征在于:所述通信规约配置模块中通信连接是客户端模式、服务器模式或客户端/服务器模式中的一种。

10.如权利要求1所述的配置外部通信协议的系统,其特征在于:所述插件实现模块包括客户端和服务器端模块;

所述客户端模块连接所述外部计算机的服务器端,并将数据按通信规约要求封装电文的头部和结束符,再发送数据电文;

所述服务器端模块连接所述外部计算机的客户端,并将接收到的原始数据按通信规约要求,发送相应的确认电文、再去除数据电文的头部和结束符,最后将数据插入数据库。

11.一种配置外部通信协议的方法,其特征在于:包括配置通信规约插件服务器端运行方法和配置通信规约插件客户端运行方法;

所述配置通信规约插件服务器端运行方法包括以下步骤:步骤1A)启动配置通信规约插件服务器端;

步骤1B)设置Conn_Status=connect;

步骤1C)调函数get_protocolconfig,获得规约对应的所有的配置参数;

步骤1D)调函数init_%s(头部字段名称)函数,对规约头部每个字段种类,生成对应的格式标识符;

步骤1E)当通信连接的fd句柄设置心跳超时,设置Alive TimeOut(),执行步骤1G),结束;

当通信连接的fd句柄设置心跳为超时,执行步骤1F);

步骤1F)为通信连接的fd句柄设置读信号事件;

步骤1G)结束;

所述配置通信规约插件客户端运行方法包括以下步骤:

步骤2A)启动配置通信规约插件客户端;

步骤2B)设置Conn_Status=connect;

步骤2C)为通信连接的fd句柄设置客户端定时连接事件;

步骤2D)判断连接是否成功,若是,执行步骤2E);

步骤2E)设置Conn_Status=connect;

步骤2F)调函数get_protocolconfig,获得规约对应的所有的配置参数;

步骤2G)调函数init_%s(头部字段名称)函数,对规约头部每个字段种类,生成对应的格式标识符;

步骤2H)为通信连接的fd句柄设置定时发送心跳电文事件,设置sendAlive(),组织心跳电文,对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,发送心跳电文,执行步骤2K);

步骤2I)为通信连接成功的fd句柄设置读信号事件,设置Raw_dataCallback();

步骤2J)判断该通信规约插件客户端是否有待发数据,如无,执行步骤2K),如有,设置sendDataMessage(),组织数据电文,对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,发送数据电文,执行步骤2K);

步骤2K)结束。

12.根据权利要求11所述的配置外部通信协议的方法,其特征在于:所述配置通信规约插件服务器端运行方法中的所述步骤1F)包括以下步骤:步骤1F1)设置Raw_dataCallback();

步骤1F2)判断数据是否到达,若是,执行步骤1F3),若否,执行步骤1F10);

步骤1F3)收全数据;

步骤1F4)对电文不同的字段种类,调用对应的unpack_%s(字段名称)函数,按不同编码方式解析对应的字段;

步骤1F5)判断是否是数据电文,若是,执行步骤1F6),若否,执行步骤1F11);

步骤1F6)写入数据库;

步骤1F7)判断写入是否成功,若是,执行步骤1F8),若否,执行步骤1F14);

步骤1F8)判断协议是否有应答机制,若有执行步骤1F9),若否,执行步骤1G);

步骤1F9)当数据入库应答超时时,执行步骤1F15),否则,执行步骤1G);

步骤1F10)关闭该连接,执行步骤1G);

步骤1F11)判断是否是心跳电文,若是,执行步骤1F12),若否,执行步骤1F13);

步骤1F12)取消前次设置的心跳事件,设置下次心跳超时事件,执行步骤1G);

步骤1F13)丢弃电文;

步骤1F14)判断协议是否有应答,若有,执行步骤1F17),若无,执行步骤1G);

步骤1F15)设置DBAckTimeOut();

步骤1F16)对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,组织负应答电文;

步骤1F17)发送负应答电文,执行步骤1G)。

13.根据权利要求11所述的配置外部通信协议的方法,其特征在于:所述配置通信规约插件客户端运行方法中的所述步骤2I)包括以下步骤:步骤2I1)判断是否有数据到达,若无,则关闭连接,若有,执行步骤2I2);

步骤2I2)判断协议是否有应答,若无,则关闭连接,若有,执行步骤2I3);

步骤2I3)对电文不同的字段种类,调用对应的unpack_%s(字段名称)函数,按不同编码方式解析对应的数据;

步骤2I4)判断是否有应答电文,若无,则关闭连接,若有,取消应答超时事件,设置Status=received_ack,发送更新电文请求,收到更新电文完毕通知,发送请求下条待发电文通知,设置Status=gettingmsg,执行步骤2K)。

说明书 :

配置外部通信协议的系统及其方法

技术领域

[0001] 本发明涉及通讯协议领域,尤其是一种配置外部通信协议的系统及其方法。

背景技术

[0002] 在许多大型企业中,有若干台分布于各种层次的管理和控制计算机。它们之间需要通过数据传输进行通信。由于设备品种的多样化、制造年代的差异以及各个供应商在实现互连方式上的不同,造成了原系统内各计算机通信平台与周边基于TCP/IP的SOCKET通信接口规约多样。
[0003] 此外,原先的多数通信中间件软件系统需要为每种通信规约的使用定制开发一套协议的流程实现程序。由于不同用户所需数据内容、数据格式和数据质量千差万别,使编程人员在开发相关的通信规约程序时花费大量时间和精力,也给将来的软件维护人员带来了许多不便。
[0004] 本方案将通信中间件软件系统通过插件式软件模块实现了基于TCP/IP SOCKET技术的各种通信数据传送管理协议,并且通过提供统一的配置方法和界面实现对各种通信协议的配置。
[0005] 对用户来说,即使不具备网络和TCP/IP通信规约的专业知识,只要掌握简单的规约机制和配置方法,就可以实现对应的通信协议,为不同计算机之间提供数据通信了。
[0006] 有鉴于此,本领域发明人针对上述问题,提供了一种应用于基于TCP/IP SOCKET技术、点对点分布式结构配置外部通信协议的系统及其方法。

发明内容

[0007] 本发明的目的在于,提供一种配置外部通信协议的系统及其方法,应用于基于TCP/IP SOCKET技术、点对点分布式结构,以达到通过提供统一的配置方法和界面实现对各种通信协议的配置的目的。
[0008] 本发明采用如下技术方案:
[0009] 本发明的一种配置外部通信协议的系统,分别连接数据库和外部计算机,包括平台核心模块以及至少一配置通信协议的插件式模块;
[0010] 所述平台核心模块包括核心通信模块、数据库交互模块以及通信管理模块;
[0011] 所述核心通信模块分别连接所述插件式模块和所述通信管理模块,发送用户请求到所述通信管理模块,并接收所述通信管理模块发出的响应请求;
[0012] 所述数据库交互模块分别连接所述核心通信模块、插件式模块以及数据库,双向交互数据,所述核心通信模块处理与数据库交互相关的任务;
[0013] 所述插件式模块连接所述外部计算机,解析通信规约并传输数据,所述插件式模块包括通信规约配置模块、配置通信规约的插件实现模块、网页界面配置管理模块;
[0014] 所述通信规约配置模块通过多项协议参数描述了每种通信规约的实现细节、并实现通信业务流程的配置;
[0015] 所述插件实现模块为成功连接的对端节点生成一个对象,当对象激活时,所述插件实现模块接受并处理该通信连接上的所有数据收发处理、并且从通信规约配置模块中读取对应规约所有的通信参数并实现该种通信规约的数据解析、最后决定是否关闭通信连接;
[0016] 所述网页界面配置管理模块提供网页界面对通信规约配置模块进行规约参数、通信业务流程进行配置并保存,并对各项内容值的输入条件进行限定。
[0017] 优选地,所述平台核心模块还包括日志管理模块,所述日志管理模块连接所述核心通信模块,发送日志管理信息到所述核心通信模块。
[0018] 优选地,所述通信规约配置模块中每条电文均由电文头部、电文数据、结束符组成。
[0019] 优选地,所述通信规约配置模块中电文的头部都是由如下字段组合而成:电文长度、电文号、时间、发送端主机代号、接收端主机代号、序列号、功能码、保留字段。
[0020] 优选地,所述字段是ASCII编码或二进制编码方式。
[0021] 优选地,所述通信规约配置模块中至少包括数据电文,还包括心跳电文和通信应答电文。
[0022] 优选地,所述通信规约配置模块中电文的截取方式是通过电文长度截取或通过指定结束符截取。
[0023] 优选地,所述通信规约配置模块中通信规约、静态规约或动态规约中的一种。
[0024] 优选地,所述通信规约配置模块中通信连接是客户端模式、服务器模式或客户端/服务器模式中的一种。
[0025] 优选地,所述插件实现模块包括客户端和服务器端模块;
[0026] 所述客户端模块连接所述外部计算机的服务器端,并将数据按通信规约要求封装电文的头部和结束符,再发送数据电文;
[0027] 所述服务器端模块连接所述外部计算机的客户端,并将接收到的原始数据按通信规约要求,发送相应的确认电文、再去除数据电文的头部和结束符,最后将数据插入数据库。
[0028] 还提供一种配置外部通信协议的方法,包括配置通信规约插件服务器端运行方法和配置通信规约插件客户端运行方法;
[0029] 所述配置通信规约插件服务器端运行方法包括以下步骤:
[0030] 步骤1A)启动配置通信规约插件服务器端;
[0031] 步骤1B)设置Conn_Status=connect;
[0032] 步骤1C)调函数get_protocolconfig,获得规约对应的所有的配置参数;
[0033] 步骤1D)调函数init_%s(头部字段名称)函数,对规约头部每个字段种类,生成对应的格式标识符;
[0034] 步骤1E)当该通信连接的fd句柄设置心跳超时,设置AliveTimeOut(),执行步骤1G),结束;
[0035] 当该通信连接的fd句柄设置心跳为超时,执行步骤1F);
[0036] 步骤1F)为该通信连接的fd句柄设置读信号事件;
[0037] 步骤1G)结束;
[0038] 所述配置通信规约插件客户端运行方法包括以下步骤:
[0039] 步骤2A)启动配置通信规约插件客户端;
[0040] 步骤2B)设置Conn_Status=connect;
[0041] 步骤2C)为该通信连接的fd句柄设置客户端定时连接事件;
[0042] 步骤2D)判断连接是否成功,若是,执行步骤2E);
[0043] 步骤2E)设置Conn_Status=connect;
[0044] 步骤2F)调函数get_protocolconfig,获得规约对应的所有的配置参数;
[0045] 步骤2G)调函数init_%s(头部字段名称)函数,对规约头部每个字段种类,生成对应的格式标识符;
[0046] 步骤2H)为该通信连接的fd句柄设置定时发送心跳电文事件,设置sendAlive(),组织心跳电文,对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,发送心跳电文,执行步骤步骤2K);
[0047] 步骤2I)为该通信连接成功的fd句柄设置读信号事件,设置Raw_dataCallback();
[0048] 步骤2J)判断该回线是否有待发数据,如无,执行步骤2K),如有,设置sendDataMessage(),组织数据电文,对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,发送数据电文,执行步骤2K);
[0049] 步骤2K)结束。
[0050] 优选地,所述配置通信规约插件服务器端运行方法中的所述步骤1F)包括以下步骤:
[0051] 步骤1F1)设置Raw_dataCallback();
[0052] 步骤1F2)判断数据是否到达,若是,执行步骤1F3),若否,执行步骤1F10);
[0053] 步骤1F3)收全数据;
[0054] 步骤1F4)对电文不同的字段种类,调用对应的unpack_%s(字段名称)函数,按不同编码方式解析对应的字段;
[0055] 步骤1F5)判断是否是数据电文,若是,执行步骤1F6),若否,执行步骤1F11);
[0056] 步骤1F6)写入数据库;
[0057] 步骤1F7)判断写入是否成功,若是,执行步骤1F8),若否,执行步骤1F14);
[0058] 步骤1F8)判断协议是否有应答机制,若有执行步骤1F9),若否,执行步骤1G);
[0059] 步骤1F9)当数据入库应答超时时,执行步骤1F15),否则,执行步骤1G);
[0060] 步骤1F10)关闭该连接,执行步骤1G);
[0061] 步骤1F11)判断是否是心跳电文,若是,执行步骤1F12),若否,执行步骤1F13);
[0062] 步骤1F12)取消前次设置的心跳事件,设置下次心跳超时事件,执行步骤1G);
[0063] 步骤1F13)丢弃电文;
[0064] 步骤1F14)判断协议是否有应答,若有,执行步骤1F17),若无,执行步骤1G);
[0065] 步骤1F15)设置DBAckTimeOut();
[0066] 步骤1F16)对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,组织负应答电文;
[0067] 步骤1F17)发送负应答电文,执行步骤1G)。
[0068] 优选地,所述配置通信规约插件客户端运行方法中的所述步骤2I)包括以下步骤:
[0069] 步骤2I1)判断是否有数据到达,若无,则关闭连接,若有,执行步骤2I2);
[0070] 步骤2I2)判断协议是否有应答,若无,则关闭连接,若有,执行步骤2I3);
[0071] 步骤2I3)对电文不同的字段种类,调用对应的unpack_%s(字段名称)函数,按不同编码方式解析对应的数据;
[0072] 步骤2I4)判断是否有应答电文,若无,则关闭连接,若有,取消应答超时事件,设置Status=received_ack,发送更新电文请求,收到更新电文完毕通知,发送请求下条待发电文通知,设置Status=gettingmsg,执行步骤2K)。
[0073] 由于采用了上述技术,本发明能够很好实现软件模块的分工开发,能够大量复用代码;插件技术的使用使得通信平台核心软件的功能扩展和升级都变得方便简单;减少大量的通信规约软件重新编写、编译与发布麻烦与时间;提供简单、快捷、统一的网页配置方法和界面。
[0074] 以下结合附图及实施例进一步说明本发明。

附图说明

[0075] 图1为本发明的配置外部通信协议的系统的模块连接示意图;
[0076] 图2为本发明中插件实现模块的模块连接示意图;
[0077] 图3为实施例中配置通信规约插件服务器端运行流程图;
[0078] 图4为实施例中配配置通信规约插件客户端运行流程图。

具体实施方式

[0079] 下面通过图1至4来介绍本发明的一种具体实施例。
[0080] 如图1所示,本发明的配置外部通信协议的系统,分别连接数据库和外部计算机,包括平台核心模块以及至少一配置通信协议的插件式模块;
[0081] 所述平台核心模块包括核心通信模块、数据库交互模块以及通信管理模块;
[0082] 所述核心通信模块分别连接所述插件式模块和所述通信管理模块,发送用户请求到所述通信管理模块,并接收所述通信管理模块发出的响应请求;
[0083] 所述数据库交互模块分别连接所述核心通信模块、插件式模块以及数据库,双向交互数据,所述核心通信模块处理与数据库交互相关的任务;
[0084] 所述插件式模块连接所述外部计算机,解析通信规约并传输数据,所述插件式模块包括通信规约配置模块、配置通信规约的插件实现模块、网页界面配置管理模块;
[0085] 所述通信规约配置模块通过多项协议参数描述了每种通信规约的实现细节、并实现通信业务流程的配置;
[0086] 所述插件实现模块为成功连接的对端节点生成一个对象,当对象激活时,所述插件实现模块接受并处理该通信连接上的所有数据收发处理、并且从通信规约配置模块中读取对应规约所有的通信参数并实现该种通信规约的数据解析、最后决定是否关闭通信连接;
[0087] 所述网页界面配置管理模块提供网页界面对通信规约配置模块进行规约参数、通信业务流程进行配置并保存,并对各项内容值的输入条件进行限定。
[0088] 所述平台核心模块还包括日志管理模块,所述日志管理模块连接所述核心通信模块,发送日志管理信息到所述核心通信模块。
[0089] 如图2所示,所述插件实现模块包括客户端和服务器端模块;所述客户端模块连接所述外部计算机的服务器端,并将数据按通信规约要求封装电文的头部和结束符,再发送数据电文;所述服务器端模块连接所述外部计算机的客户端,并将接收到的原始数据按通信规约要求,发送相应的确认电文、再去除数据电文的头部和结束符,最后将数据插入数据库。
[0090] 通过对大量信息系统集成工程项目中使用的各种基于TCP/IP SOCKET通信规约的分析和总结,所述通信规约配置模块中,对绝大部分通信协议的规约特征总结规则如下:
[0091] 每条电文均由电文头部、电文数据、结束符构成。
[0092] 电文的头部都是由如下字段组合而成:电文长度、电文号、时间、发送端主机代号、接收端主机代号、序列号、功能码、保留字段。
[0093] 这些字段可能是ASCII编码,也可能是二进制编码方式。
[0094] 除了数据电文外,有心跳电文和通信应答电文。
[0095] 电文的截取方式或者是通过电文长度截取,或者是通过指定结束符截取。
[0096] 通信规约或是静态规约、或是动态规约。
[0097] 通信连接或是客户端模式、服务器模式或客户端/服务器模式中的一种。
[0098] 基于以上规约特性的抽象,该功能模块采用以下多项协议参数完整的描述每种通信规约的实现细节。
[0099] Isbyheadlength:1表示用头部长度截取电文,0表示用结束符截取电文;
[0100] Byetx:表示通过结束符截取电文时用的字符;
[0101] Headsectionsum:表示电文头部由几个字段构成;
[0102] Headsize:表示电文头部有几个字节;
[0103] head_section:表示电文头部的构成内容,包括每个字段的编码方式及长度;
[0104] Connectiontype:表示规约的连接类型是C/S/CS结构;
[0105] Hasalive:表示规约有无心跳;
[0106] Alivemessage:表示心跳电文的格式;
[0107] Alive_body:表示心跳电文的内容;
[0108] Etx:表示电文的结束符;
[0109] Hasack:表示规约有无应答机制;
[0110] ack_messageid:表示应答电文的电文号;
[0111] ack_body:正应答电文的内容;
[0112] Nack_body:负应答电文的内容;
[0113] Isdynamic:表示连接是动态或静态。
[0114] 如图3和4所示,本发明的配置外部通信协议的方法包括配置通信规约插件服务器端运行方法和配置通信规约插件客户端运行方法;
[0115] 如图3所示,配置通信规约插件服务器端运行主流程:
[0116] 步骤1A)启动配置通信规约插件服务器端;
[0117] 步骤1B)设置Conn_Status=connect;
[0118] 步骤1C)调函数get_protocolconfig,获得规约对应的所有的配置参数;
[0119] 步骤1D)调函数init_%s(头部字段名称)函数,对规约头部每个字段种类,生成对应的格式标识符;
[0120] 步骤1E)当该通信连接的fd句柄设置心跳超时,设置AliveTimeOut(),执行步骤1G),结束;当该通信连接的fd句柄设置心跳为超时,执行步骤1F);
[0121] 步骤1F)为该通信连接的fd句柄设置读信号事件;
[0122] 步骤1F1)设置Raw_dataCallback();
[0123] 步骤1F2)判断数据是否到达,若是,执行步骤1F3),若否,执行步骤1F10);
[0124] 步骤1F3)收全数据;
[0125] 步骤1F4)对电文不同的字段种类,调用对应的unpack_%s(字段名称)函数,按不同编码方式解析对应的字段;
[0126] 步骤1F5)判断是否是数据电文,若是,执行步骤1F6),若否,执行步骤1F11);
[0127] 步骤1F6)写入数据库;
[0128] 步骤1F7)判断写入是否成功,若是,执行步骤1F8),若否,执行步骤1F14);
[0129] 步骤1F8)判断协议是否有应答机制,若有执行步骤1F9),若否,执行步骤1G);
[0130] 步骤1F9)当数据入库应答超时时,执行步骤1F15),否则,执行步骤1G);
[0131] 步骤1F10)关闭该连接,执行步骤1G);
[0132] 步骤1F11)判断是否是心跳电文,若是,执行步骤1F12),若否,执行步骤1F13);
[0133] 步骤1F12)取消前次设置的心跳事件,设置下次心跳超时事件,执行步骤1G);
[0134] 步骤1F13)丢弃电文;
[0135] 步骤1F14)判断协议是否有应答,若有,执行步骤1F17),若无,执行步骤1G);
[0136] 步骤1F15)设置DBAckTimeOut();
[0137] 步骤1F16)对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,组织负应答电文;
[0138] 步骤1F17)发送负应答电文,执行步骤1G);
[0139] 步骤1G)结束。
[0140] 如图4所示,配置通信规约插件客户端运行方法的流程如下:
[0141] 步骤2A)启动配置通信规约插件客户端;
[0142] 步骤2B)设置Conn_Status=connect;
[0143] 步骤2C)为该通信连接的fd句柄设置客户端定时连接事件;
[0144] 步骤2D)判断连接是否成功,若是,执行步骤2E);
[0145] 步骤2E)设置Conn_Status=connect;
[0146] 步骤2F)调函数get_protocolconfig,获得规约对应的所有的配置参数;
[0147] 步骤2G)调函数init_%s(头部字段名称)函数,对规约头部每个字段种类,生成对应的格式标识符;
[0148] 步骤2H)为该通信连接的fd句柄设置定时发送心跳电文事件,设置sendAlive(),组织心跳电文,对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,发送心跳电文,执行步骤2K);
[0149] 步骤2I)为该通信连接成功的fd句柄设置读信号事件,设置Raw_dataCallback(),执行步骤2I1);
[0150] 步骤2I1)判断是否有数据到达,若无,则关闭连接,若有,执行步骤2I2);
[0151] 步骤2I2)判断协议是否有应答,若无,则关闭连接,若有,执行步骤2I3);
[0152] 步骤2I3)对电文不同的字段种类,调用对应的unpack_%s(字段名称)函数,按不同编码方式解析对应的数据;
[0153] 步骤2I4)判断是否有应答电文,若无,则关闭连接,若有,取消应答超时事件,设置Status=received_ack,发送更新电文请求,收到更新电文完毕通知,发送请求下条待发电文通知,设置Status=gettingmsg,执行步骤2K);
[0154] 步骤2J)判断该回线是否有待发数据,如无,执行步骤2K),如有,设置sendDataMessage(),组织数据电文,对应电文头部不同的字段种类,调用对应的pack_%s(字段名称)函数,按不同编码方式生成对应的数据,发送数据电文,执行步骤2K);
[0155] 步骤2K)结束。
[0156] 本发明中的网页界面配置管理模块负责以人性化、交互化方式提供网页界面对通信规约配置模块进行规约参数、通信业务流程进行配置并保存,同时对各项内容值的输入条件进行限定。
[0157] 本配置化外部通信协议插件模块在使用中对规约配置简单灵活。
[0158] 以下配置实例是对二级机常见PLC通信规约的配置的试验数据:
[0159] [plc]
[0160] [connection]
[0161] connectiontype=c
[0162] isdynamic=0
[0163] isbyheadlength=1
[0164] byetx=[]
[0165] [head_format]
[0166] head_size=4
[0167] head_section_number=2
[0168] head_section_1=length
[0169] head_section_2=messageid
[0170] head_section_3=[]
[0171] head_section_4=[]
[0172] head_section_5=[]
[0173] head_section_6=[]
[0174] head_section_7=[]
[0175] length=BIN1-2/*BIN表示二进制编码,ASC表示ascii编码*/
[0176] messageid=BIN3-4
[0177] time=[]
[0178] localdc=[]
[0179] remotedc=[]
[0180] func=[]
[0181] reserved=[]
[0182] [alive]
[0183] hasalive=0
[0184] alive_messageid=[]#[]表示应用电文号
[0185] alive_body=[]
[0186] alive_func=[]
[0187] [ack]
[0188] hasack=0
[0189] ack_messageid=[]
[0190] ack_body=[]
[0191] Nack_body=[]
[0192] ack_func=[]
[0193] nack_func=[]
[0194] [etx_format]
[0195] etx_length=[]
[0196] etx_format=[]
[0197] etx=[]
[0198] 以下配置实例是对三级机标准通信规约的配置:
[0199]
[0200]
[0201] 通过充分的测试,该配置外部通信协议的系统在规约配置的灵活性、多样性、数据传输的可靠性等各项指标均达到性能要求,完全实现了设计目标,方案取得了成功。
[0202] 综上可知,由于采用了上述技术,本发明能够很好实现软件模块的分工开发,能够大量复用代码;插件技术的使用使得通信平台核心软件的功能扩展和升级都变得方便简单;减少大量的通信规约软件重新编写、编译与发布麻烦与时间;提供简单、快捷、统一的网页配置方法和界面。
[0203] 以上所述的实施例仅用于说明本发明的技术思想及特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,不能仅以本实施例来限定本发明的专利范围,即凡依本发明所揭示的精神所作的同等变化或修饰,仍落在本发明的专利范围内。