基于树莓派的多串口多总线服务器设计

时间:2016-09-12来源:网络

本串口联网服务器选择树莓派自带的Python作为开发语言,采用小巧而灵活的web.py开发框架提供HTTP服务,其轻量级满足采集系统对数据传输模块的要求,可以提高系统的使用效率,WEB服务器设计流程如图3所示。

基于树莓派的多串口多总线服务器设计

设备上电或系统重启后,WEB服务自动启动,并初始化WEB服务器所需显示和配置的信息,用户通过浏览器访问系统指定端口进行登录认证即可访问参数配置页面。其中,设备信息和网络信息通过系统文件管理器进行查看和配置,用户信息、串口参数和工作模式信息通过数据库进行读写,帮助信息则通过FTP服务器进行串口服务器说明手册、公司服务信息等文档下载。

3.2 WEB配置页面设计

WEB配置页面即WEB服务器的展示层,如图4所示,扫描出的串口数表明该串口服务器带有16个串口,每个串口配置相互独立。

基于树莓派的多串口多总线服务器设计

由于配置程序设计采取工作模式配置与串口参数配置相关联,如果选用前3个串口,则工作模式配置中只显示此3个串口的工作模式配置界面,如图5所示。

基于树莓派的多串口多总线服务器设计

以上配置方式可方便实现批量配置,配置完成后可生成配置信息查看界面,如图6所示,该界面还可进行选中串口的通信参数、工作模式的编辑和删除。

基于树莓派的多串口多总线服务器设计

3.3 串口联网通信程序设计

WEB服务器完成配置工作后,即可启动通信程序进行数据通信工作,具体实现流程如图7所示。此程序在设备上电或系统重启后自动启动,读取用户配置的串口通信和工作模式参数后,进入通信程序无限循环,图中进程数即现场应用所配置的串口总数。其中N为串口服务器串口数,M(M≤W)为N个串口中使用的串口数;n为各自编号,I为进程编号;S为所配会话数,s为线程编号。

基于树莓派的多串口多总线服务器设计

3种工作模式中,TCP服务器和TCP客户端同属TCP协议传输程序,其数据帧收发处理过程都采用同一种思想,下面介绍TCP、UDP协议传输程序和数据帧转发程序的设计:

3.3.1 TOP协议传输程序设计

TCP协议传输程序涉及到服务器端和客户端的设计。

服务器端程序设计:

①建立一个socket,选择类型INET及TCP连接方式;

②读取配置端口进行绑定监听,等待客户端主动连接;

③设置监听队列大小;

④进入一个无限循环,使用accept()等待客户连接,返回的新连接对应于客户端IP,建立通信信道;

⑤进入无限子循环,通过sendall()及recv()进行读写操作。

客户端程序设计:

①建立一个socket,选择类型及连接方式同服务器端;

②读取配置所配置远程服务器IP及端口;

③进入无限循环,使用connect()连接远程服务器,若连不上,达到所配置超时间隔后再次重连;

④连接成功后进入无限子循环,通过sendall()及recv()进行读写操作。

3.3.2 UDP协议传输程序设计

UDP传输称为无连接传输,不存在TCP中的三次握手和错误重传机制,其传输程序需同时读取所配置的本地IP和端口、远程IP和端口,建立数据报形式的socket后可同时作为发送端和接收端。作为发送端时,sendto()发送地址为远程接收端IP和端口,作为接收端时公开本地IP和端口,recvfrom()等待远程发送端的数据到来,可以接收任何地址发送过来的数据包。

3.3.3 数据帧转发程序设计

串口服务器功能模块实现了串行链路数据与以太网数据转换的功能:一方面,接收来自串行链路的数据帧,并将其转化为以太网链路数据帧后发出;另一方面,接收来自以太网链路的数据帧,并将其转化为串行链路数据帧后发出。以上两个通信过程并行执行,在程序设计中采取多线程实现方式。

(1)网络数据的接收

每种通信模式下,网络数据的接收都在指定的回调函数中实现,TCP通信接收函数为recv(),而UDP通信中为recvfrom()。当数据帧长度积累到指定的接收缓冲区大小或达到串口超时还不足指定数据帧长度,立即调用实例化后的串口发送函数write(),即可将缓冲区中接收到的数据通过串口转发。

(2)网络数据的发送

接收串口数据时调用串口接收函数read(),当数据帧长度达到串口接收缓冲区大小或串口超时,立即调用网络发送函数把该缓冲区中的数据帧通过网口转发,其中TCP通信发送函数为sendall(),而UDP通信为sendto()。

结语

经全面测试合格后,目前本串口服务器已经成功应用到工业现场,由此可见,本串口服务器支持高频转发、大数据帧实时转发,可长期、全天候稳定运行。

1 2

关键词: 树莓派 串口服务器 Linux 因特网

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版