=== 系统概述 === 25T PIS系统主要用于国内型车。其主要功能就是根据收集地理信息进行全自动语音报站,Led显示屏显示到站字幕。整套报站系统硬件组成:报站控制器(含键盘、显示屏)、Gps信息采集器、温度采集器、Led显示屏(7字和8字)、顺号调节器。软件组成:主控制模块、温湿度采集模块、卫星定位模块、Led显示模块、语音模块。 === 软件模块详情 === ==== 主控制模块 ==== 主控制模块采用 Rails3 + Redis + Mysql +Juggernaut 开发技术,其主要功能包括前台数据展示、交互,后台数据准备、参数设置、系统设置等。 # 前台展示页面共包括如下几部分: ##报站:展示当前运行路线,当前站。可切换报站模式和音量等。 ##字幕页面:显示预设公共提示字幕或者语音广播,通过字幕或者广播字幕后面对应数字按键触发发送到Led显示屏和语音播报。 ##实景地图:在地图(OpenStreeMap)上定位当前位置,可通过按钮'8','9'放大缩小地图,本系统放大最大等级为11. ##虚拟地图:根据当前路线所有站坐标等比例生成路线,当前点会闪烁显示。 ##参数、交路:主要实时设置一些常用属性 ###校正坐标:用采集的坐标信息替换原有的坐标信息 ###校正温度:调节温度修正值,显示温度 = 采集温度 + 校正值 。校正值取值范围 (-9.9 到 +9.9) ###交路设置:此也没会列车所有交路信息,可通过按钮选择切换当前运行交路 # 后台管理包括如下几部分: ##数据管理:即数据导入导出,把最好的数据包制作完毕后,可在此导入系统(支持.tar.gz,.zip格式) ##参数设置:可实时更新系统预报里程,预报里程,上下行切换时间,语音播放次数等 ##系统状态: ###系统状态:列出系统所有Daemon服务状态,可手动操作(重启、停止、启动) ###系统版本:列出当前系统制作时间,所属分支,git-sha有利于区分系统 ###查看Gpsd实时数据:实时在线显示Gpsd信息,有利于调试Gps报站服务 ###重启系统:重新重启机器系统 === 表结构 === # current_tickers: 当前显示的字幕内容 ## position: 标记字幕类型 ## ticker_id: 对应的字幕记录ID ## name: 字幕内容 # device_states: 设备列表(南京试验平台使用) ## device_ip: 设备IP ## device_name: 设备名称 ## device_desc: 设备备注 ## device_account: 设备账户 ## last_onlined_at: 最后在线时间 ## point_x: 在图片上对应的X轴坐标 ## point_y: 在图片上对应的Y轴坐标 ## path_point: 设备联线做经过的几个转折点 ## path_color: 设备连线颜色 ## path_width: 设备连线宽度 ## point_height: 描述设备图片高度 ## point_width: 描述设备图片宽度 ## device_type: 描述设备类型 ## device_parent_id: 父设备记录ID(用于标记功放下的喇叭) ## device_online_image: 设备在线忙碌图片 ## device_offline_image: 设备离线忙碌图片 ## device_busy_image: 设备忙碌状态图片 # routes: 当前运行路线车次表 ## name: 车次名称 ## reverse_dots: (没有用到) ## running: 是否当前运行 ## current_rtst_id 当前停靠站点对应信息 ## current_rtst_status 当前停靠站状态(有三个状态分别为 预到站、到站、离站,其值分别为0,1,2) ## position: 排列顺序 # rtsts: 当前运行路线站详细表 ## station_id: 对应站坐标记录ID ## route_id: 对应路线记录ID ## position: 站序 ## rtst_remark: 站备注 ## ticker_in_id: 预到站对应字幕记录ID ## ticker_at_id: 进站对应字幕记录ID ## ticker_out_id: 离站对应字幕记录ID ## at_longitude: 站坐标(经度) ## at_latitude: 站坐标(纬度) ## zh_voice_pack_in_id: 预到站中文语音记录ID ## en_voice_pack_in_id: 预到站英文语音记录ID ## zh_voice_pack_at_id: 到站中文语音记录ID ## en_voice_pack_at_id: 到站英文语音记录ID ## zh_voice_pack_out_id: 离站中文语音记录ID ## en_voice_pack_out_id: 离站英文语音记录ID ## reached_at: 进站时间 ## leave_at 离站时间 # settings: 系统配置表 ## var==juggernaut_address: juggernaut地址 ## var==juggernaut_port: juggernaut端口 ## var==i18n: 当前语言 ## var==canvas_height: 示意地图高 ## var==canvas_width: 示意地图宽 ## var==box_length: 示意地图边框 ## var==right_box_length: 示意地图右边框 ## var==volume: 当前音量 ## var==volume_max: 语音最大音量 ## var==volume_step: 语音跨度值 ## var==route_waite_time: 路线切换等待时间 ## var==forecast_pa_mile: 预报站里程 ## var==arrived_range_mile: 到站里程 ## var==model_status: 报站模式 ## var==crash_message: GPS、Led出错显示文字 ## var==temp_adjust: 温度调节值 ## var==voice_times: 语音报站次数 ## var==default_play_times: 语音默认播放次数(南京实验室) ## var==default_keep_time: 字幕默认显示时长(南京实验室) # station: 站点信息表 ## name: 站名 ## longitude: 站点坐标-经度 ## latitude :站点坐标-纬度 ## geox,geoy(遗留,现在没有用到) # station_translations: 站名国际化表 ## station_id: 对应站记录ID ## locale: 语言类型 ## name: 站名翻译 # tickers: 公共字幕表 ## name: 字幕内容 ## category: 字幕类型(public_info为提示字幕、led报站字幕) ## settable: 当前没有用到 # train_line_times 所有路线表 ## station_index: 站序 ## train_no: 车次名称 ## arrival_time: 到达时间 ## leave_time: 离站时间 ## run_time: 区间运行时间 ## run_kilometer: 区间运行公里 ## check_result: 检查状态(设置为3即可) ## 其他的参照rtsts表 # voice_packs 语音文件表 ## remark: 语音对应的信息 ## settable: 语音类型(1为紧急语音,0为报站语音) ## voicefile_file_name: 语音文件名称 ## voicefile_content_type: 语音文件类型 ## voicefile_file_size: 语音文件大小 # route_lists、gps、sensor_records、sensors 是历史遗留表,已被删除(可能部分机器还有) ==== Gps采集报站模块 ==== 模块所在目录:/ntdeck/lib/gps/ 工作原理说明:机器通过串口ttyS1连接到Gps信息采集器。首先通过Gpsd守护进程把采集到gps数据转发到2947端口,然后gps_redis_daemon 守护进程通过连接到串口,读取数据,并把数据存储到Redis,最后Ntgps守护进程把数据从Redis取出来处理,并与预设的数据比对,如果达到预设的条件,通过调用主程序接口,实现自动报站。 Ntgps守护进程详细: *文件名: /ntdeck/lib/gps/ntgps.rb *启动命令:ruby ntgps.rb -e produciton *详细说明:首先Ntgps 守护进程会加载主程序环境(可直接调用主程序参数及方法)和gps_processor(获取Gps里中的纬度、经度、时间等信息) ,连接Redis取出数据,如果数据不对,则发送给主程序GPS错误,否则处理数据,获得具体经纬度、速度、距前方站距离并发送给主程序。然后计算与前方站距离,当距离进入预设阀值且当前状态匹配,则开始调用主程序接口进行报站 ==== Led守护进程 ==== 模块所在目录:/ntdeck/lib/led/ 功能说明:系统在报站或者发送其他提示字幕时,要第一时间显示在Led屏上。显示时长没有固定,Led在空闲时候,需要自动显示一些提示字幕、速度、温度、当前时间、前方站等信息,具体怎样一个显示方式和显示模式都没有固定。然后再把这些数据按协议处理,把得到的数据通过串口发送出去。具体协议见[[https://git.g77k.com/huxl/ntdeck_docs/blob/master/%E6%98%BE%E7%A4%BA%E5%B1%8F%E9%80%9A%E8%AE%AF%E5%8D%8F%E8%AE%AEV2.01.pdf Led通讯协议]] ==== TEMP 守护进程 ==== 模块所在目录:/ntdeck/lib/temp_reader/ 功能说明:PIS主机连接通过串口连接了温度采集器,TEMP 守护进程可实时去获取数据(需要按照一定规则加工,得到真正的温度信息),如果温度在合理范围内则发送给主程序同时也存到Redis(供Led模块显示)