4个版本 (破坏性更新)
0.4.0 | 2024年7月28日 |
---|---|
0.3.0 | 2023年6月8日 |
0.2.0 | 2023年4月5日 |
0.1.0 | 2022年12月1日 |
#411 in 嵌入式开发
173 个月下载量
用于 drmemd
81KB
1.5K SLoC
drmem-drv-sump
此驱动程序通过自定义的非商业接口[^1]监控坑道泵的状态,并根据其行为更新一组设备。
通过TCP,使用RaspberryPi监控GPIO引脚的坑道泵状态变化,每当状态变化时,都会发送一个12字节的包。前8个字节包含大端格式的毫秒时间戳。接下来的4个字节包含新状态。
使用这些包,驱动程序可以使用时间戳计算坑道池的占空比和流入流量率。当泵关闭时,duty
和 in-flow
参数会更新以反映最后一个周期。
配置
驱动程序需要知道如何访问远程服务。它还需要知道如何缩放结果。使用两个驱动程序参数来指定这些信息
addr
是一个包含主机名、IP地址和端口号的字符串,该地址实际上是监控坑道泵的机器(在 "hostname:#" 或 "#.#.#.#:#" 格式。)gpm
是一个整数,表示坑道泵的每分钟加仑容量。泵的业主手册通常会有一个表格,表明根据排放管的上升高度流量率。
设备
驱动程序创建了以下设备
基础名称 | 类型 | 单位 | 注释 |
---|---|---|---|
service |
bool, RO | 当与远程服务通信时设置为 true 。 |
|
state |
bool, RO | 当泵正在运行时设置为 true 。 |
|
duty |
f64, RO | % | 指示最后一个周期的占空比。 |
in-flow |
f64, RO | gpm | 指示最后一个周期的流入流量率。 |
duration |
f64, RO | min | 指示上一个周期的持续时间。 |
注意事项
远程进程以20Hz的频率轮询泵的状态,因此时间戳将具有50毫秒的精度。不幸的是,当前的开关似乎在快速开启方面有一些滑动。根据激活继电器需要多少个60Hz周期,可能会增加30毫秒或更多的延迟。当前开关中的继电器可能也有一些延迟。最后,观察到长周期时间(> 5分钟)可能会变化10秒或更多!这可能是由于当坑缓慢填满时,浮球和连接的开关在激活时会有很大的滑动。
结论是,开关/关时间的测量可能准确到小于100毫秒。造成测量误差最大的是浮球。
历史
在v0.1.0中添加。
[^1]:远程端运行在装有NetBSD 9.0的树莓派上。源代码可以在这里找到。GPIO代码是针对NetBSD的,因此需要对Linux进行调整。
依赖关系
~7–16MB
~190K SLoC