# RFID程序部署(Linux+串口服务器版) Train_RFID_Linux ### 一、适用环境     此程序适用于北铁高科的火车车号识别BT110、BT210、BT510以及其他数据格式相同的其他型号。其他型号暂未适配测试,建议先收集数据,验证后使用。 ### 二、串口服务器配置 ##### 1、登录 使用浏览器访问串口服务器 `192.168.0.7` 默认用户名和密码都是 `admin` ##### 2、修改IP ![image](images/LN_q2WYkKzM2wWlMZV_VlrNSoQopsDNOhnD4hlsvO50.png) 保存后会重启。大约半分钟后,用修改后的IP重新在浏览器中访问。 ##### 3、修改端口参数 ![image](images/StR5A-tfn0PrNiS_lua8-aczFGz-S1ztXFFVwKZCo4M.png) 注意:串口模式一般为232,非绝对。最好和系统集成部同事核对。 ![image](images/hxAJan-fkpeAyv-j4g6Vqgk_wq50AKay9grlDwVZ5QQ.png) ### 三、RFID程序部署 ##### 1、准备程序包 ```bash # 运行程序的docker镜像: Train_v2.2.tgz # 程序的配置文件: Train_RFID_Linux.zip ``` ![image](images/dD4CLmPIiLuxj5It_IFk0DXMPOnYKnxiD_0-a7wERW8.png) 配置文件目录 主要包含 config.ini 文件,用于参数配置 日志文件目录 程序运行的日志,名为`log.log`。当超出单个文件大小限制时,会备份为 log.log.bak后,重新生成一个log.log; RFID原始数据日志 名为`rfid_data.txt`。当一列火车离开后,会重命名为火车离开时的时间,即`YYYY-MM-DD-hh-mm-ss.txt`格式的文件名。 ##### 2、程序部署 ```bash # 将程序包放置在服务器上,并在/home/storage 目录下解压 Train_RFID_Linux.zip 文件 # 解压后得到程序的所有配置文件目录 Train_RFID_Linux/ unzip Train_RFID_Linux.zip # 给 Train_RFID_Linux/ 目录下的可执行文件 train_RFID_Linux 赋予运行权限 sudo chmod +x train_RFID_Linux # 将可执行文件生成软连接 命名为 train ln -s train_RFID_Linux train # 解压 Train_v2.2.tgz 得到 Train_v2.2.tar tar -xvzf Train_v2.2.tgz # 将镜像加载到docker 得到 名为 train:2.2 的镜像 docker load -i Train_v2.2.tar # 运行docker容器(具体内容可能需要微调) docker run --name train_rfid --net=host --gpus all -e NVIDIA_VISIBLE_DEVICE=all -v /lib:/lib:ro -v /usr/lib:/usr/lib:ro -v /usr/local:/usr/local:ro -v /usr/src/tensorrt:/usr/src/tensorrt:ro -v /etc/localtime:/etc/localtime -v /home/storage/Train_RFID_Linux:/app:rw --log-opt max-size=100m --log-opt max-file=3 --restart always -itd train:2.2 ``` ##### 3、程序参数修改 ```bash # 修改 config.yaml vi /home/storage/Train_RFID_Linux/config/config.yaml ``` 参数内容如下: ![image](images/bcFtXYBLvzTuHfm0utoWk33eCr5JAfnd_NYwnNvC9Ic.png) ![image](images/XYP7HXN8UwUasYEAVWkZkg2ukRTvyNB589NnvEArHpI.png) ```bash # 修改完毕,保存 :wq # 重启docker docker restart train_rfid # 查看日志,确认启动正常 docker logs -f --tail 100 train_rfid ``` ### 三、调试车号识别主机 ##### 1、打开串口服务器“网页转串口”界面 ![image](images/a7wU_TT_ZlHMtnHhsJ5mIzYjLor4vfuvZra65e-TrEE.png) ##### 2、发送信息,确认访问主机正常(“@getDelay&”) ![image](images/YpIDL1buyA7HLlT0dQULXlr665ELpaTzit6IhGa3Lgw.png) 注:16进制转换到ASCII字符串,看一下返回的内容。记住返回的数字,后面会用到。 ##### 3、敲击磁钢,确认是否有返回值 ```bash # 使用铁器,按所需识别的行车轨迹敲打磁钢 # 核对界面上是否存在返回值,并记录 # 依次对返回值进行16进制转换到ASCII字符串 看字符@后面的第一个数字 例如 @8000000& 中的8 # 数字一般为 1、2、4、8 这四个数字。不存在0 # 将得到的数字按先后顺序排列,填写在上文配置文件 config.yaml 中 # 重启 train_rfid 容器 ``` ### 四、特殊情况提前了解 ##### 1、RFID主机启动方式 ```bash RFID 的主机,会在磁钢被金属触碰,产生信号时触发“功放开启”。只有在“功放开启”状态,才会识别车厢号。 触碰磁钢的金属,可以是铁轨,可以是铁丝,可以是劳保鞋中的铁片。更可以是车轮。 ``` ##### 2、RFID主机关闭方式 ```bash RFID 的主机,会在没有磁钢触发后的 X 秒后关闭。 此处的 X 就是在 第三章,第2节中所说的数字,即“功放延时时间”。 若在 X 之前重新碰触磁钢,则重新计时。 ``` ##### 3、车辆长时间停车,会导致列车识别提前结束 ```bash 基于上面 1、2 的描述,可想到当火车在 “RFID 天线” 上停车超过 X秒 时,可能会导致 RFID主机 “功放关闭”。 此时程序判断此列火车结束。(实际火车只是停车) 当火车重新启动、运行,则会重新产生一列新车的数据。 (不推荐)非要用RFID解决这个问题的话,可修改“功放延时时间”,将时间放大。 非要用不推荐的办法,大概率会产生新的问题。见下文4 ``` ##### 4、两列车合并成一列 ```bash 当前一列火车在 “RFID 天线” 上离开不足 X秒,就又驶过一列新的火车时,可能会导致 RFID主机尚未 “功放关闭”。 此时程序判断此列火车还是前面那列刚刚离开的火车。 (推荐)此时需修改“功放延时时间”,将时间缩短。 ``` ##### 4、修改“功放延时时间” ```bash 不同型号的车号识别主机,修改方式不同。 BT210 可从 串口服务器 中的 “网页转串口” 界面 发送 “@setDelay=X” 进行修改。X替换为需要的秒数。 BT510 需从主机上的触控屏上修改。操作简单自己摸索,或咨询厂家。 若不是 北铁高科的 BT210 也不是 BT510 ,直接问厂家。此程序也不见得支持,可能需重新开发。 ```