• 查询稿件
  • 获取最新论文
  • 知晓行业信息
官方微信 欢迎关注

基于lwIP的列车运行控制系统车载设备分组交换通信软件设计

包正堂

包正堂. 基于lwIP的列车运行控制系统车载设备分组交换通信软件设计[J]. 铁路计算机应用, 2023, 32(12): 73-79. DOI: 10.3969/j.issn.1005-8451.2023.12.13
引用本文: 包正堂. 基于lwIP的列车运行控制系统车载设备分组交换通信软件设计[J]. 铁路计算机应用, 2023, 32(12): 73-79. DOI: 10.3969/j.issn.1005-8451.2023.12.13
BAO Zhengtang. Design of lwIP-based packet switching communication software for on-board equipment of train control system[J]. Railway Computer Application, 2023, 32(12): 73-79. DOI: 10.3969/j.issn.1005-8451.2023.12.13
Citation: BAO Zhengtang. Design of lwIP-based packet switching communication software for on-board equipment of train control system[J]. Railway Computer Application, 2023, 32(12): 73-79. DOI: 10.3969/j.issn.1005-8451.2023.12.13

基于lwIP的列车运行控制系统车载设备分组交换通信软件设计

基金项目: 国家重点研发计划(2022YFB4300500)
详细信息
    作者简介:

    包正堂,工程师

  • 中图分类号: U284.48 : TP39

Design of lwIP-based packet switching communication software for on-board equipment of train control system

  • 摘要: 无线通信网络是实现铁路行车调度和列车运行控制业务的关键技术之一。目前在用的GSM-R窄带网络在通信容量和性能方面已无法满足日益丰富的铁路运营需求。随着铁路无线通信技术从GSM-R电路交换向GPRS分组交换过渡,ETCS和CTCS列车运行控制系统规范均引入了TCP/IP协议来承载可靠传输服务。文章参考国内外相关标准规范,详细分析GPRS分组交换通信网络对等通信分层结构及车地通信流程,提出基于lwIP开源协议栈的列车运行控制系统车载设备分组交换通信软件设计。该软件具有分层架构和模块化设计,可在不修改原有列车运行控制系统应用软件及安全机制的前提下,仅对其电路交换通信部分进行简单改造即可完成升级,支持列控业务向GPRS分组交换网络的无缝迁移。该通信软件已成功移植到多款自主化列车自动驾驶(ATO,Automatic Train Operation)系统、列车自动防护(ATP,Automatic Train Protection)系统车载硬件平台及国产化操作系统中。
    Abstract: Wireless communication network is one of the key technologies for railway train dispatch and train operation control services. The existing GSM-R narrow band network is no longer able to meet the ever-increasingly diverse needs of railway operation in terms of communication capacity and performance. With the transition of railway wireless communication technology from GSM-R circuit switching to GPRS packet switching, TCP/IP protocols have been included in the specifications of the train control system, ETCS and CTCS, to carry reliable transmission services. Referring to relevant domestic and foreign specifications, this article expounds the peer-to-peer communication layer structure and train ground communication process of GPRS packet switching communication network. A design of the packet switching communication software for the on-board equipment of the train control system based on the open source protocol stack lwIP is proposed, which has a layered architecture and modular design and can be upgraded by simply modifying the circuit switching communication part of the original application software and security mechanism of the train control system without any other modification to achieve seamless migration of train control services to GPRS packet switching network. The communication software has been successfully ported to the onboard hardware platforms of multiple domestic automatic train operation (ATO) systems and automatic train protection (ATP) systems with domestic operating systems.
  • GSM-R作为铁路专网无线通信标准,已在国内外广泛应用,是高速铁路CTCS-3级列车运行控制系统(简称:列控系统)的关键技术之一[1]。随着铁路行车调度和列车运行控制业务(简称:列控业务)的不断扩展,GSM-R窄带网络在容量和性能方面已难以满足日益丰富的运营需求。

    GPRS在GSM-R上叠加新的网络实体来实现分组数据服务,与既有网络相比,GPRS在通信速率、实时性、连接管理上具有明显优势。目前,欧洲铁路ETCS系统基线三subset-037欧洲无线电系统功能接口规范涵盖了GPRS通信要求[2]。我国高速铁路ATO系统已将GPRS应用于车载ATO与临时限速服务器(TSRS, Temporary Speed Reduction Server)的通信[3]。中国国家铁路集团有限公司(简称:国铁集团)正在推进的CTCS-4级列控系统预研方案中,将GPRS用于车地之间、列首与安全列尾之间的通信[4]。GPRS引入不但可实现铁路装备技术向分组通信的过渡,为今后铁路专用网向4G/5G演进奠定基础。

    列控业务使用GPRS主要是传输安全相关数据,安全相关信息的交互必须遵循安全通信相关标准。在研究基于GPRS的列控业务通信技术的过程中,考虑到无线网络建设的巨大成本、地域性和复杂性,应以列控系统车载设备(简称:车载设备)的分组交换通信技术研究为先导,在不修改原有应用软件及安全机制的前提下,逐步实现列控业务向GPRS网络的无缝迁移。

    本文基于GPRS分组域车地通信规范,研究设计车载设备分组交换通信软件,选用开源lwIP作为TCP/IP协议栈,将车载设备通信业务接入GPRS分组域,以提升车载设备通信能力,满足铁路日益增加的数字化和智能化业务需求。

    欧洲电工标准化委员会(CENELEC)铁路安全通信标准EN 50159定义了开放网络下安全相关系统通信传输的参考架构[5-6],包括安全相关传输系统、通信系统及开放网络。

    基于此标准,列控系统相关接口规范中定义了提供安全相关传输系统功能的安全功能模块(SFM,Safe Functional Module)和提供通信系统功能的通信功能模块(CFM,Communication Functional Module)。SFM提供安全相关传输服务,实现安全连接生命周期管理和安全数据交互,与具体通信网络制式无关;CFM对接开放式网络提供的通信服务,是车载设备适配和实现分组交换通信的关键模块。

    CFM对等实体之间通过GSM-R/GPRS开放网络或封闭网络通信,是车地通信网络中的关键组成部分,负责实现车载设备与地面设备之间的电路交换及分组交换通信。为兼容多种通信制式,ETCS在CFM中增加了传输制式配置功能,支持GSM-R电路交换与GPRS分组交换之间的动态切换。此功能与CFM分组交换通信无关,且国内无该需求,本文暂不涉及。

    按照“协议水平、服务垂直”的原则,设计车载设备分组交换通信网络体系,自上而下划分为3个层次:应用、SFM以及CFM;各层之间互为服务的提供者和使用者,通过各自定义的服务访问点来交互。应用负责业务交互;SFM负责安全层对等实体的安全连接管理及交互,包括消息完整性、校验以及错误上报等。CFM负责提供符合ITU-T X.214传输层模型的传输服务以及电台(MT,Mobile Terminal)交互服务[2],相当于实现了OSI开放网络传输参考模型中的第4层(即传输层)、第3层(即网络层)和第2层(数据链路层),具体包括:(1)传输层连接的建立和释放,可靠数据的传输,透明数据传输;(2)MT注册及网络信息上报。

    为了实现车载设备分组交换通信,还需要具备一些必要条件,如:MT及无线网络均需支持GPRS,无线网络需提供专用接入点名称等。

    在GPRS分组交换传输模式下,车地双方各通信层划分为相对应的功能实体,同一层的实体称为对等实体。GPRS分组交换通信网络对等通信分层结构如图1所示。

    图  1  GPRS分组交换通信网络分层结构示意

    对等实体之间像是在直接通信,无需关注具体的数据路径。每一层对等实体实现完全独立的功能,层与层之间实现协议和服务的转换,即向上一层提供服务,向下一层输出协议。自上而下的,既有应用至安全层无需修改,新增适配层实体(ALE,Adapter Layer Entity)用于适配面向字节流的TCP传输服务, TCP/IP协议栈实现可靠传输,包括传输层、网络层和数据链路层,既有物理层不变,既有AT命令使用分组交换命令集合。

    CFM中每个物理通道即对应一个MT。在分组交换传输模式下,每个物理通道支持多个传输连接,而电路交换传输模式下该功能是可选的。

    GSM-R/GPRS车地通信过程如图2所示。

    图  2  GSM-R/GPRS车地通信过程示意

    (1)当车载设备控制MT完成GPRS附着和PDP上下文激活后,MT即与对应的公用数据网(PDN,Public Data Network)之间建立数据承载,获得PDN分配的IP地址,并进入数据模式[7]。在这一过程中,车载设备使用既有电路交换接口IGSM-R与MT交互,AT命令使用TS 27.010协议的分组交换部分(也称为IGPRS接口),物理层为RS-422。

    (2)MT进入数据模式后,CFM需要借助点对点通信协议(PPP,Point-Point Protocol)与MT通信。PPP协议对应于OSI模型中第2层,起初作为用户与互联网提供商之间的数据链路层协议,因其简单可靠被广泛采用。PPP协议中的各部分先后实现物理链路协商、鉴权验证、网络地址配置等功能,也称为PPP拨号,是CFM实现网络通信的基础。当CFM完成PPP拨号流程后,双方随即建立IP通信,CFM可借助分配给MT的IP地址,尝试与地面对等实体建立传输服务。

    CFM使用TCP实现可靠传输,为了实现与TCP/IP协议的映射管理,CFM提供了ALE,用以实现安全层与TCP传输层之间的功能适配,具体包括:建立和释放TCP连接,安全层与TCP的数据映射,通道状态监控等。

    分组网络采用IP通信,需引入TCP/IP协议栈实现GPRS网络上的可靠数据传输。采用成熟免费的开源嵌入式协议栈来开发分组交换通信软件,可降低开发和维护成本,且开发人员能够完全掌握源码。表1列出较为著名开源嵌入式TCP/IP协议栈[8-11]

    表  1  开源嵌入式TCP/IP协议栈
    TCP/IP协议栈 详细说明 开源许可证 备注
    uIP C语言开发,最初为8/16位微处理器设计,用于物联网操作系统Contiki,代码仅几KB且RAM需求
    可压缩到几百字节
    BSD许可证 设计由用户实现PPP
    fNET C语言开发,支持IPv4和IPv6,可用于32位处理器的嵌入式通信,提供了异常丰富的应用协议组件,
    数据链路层支持较弱
    Apache许可证2.0 不支持PPP
    uC/IP 基于BSD代码开发,适用uC/OS且支持Linux和DOS目标平台,适合学习,lwIP的PPP模块即来自该版本,
    协议栈久未更新
    BSD许可证 缺乏维护更新
    lwIP C语言开发,针对嵌入式系统的小型独立的开源TCP/IP协议栈,功能完整,可移植性和剪裁性优秀,
    应用广泛,长期更新
    BSD许可证 支持PPPoS和PPPoE
    下载: 导出CSV 
    | 显示表格

    车载设备一般采用嵌入式实时操作系统,产品生命周期较长,开源嵌入式TCP/IP协议栈的选择应考虑高可靠、轻量化、易于移植和长期维护有保证。

    车载设备分组交换通信与电台使用PPP协议,考虑到软件成熟度和稳定性,lwIP是最佳TCP/IP协议栈选择。lwIP由瑞士计算机科学院Adam Dunkels开发,目前源代码托管在自由软件基金会(Free Software Foundation)公共代码托管和协作平台Savannah上,最新版本为2.1.3[12]

    lwIP协议栈结构清晰简洁,可划分为用户接口层、系统及内核运行层、网卡接口层3部分。lwIP协议栈结构如图3所示。

    图  3  lwIP协议栈结构示意

    用户接口层分为BSD风格接口、顺序风格接口和原生接口3类。系统及内核运行层支持带操作系统(提供多线程)和不带操作系统(阻塞读写)2种方式。网卡接口层是lwIP定义的抽象网卡数据结构,由开发人员根据实际硬件驱动实现。

    lwIP的移植与内核运行方式相关,本文操作系统模式(即lwIP定义的OS mode),lwIP移植涉及的主要组件及配置包括:系统抽象层、定时器、编译器及平台、临界区设置、用户配置。

    (1) 系统抽象层:主要包括信号量、互斥锁、邮箱(消息队列)、线程创建、同步防护等;lwIP使用信号量实现任务同步,借助邮箱实现任务间通信,通过共享内存完成缓存传递;若操作系统支持优先级反转处理的互斥锁,无需使用信号量模拟(即lwIP默认方式)。

    (2) 定时器:向lwIP内核线程运行提供一个定时器,计时单位为ms。

    (3) 编译器及平台:编译器主要包括数据类型、编译器内存对齐、基础库依赖、打印及故障处理等。

    (4) 临界区设置:为了避免任务间内存分配和释放出现异常,lwIP要求用户提供轻量级快速防护机制;对于嵌入式系统,可通过禁用中断或使用信号量、互斥锁实现临界区设置。为保证性能,建议优先使用后者,避免频繁的任务调度操作造成性能下降。

    (5) 用户配置:提供了强大灵活的剪裁与配置宏开关,开发人员可通过用户头文件lwipopts.h进行设置,按需定义运行方式、协议族配置、网卡配置、内存管理等。

    车载设备软件一般可分为主控软件和通信软件2部分。主控软件执行安全应用(包含安全层),需运行在SIL4级硬件上;通信软件不承担安全功能,可以运行于SIL0级硬件。

    为使车载设备具备分组交换通信能力,需要对其通信软件进行修改,主要包括CFM集成lwIP以实现可靠传输,新增使用AT命令分组交换集合等,原有通信软件的应用及电台控制功能不变。

    车载设备分组交换通信软件的主要功能模块包括:ALE模块、lwIP协议栈、电台控制模块、串口控制模块、PPP网卡适配模块,软件架构如图4所示。

    图  4  车载设备分组交换通信软件架构

    (1)ALE模块通过离散的、非定长的ALE数据包,实现端到端的数据传输[2]。通过一系列传输服务接入点(TSAP,Transport Service Access Point)向上层用户(安全层)提供传输服务,通过T原语交互。

    (2)lwIP协议栈具体实现了TCP/IP协议。基于 lwIP用户接口可实现一系列TCP服务访问点(TCPSAP,TCP Service Access Point),即TCP服务原语, 通过这些原语可以向抽象的TCP服务用户(TCP-User),例如ALE模块提供传输服务。

    (3)串口控制模块封装了RS-422通信驱动,向PPP网卡适配模块及电台控制模块提供基础的串口通信,即IGPRS接口的物理实现。

    (4)电台控制模块通过串口控制模块与电台进行AT命令交互,并监测电台状态;当电台进入数据模式后,通知应用创建PPP网卡接口,进而可与服务端进行IP通信。

    (5)PPP网卡适配模块基于lwIP的PPP组件和网卡组件,通过集成串口控制模块,实现PPP网卡接口的创建、删除和操作功能。该模块创建网卡的个数与MT个数相对应。lwIP中数据链路层不同协议组件均可表示为统一的抽象网卡数据结构,由网卡组件来管理,支持IEEE802.1D bridge,6LoWPAN (RFC 4944),6LoWPAN over BLE (RFC 7668),PPP,SLIP - Serial Line Internet Protocol (RFC 1055),ZEP - ZigBee Encapsulation Protocol等协议[11]

    车载设备分组交换通信软件面向多任务操作系统的运行时任务主要包括:应用任务、电台控制任务、PPP通信任务、lwIP内核任务,具体处理流程如图5所示。

    图  5  车载设备分组交换通信软件处理流程

    该软件启动后,先进行操作系统及lwIP初始化,之后依次创建应用任务和电台控制任务, lwIP内核任务由lwIP初始化函数自动创建。

    应用任务通过调度ALE模块实时处理安全层T原语。当需要建立安全通信时,先控制电台完成PDP上下文激活,并进入数据模式;随后创建PPP通信任务执行链路建立;当PPP协议完成IP地址协商后,软件可通过网络与服务端建立TCP连接,进行后续ALE、安全层的对等通信。

    lwIP支持PPP协议运行在以太网(PPPoE,PPP Over Ethernet)和串口(PPPoS,PPP Over Serial)上。当启用PPPoS时,与硬件紧密相关的串口控制需要由用户来实现。lwIP内核头文件sio.h提供了一组串口模型(SIO,Serial Input Output)的接口定义,用以支持SLIP、PPP等运行在串口上的数据链路层协议。串口控制模块的主要接口函数如表2所示。

    表  2  串口控制模块主要接口函数
    函数名 函数说明
    sio_fd_t sio_open(u8_t devnum) 打开通信串口
    void sio_send(u8_t c, sio_fd_t fd) 向串口设备发送单个字符
    u8_t sio_recv(sio_fd_t fd) 从串口设备接收单个字符
    u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len) 从串口阻塞读取直到要求
    的大小或超时
    u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len) 尝试从串口读取若无数据
    立即返回
    u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len) 向串口写入数据
    void sio_read_abort(sio_fd_t fd) 终止阻塞读取(结束会话,
    断开或显式关闭)
    下载: 导出CSV 
    | 显示表格

    lwIP的PPPoS组件提供Raw API和线程安全PPP API 2套接口;Raw API属于轻量级设计,只能用于无操作系统的场景,或仅在lwIP内核线程中调用。列控业务属于多任务场景,应使用线程安全PPP API来实现应用操作,其声明包含在pppapi.h中。此外,按照lwIP适配要求,用户应实现PPP输入任务和PPP输出接口。

    PPP协议包括链路控制协议(LCP,Link Control Protocol)、鉴权协议(AP,Authentication Protocol)、网络控制协议(NCP,Network Control Protocol)3部分。其中,NCP用来协商和配置网络层;当网络层采用IPv4协议时,NCP为IPCP(Internet Protocol Control Protocol)。当点对点通信会话结束或出现错误时,NCP首先释放网络层连接,收回IP地址,接着LCP释放数据链路层和物理层连接。

    lwIP的PPPoS组件支持Raw API和线程安全PPP API 2套接口。Raw API为轻量级设计,只用于无操作系统的场景,或在lwIP内核线程中调用。列控业务属于多任务场景,使用线程安全PPP API来实现应用操作,其声明包含在pppapi.h中。此外,需按照规范要求,实现PPP输入任务和PPP输出接口。

    PPP网卡适配模块实现的主要接口函数如表3所示。该模块与应用通过预定义的PPP网卡描述符ppp_descripror进行交互,每个PPP网卡描述符对应独立的数据输入任务。PPP网卡适配工作流程如图6所示。

    表  3  PPP网卡适配模块的主要接口函数
    用户接口 函数说明
    void pppos_rx_thread(void *arg) PPP输入任务,将串口输入数据通过pppos_input_tcpip传递到lwIP内核线程中。
    uint32_t ppp_output_cb(ppp_pcb *pcb, uint8_t *data, uint32_t len, void *ctx) PPP输出接口,将数据输出到串口中,是lwIP定义的回调接口。
    int32_t ppp_Open(sio_fd_t fd) 创建PPP网卡数据结构,进行PPP链路建立,同时创建并启动数据接收任务pppos_rx_thread。若成功返回一个唯一的PPP连接描述符。
    int32_t ppp_Terminate(int32_t ppp_descriptor) 终止PPP连接并释放资源,通知串口数据接收任务终止并删除。
    int8_t ppp_IOCtl(int32_t ppp_descriptor, uint8_t cmd, void *arg) 获取相应PPP连接的建立状态,用于应用监控是否可以通信。
    下载: 导出CSV 
    | 显示表格

    当上层应用收到连接命令时,控制电台进入数据模式,再调用PPP_Open创建PPP网卡数据结构,依次进行LCP逻辑链路协商、鉴权认证及NCP网络协议协商;待NCP成功完成网络层IP地址协商,PPP链路处于打开状态,再继续执行TCP连接建立。

    当上层应用收到断开命令时,断开TCP连接,再调用PPP_Terminate断开PPP链路、删除任务并进行PPP网卡资源释放,最终控制电台回到命令模式。

    另外,开发人员还要实现一些必要的回调函数,用于内核线程实现数据收发、通知PPP链路状态改变、网卡状态改变等操作。

    图  6  PPP网卡适配模块执行流程

    ALE模块连接既有上层应用(安全层等)和TCP/IP协议栈,起到承上启下作用,包括ALE功能层和ALE网络接口层,其分层结构如图7所示。

    图  7  ALE模块分层结构示意

    (1)ALE功能层实现上层应用(安全层等)要求的T服务原语,包括主动发起的命令动作和需要上报的网络状态事件。ALE功能层定义的服务原语分为连接建立、数据传输、连接释放3类、共8个服务原语,共同完成传输服务。T服务原语的报文结构和传输规则应满足列控系统分组交换通信相关标准,subset-037 欧洲无线电系统功能接口规范、高速铁路ATO系统与GSM-R网络接口暂行技术条件等。

    (2)ALE网络接口层实现对TCP/IP协议栈调用,但相关标准并未定义ALE层如何实现与TCP服务的接口。根据RFC793[13],TCP协议状态转换的原因可分为用户调用(the user calls)、收到报文段(the incoming segments)和超时(timeouts)。为了抽象出TCP服务原语,对上述状态转换原因进行梳理,定义了一组参考的TCP服务原语,包括12种TCP服务原语,如表4所示。

    表  4  TCP服务原语
    动作 说明
    TCP_LISTEN_ON_PORT TCP用户在给定端口上被动打开
    TCP_OPEN_PORT TCP用户在指定端口上主动打开
    TCP_SEND_DATA TCP用户从连接读取数据。
    TCP_READ_DATA TCP用户在该连接发送数据
    TCP_CLOSE TCP用户关闭连接(发送待处理数据)
    TCP_ABORT TCP用户关闭连接(丢失待处理数据)
    TCP_STATUS TCP用户需要的连接状态的信息
    事件 说明
    TCP_CONNECTED 打开成功(不管是主动还是被动)
    TCP_CONNECT_FAILED 主动打开失败
    TCP_DATA_READY 数据准备好且可以从连接读取
    TCP_ERRORED 连接错误且关闭
    TCP_CLOSED 有序的断开连接已经完成
    下载: 导出CSV 
    | 显示表格

    ALE网络接口层和ALE功能层的接口设计按照依赖倒置原则,共同依赖TCP服务原语这一抽象对象。其中,ALE网络接口层需向ALE功能层注册7个TCP服务原语动作回调函数,并调用ALE功能层的5个TCP服务原语事件函数。ALE模块做到了传输服务与TCP/IP协议栈具体实现逻辑的隔离。

    符合标准规范的车载设备GPRS分组交换通信技术是支撑铁路自动化和智能化的关键性基础技术之一。本文提出满足ETCS及CTCS要求的车地无线分组交换通信软件设计,使用成熟可靠的开源lwIP协议栈承担传输服务,可降低软件开发和维护成本。该软件采用分层架构和模块化设计,核心组件均面向接口设计,ALE模块实现上层应用与TCP/IP协议栈的隔离,串口控制模块封装了硬件驱动,PPP网卡适配模块构建了lwIP抽象网卡;在满足相关标准和列控业务要求的同时,具备良好的可移植性、可维护性和可扩展性,便于实现跨平台应用和性能升级。既有GSM-R通信网络下的车载设备仅需对电路交换通信软件进行简单改造即可实现升级。

    该通信软件已移植到自主化ATO、ATP车载硬件平台及国产化操作系统中,在高速ATO系统、新型列控系统、市域铁路列控系统的现场试验及运用中取得良好效果。后续将研究支持多种网络制式切换、协议栈参数自动调优、TCP冗余通道等技术方案,以提高列控系统通信可靠性和鲁棒性,助力铁路装备技术水平和服务质量持续提升。

  • 图  1   GPRS分组交换通信网络分层结构示意

    图  2   GSM-R/GPRS车地通信过程示意

    图  3   lwIP协议栈结构示意

    图  4   车载设备分组交换通信软件架构

    图  5   车载设备分组交换通信软件处理流程

    图  6   PPP网卡适配模块执行流程

    图  7   ALE模块分层结构示意

    表  1   开源嵌入式TCP/IP协议栈

    TCP/IP协议栈 详细说明 开源许可证 备注
    uIP C语言开发,最初为8/16位微处理器设计,用于物联网操作系统Contiki,代码仅几KB且RAM需求
    可压缩到几百字节
    BSD许可证 设计由用户实现PPP
    fNET C语言开发,支持IPv4和IPv6,可用于32位处理器的嵌入式通信,提供了异常丰富的应用协议组件,
    数据链路层支持较弱
    Apache许可证2.0 不支持PPP
    uC/IP 基于BSD代码开发,适用uC/OS且支持Linux和DOS目标平台,适合学习,lwIP的PPP模块即来自该版本,
    协议栈久未更新
    BSD许可证 缺乏维护更新
    lwIP C语言开发,针对嵌入式系统的小型独立的开源TCP/IP协议栈,功能完整,可移植性和剪裁性优秀,
    应用广泛,长期更新
    BSD许可证 支持PPPoS和PPPoE
    下载: 导出CSV

    表  2   串口控制模块主要接口函数

    函数名 函数说明
    sio_fd_t sio_open(u8_t devnum) 打开通信串口
    void sio_send(u8_t c, sio_fd_t fd) 向串口设备发送单个字符
    u8_t sio_recv(sio_fd_t fd) 从串口设备接收单个字符
    u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len) 从串口阻塞读取直到要求
    的大小或超时
    u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len) 尝试从串口读取若无数据
    立即返回
    u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len) 向串口写入数据
    void sio_read_abort(sio_fd_t fd) 终止阻塞读取(结束会话,
    断开或显式关闭)
    下载: 导出CSV

    表  3   PPP网卡适配模块的主要接口函数

    用户接口 函数说明
    void pppos_rx_thread(void *arg) PPP输入任务,将串口输入数据通过pppos_input_tcpip传递到lwIP内核线程中。
    uint32_t ppp_output_cb(ppp_pcb *pcb, uint8_t *data, uint32_t len, void *ctx) PPP输出接口,将数据输出到串口中,是lwIP定义的回调接口。
    int32_t ppp_Open(sio_fd_t fd) 创建PPP网卡数据结构,进行PPP链路建立,同时创建并启动数据接收任务pppos_rx_thread。若成功返回一个唯一的PPP连接描述符。
    int32_t ppp_Terminate(int32_t ppp_descriptor) 终止PPP连接并释放资源,通知串口数据接收任务终止并删除。
    int8_t ppp_IOCtl(int32_t ppp_descriptor, uint8_t cmd, void *arg) 获取相应PPP连接的建立状态,用于应用监控是否可以通信。
    下载: 导出CSV

    表  4   TCP服务原语

    动作 说明
    TCP_LISTEN_ON_PORT TCP用户在给定端口上被动打开
    TCP_OPEN_PORT TCP用户在指定端口上主动打开
    TCP_SEND_DATA TCP用户从连接读取数据。
    TCP_READ_DATA TCP用户在该连接发送数据
    TCP_CLOSE TCP用户关闭连接(发送待处理数据)
    TCP_ABORT TCP用户关闭连接(丢失待处理数据)
    TCP_STATUS TCP用户需要的连接状态的信息
    事件 说明
    TCP_CONNECTED 打开成功(不管是主动还是被动)
    TCP_CONNECT_FAILED 主动打开失败
    TCP_DATA_READY 数据准备好且可以从连接读取
    TCP_ERRORED 连接错误且关闭
    TCP_CLOSED 有序的断开连接已经完成
    下载: 导出CSV
  • [1] 中华人民共和国铁道部. 铁路数字移动通信系统(GSM-R)总体技术要求:TB/T 3324-2013[S]. 北京:中国铁道出版社,2013.
    [2]

    UNISIG. Euroradio FIS, version 3.2. 0: ERTMS/ETCS subset-037[S]. UNISIG, 2015.

    [3] 中国国家铁路集团有限公司. 铁科信[2019]21号附件4. 高速铁路ATO系统与GSM-R网络接口暂行技术条件[S]. 2019.
    [4] 莫志松. CTCS-4级列控系统总体技术方案研究[J]. 铁道通信信号,2019,55(S1):34-40. DOI: 10.13879/j.issn1000-7458.2019-S1.19454
    [5] 杨 剑. 安全通信与安全通信标准EN50159[J]. 铁路通信信号工程技术,2014,11(1):53-55. DOI: 10.3969/j.issn.1673-4440.2014.01.014
    [6] 中华人民共和国国家质量监督检验检疫总局,中国国家标准化管理委员会. 轨道交通 通信、信号和处理系统 第2部分:开放式传输系统中的安全相关通信:GB/T 24339.2-2009[S]. 北京:中国标准出版社,2010.
    [7]

    UNISIG. Radio transmission FFFIS for EuroRadio: REFERENCE A 11 T 6001 13.0. 0[S]. UNISIG, 2015.

    [8]

    Dunkels A. uIP - a free small TCP/IP Stack[R]. 2022.

    [9]

    fNET-embedded TCP/IP stack[EB/OL]. [2022-11-09]. https://fnet.sourceforge.io/.

    [10]

    Micrium. µC/TCP-IP documentation[EB/OL]. (2021-05-21)[2022-04-26]. https://micrium.atlassian.net/wiki/spaces/TCPIPDOC/overview.

    [11]

    Dunkels A. Design and implementation of the lwIP TCP/IP Stack[R]. Stockholm: Swedish Institute of Computer Science, 2001.

    [12]

    Goldschmidt S, Ziegelmeier D. lwIP - a lightweight TCP/IP stack - summary[EB/OL]. (2021-11-10)[2022-04-26]. http://savannah.nongnu.org/projects/lwip/.

    [13]

    Postel J. Transmission control protocol[R]. Arlington: Defense Advanced Research Projects Agency, 1981.

  • 期刊类型引用(2)

    1. 任飞,韩安平,黄春雷,郭虹利,吴渊. ZPW-2000R轨道电路通信数据分析方法设计与工具实现. 铁路通信信号工程技术. 2023(S1): 76-80 . 百度学术
    2. 李自生,任国桥. 轨道电路设备CAN总线自动脱离功能的设计与实现. 铁路通信信号工程技术. 2023(S1): 90-95 . 百度学术

    其他类型引用(0)

图(7)  /  表(4)
计量
  • 文章访问数:  37
  • HTML全文浏览量:  25
  • PDF下载量:  9
  • 被引次数: 2
出版历程
  • 收稿日期:  2023-03-19
  • 刊出日期:  2023-12-27

目录

/

返回文章
返回