From a787e5d947336a05f819725ebc299c46155dc798 Mon Sep 17 00:00:00 2001 From: zhangwei Date: Mon, 20 Jan 2025 01:59:39 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 185 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index abb25a5..e2ff420 100644 --- a/README.md +++ b/README.md @@ -1 +1,185 @@ -Train_RFID_Linux + +# 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 ,直接问厂家。此程序也不见得支持,可能需重新开发。 +```