确认了不需要长时间开启保护 issue#6

This commit is contained in:
Miaow 2022-08-31 14:46:32 +08:00
parent 6af8dfd09c
commit 6201402bb4
7 changed files with 59 additions and 105 deletions

View File

@ -35,5 +35,9 @@ b分支编号-h硬件版本-p协议版本-f固件版本
## 作者
**丁坤2019年9月入学、丁坤QQ1091546069、丁坤电话17761700156**,他觉得老阀板工程很乱,重新开发了关于阀板的一切,并放到这个仓库里,计划以后就在这个仓库里迭代更新,作者已经毕业,但很乐意解答关于阀板的所有问题
[过奕任](https://github.com/3703781)、丁坤。老阀板工程很乱,重新开发了关于阀板的一切,并放到这个仓库里,以后就在这个仓库里迭代更新。欢迎提[issue](https://github.com/NanjingForestryUniversity/valveboard/issues)bug随缘解决。
丁坤2019年入学虽然已经毕业但也很乐意解答关于阀板的所有问题。丁坤QQ1091546069、丁坤电话17761700156。
过奕任2020年入学目前正打算找其他人接管这个库毕业了就不要找他但永远可以找丁坤。

View File

@ -17,6 +17,9 @@
基于嵌入式linux的程序线程安全具体板子为EPC-9600I-L是广州致远电子有限公司开发的基于AM335x系列处理器的工控主板处理器内核为800MHz的Arm Cortex-A8。
## 作者
[过奕任](https://github.com/3703781)、丁坤。欢迎提[issue](https://github.com/NanjingForestryUniversity/valveboard/issues)bug随缘解决。
**丁坤2019年9月入学、丁坤QQ1091546069、丁坤电话17761700156**,作者已经毕业,但很乐意解答有关的所有问题
过奕任2020年入学目前正打算找其他人接管这个库毕业了就不要找他但永远可以找丁坤。
丁坤2019年入学、丁坤QQ1091546069、丁坤电话17761700156已经毕业但很乐意解答所有问题。

View File

@ -11,9 +11,6 @@ Quartus软件
看程序注释
## Changelog
**作者是丁坤2019年9月入学、丁坤QQ1091546069、丁坤电话17761700156**他是搞嵌入式的自师兄王聪2018年9月入学毕业后硬件领域师门出现空档期被老倪催的没办法了就顺手写了这份FPGA代码作者已经毕业但很乐意解答关于固件的所有问题
### v1.0
继承自老程序
@ -31,7 +28,17 @@ Quartus软件
- 添加了高电压抑制,见[issue#4](https://github.com/NanjingForestryUniversity/valveboard/issues/4)
- 修正了高电压时间为0.2ms
### 当前版本
### v1.4
确认了阀不需要长时间开启保护删除了阀板固件v1.4-beta1([commit 6af8df](https://github.com/NanjingForestryUniversity/valveboard/commit/6af8dfd09c268d677a46063cc9637f573e69919e))中的长时间开启保护,见[issue#6](https://github.com/NanjingForestryUniversity/valveboard/issues/6)
## 作者
[过奕任](https://github.com/3703781)、丁坤
过奕任自师兄王聪2018年入学毕业后硬件方面师门出现空档期被老倪催的没办法了就学了硬件并顺手写了这份FPGA代码。丁坤是专门搞嵌入式的但也看过这份代码。欢迎提[issue](https://github.com/NanjingForestryUniversity/valveboard/issues)bug随缘解决。
过奕任2020年入学目前正打算找其他人接管这个库毕业了就不要找他但永远可以找丁坤。
丁坤2019年入学、丁坤QQ1091546069、丁坤电话17761700156已经毕业但很乐意解答所有问题。
- 暂且添加每路阀独立的开启超时为200ms见[issue#6](https://github.com/NanjingForestryUniversity/valveboard/issues/6)
- 通讯中断超时从原来的1s修改为200ms

View File

@ -1,3 +1,3 @@
Quartus_Version = Version 20.1.1 Build 720 11/11/2020 SJ Lite Edition
Version_Index = 520278016
Creation_Time = Wed Aug 24 21:50:38 2022
Creation_Time = Wed Aug 31 14:18:53 2022

View File

@ -1,5 +1,5 @@
/*
丁坤的阀板程序v1.4-beta1 2022/8/24
阀板程序v1.4 2022/8/31
经测试高压时间改为0.2ms
使用的是合肥的阀1.5A电流需0.2ms的100V(阀标称100V现场供电为96V)高电压
*/
@ -20,14 +20,15 @@ module valveboard_firmware(
parameter CHANNEL_NUM_MINUS_1 = CHANNEL_NUM - 1;
parameter HIGH_VOLTAGE_TIME = 32'd4000; // 高压时间HIGH_VOLTAGE_TIME / 20MHz = 0.2ms
parameter HIGH_VOLTAGE_TIME_MINUS_1 = HIGH_VOLTAGE_TIME - 1;
parameter LONGOPEN_COUNTER_THRESHOLD = 7'd20; // 一路阀打开超过LONGOPEN_COUNTER_THRESHOLD * 200_000 / 20MHz = 200ms就关闭
parameter DISCONNECT_FAULT_COUNTER_THRESHOLD = 32'd4_000_000; // 通讯中断超过FAULT_COUNTER_THRESHOLD / 20MHz = 200ms就关所有阀
parameter DISCONNECT_FAULT_COUNTER_THRESHOLD_MINUS_1 = DISCONNECT_FAULT_COUNTER_THRESHOLD - 1;
parameter DISCONNECT_FAULT_COUNTER_THRESHOLD_PLUS_1 = DISCONNECT_FAULT_COUNTER_THRESHOLD + 1;
parameter FAULT_COUNTER_THRESHOLD = 32'd20_000_000; // 通讯中断超过FAULT_COUNTER_THRESHOLD / 20MHz = 200ms就关所有阀
parameter FAULT_COUNTER_THRESHOLD_MINUS_1 = FAULT_COUNTER_THRESHOLD - 1;
parameter FAULT_COUNTER_THRESHOLD_PLUS_1 = FAULT_COUNTER_THRESHOLD + 1;
reg [CHANNEL_NUM_MINUS_1:0] cache_signal_high_voltage;
reg [31:0] i;
reg [31:0] disconnect_fault_counter;
reg [31:0] fault_counter;
reg [0:0] fault_flag [0:7]; // fault_flag支持8类错误信号
@ -169,27 +170,27 @@ module valveboard_firmware(
end
/**
* 若通讯中断超过DISCONNECT_FAULT_COUNTER_THRESHOLD个csys_clk就置位fault_flag[1]
* 若通讯中断超过FAULT_COUNTER_THRESHOLD个csys_clk就置位fault_flag[1]
* fault_flag[1]在posedge_line_sclk上升沿时刻清楚
*/
always @(posedge sys_clk or negedge rst_n) begin
if (!rst_n) begin
disconnect_fault_counter <= 0;
fault_counter <= 0;
fault_flag[1] <= 0;
end
else if ({cache_line_sclk, line_sclk} == 6'b011111) begin
disconnect_fault_counter <= 0;
fault_counter <= 0;
fault_flag[1] <= 0;
end
else begin
if (disconnect_fault_counter >= DISCONNECT_FAULT_COUNTER_THRESHOLD_PLUS_1)
if (fault_counter >= FAULT_COUNTER_THRESHOLD_PLUS_1)
fault_flag[1] <= 1;
else if (disconnect_fault_counter >= DISCONNECT_FAULT_COUNTER_THRESHOLD_MINUS_1) begin
disconnect_fault_counter <= disconnect_fault_counter + 1;
else if (fault_counter >= FAULT_COUNTER_THRESHOLD_MINUS_1) begin
fault_counter <= fault_counter + 1;
fault_flag[1] <= 1;
end
else begin
disconnect_fault_counter <= disconnect_fault_counter + 1;
fault_counter <= fault_counter + 1;
fault_flag[1] <= 0;
end
end
@ -280,79 +281,13 @@ module valveboard_firmware(
end
end
/**
* 对系统时钟做分频得到100Hz的脉冲信号后续用于判断阀是否长时间开启
* 这样是不严谨的应当以数据接收完成时刻开始计时但CPLD资源不够了
*/
reg [17:0] sys_clk_divider;
reg sys_clk_div;
always @(posedge sys_clk or negedge rst_n) begin
if (!rst_n) begin
sys_clk_divider <= 0;
sys_clk_div <= 0;
end
else if (total_fault_flag) begin
sys_clk_divider <= 0;
sys_clk_div <= 0;
end
else begin
if (sys_clk_divider == 199_999) begin
sys_clk_divider <= 0;
sys_clk_div <= 1;
end
else begin
sys_clk_divider <= sys_clk_divider + 1;
sys_clk_div <= 0;
end
end
end
/*
* 在100Hz的脉冲信号时更新每路阀的开启时间计数器
* 到达超时时间后暂停计数
* 用100Hz的信号的原因是资源不够必须减少计数器位宽
* 这导致计数器存在随机的单周期不稳定时间
*/
reg [7:0] longopen_counter [0:CHANNEL_NUM_MINUS_1];
integer k;
always @(posedge sys_clk or negedge rst_n) begin
if (!rst_n) begin
for (k = 0; k < CHANNEL_NUM; k = k + 1) begin
longopen_counter[k] <= 0;
end
end
else if (total_fault_flag) begin
for (k = 0; k < CHANNEL_NUM; k = k + 1) begin
longopen_counter[k] <= 0;
end
end
else begin
for (k = 0; k < CHANNEL_NUM; k = k + 1) begin
if (cache2_line_sdata[k] == 0) begin
if (sys_clk_div && (longopen_counter[k] < LONGOPEN_COUNTER_THRESHOLD))
longopen_counter[k] <= longopen_counter[k] + 7'd1;
else
longopen_counter[k] <= longopen_counter[k];
end
else begin
longopen_counter[k] <= 0;
end
end
end
end
/**
* 高电压时间内(is_high_voltage_time高电平时)按cache2_line_sdata打开所需高电压高电压时间后关闭
* 按cache2_line_sdata打开低电压
* 需要注意的是已经开着的喷阀 在高压时间内不会再次使用高电压只是保持低电压
* 此外根据开启时间计数器是否超时来决定是否关闭某路阀
* 按cache2_line_sdata打开低电压
* total_fault_flag会关闭所有喷阀
*/
integer m;
// 已经开着的喷阀在高压时间内不会再次使用高电压只是保持低电压
wire [CHANNEL_NUM_MINUS_1:0] signal_high_voltage_wire = ~last_line_sdata | cache2_line_sdata;
always @ (posedge sys_clk or negedge rst_n) begin
if (!rst_n) begin
signal_low_voltage <= ~0;
@ -363,17 +298,13 @@ module valveboard_firmware(
signal_high_voltage <= ~0;
end
else if (is_high_voltage_time) begin
// 阀的开启时间不超过LONGOPEN_COUNTER_THRESHOLD
for (m = 0; m < CHANNEL_NUM; m = m + 1) begin
signal_high_voltage[m] <= signal_high_voltage_wire[m] | ~(longopen_counter[m] < LONGOPEN_COUNTER_THRESHOLD);
signal_low_voltage[m] <= cache2_line_sdata[m] | ~(longopen_counter[m] < LONGOPEN_COUNTER_THRESHOLD);
end
// 已经开着的喷阀在高压时间内不会再次使用高电压只是保持低电压
signal_high_voltage <= ~last_line_sdata | cache2_line_sdata;
signal_low_voltage <= cache2_line_sdata;
end
else begin
signal_high_voltage <= ~0;
for (m = 0;m < CHANNEL_NUM; m = m + 1) begin
signal_low_voltage[m] <= cache2_line_sdata[m] | ~(longopen_counter[m] < LONGOPEN_COUNTER_THRESHOLD);
end
signal_low_voltage <= cache2_line_sdata;
end
end

View File

@ -1,6 +1,6 @@
# 阀板硬件
这个文件夹下是丁坤画的48路阀板的原理图和PCB用于烟梗分选机。整个机器用了六块48路阀板驱动256路喷嘴阀的型号是合肥旭伟电子气动有限公司的XW-F16这个阀一个可以连接并控制16个喷嘴。每个阀的电阻是14欧姆高压启动时峰值电流约1.5A低压保持电流约0.8A。
这个文件夹下是48路阀板的原理图和PCB用于烟梗分选机。整个机器用了六块48路阀板驱动256路喷嘴阀的型号是合肥旭伟电子气动有限公司的XW-F16这个阀一个可以连接并控制16个喷嘴。每个阀的电阻是14欧姆高压启动时峰值电流约1.5A低压保持电流约0.8A。
![image-20211226143651047](README.assets/image-20211226143651047.png)
@ -50,20 +50,17 @@ CPLD烧录口为简牛口用USB Blaster烧录的开发软件为Quartus。
所需器件BOM里都有板子开窗部分要加锡钢网上已经体现了。测试板子是嘉立创做的SMT也是嘉立创直插元件和芯片需手焊
## Changelog
丁坤2019年9月入学、丁坤QQ1091546069、丁坤电话17761700156他刚入学时就被师兄叫去焊接汪学良的阀板后来接替师兄做了这个仓库里的阀板作者已经毕业但很乐意解答有关的所有问题
### v1.0
绿色的阀板,测试版本,继承于远古的原理图和布局
### v1.1
蓝色的阀板,丁坤画具有ISO、LVDS、TTL接口见[b01-h1.1-p1.1-f1.1](https://github.com/NanjingForestryUniversity/valveboard/releases/tag/b01-h1.1-p1.1-f1.1)
蓝色的阀板,过奕任选型和画原理图丁坤layout具有ISO、LVDS、TTL接口见[b01-h1.1-p1.1-f1.1](https://github.com/NanjingForestryUniversity/valveboard/releases/tag/b01-h1.1-p1.1-f1.1)
### v1.2
黄色的阀板,见 [b02-h1.2-p1.1-f1.2](https://github.com/NanjingForestryUniversity/valveboard/releases/tag/b02-h1.2-p1.1-f1.2)
黄色的阀板,过奕任画原理图和layout见 [b02-h1.2-p1.1-f1.2](https://github.com/NanjingForestryUniversity/valveboard/releases/tag/b02-h1.2-p1.1-f1.2)
- 采用带屏蔽的超六类RJ45端口代替原来的牛角座增强了通信的稳定性
- 删除了ISO隔离端口
@ -76,7 +73,7 @@ CPLD烧录口为简牛口用USB Blaster烧录的开发软件为Quartus。
### v1.3
绿色的阀板,见[b02-h1.3-p1.1-f1.3](https://github.com/NanjingForestryUniversity/valveboard/releases/tag/b02-h1.3-p1.1-f1.3)
绿色的阀板,过奕任画原理图和layout见[b02-h1.3-p1.1-f1.3](https://github.com/NanjingForestryUniversity/valveboard/releases/tag/b02-h1.3-p1.1-f1.3)
- 重画了原理图和PCBPCB尺寸减小
- 增大阻容器件封装解决100V耐压风险[issue#1](https://github.com/NanjingForestryUniversity/valveboard/issues/1)
@ -86,3 +83,12 @@ CPLD烧录口为简牛口用USB Blaster烧录的开发软件为Quartus。
- 增加了每一路的标识丝印,南林的徽标
- 重新排列了阀的连接器,方便插拔
- 有需要的线路上增加了开窗,提高载流能力
## 作者
[过奕任](https://github.com/3703781)和丁坤一起设计了电路,画了板子。欢迎提[issue](https://github.com/NanjingForestryUniversity/valveboard/issues)bug随缘解决。
丁坤2019年入学时就被师兄叫去焊接汪学良的阀板后来和过奕任接替师兄做了这个仓库里的阀板。丁坤已经毕业但也很乐意解答关于板子的所有问题。丁坤QQ1091546069、丁坤电话17761700156。
过奕任2020年入学目前正打算找其他人接管这个库毕业了就不要找他但永远可以找丁坤。

View File

@ -68,6 +68,9 @@ DS90LV048具有内置终端电阻电路设计和布局布线只需注意匹
![image-20211109201037196](./README.assets/image-20211109201037196.png)
## 作者
[过奕任](https://github.com/3703781)、丁坤。老阀板的协议不明确(其实就没有协议,逆向工程后改进出来的这份协议),所以就大概描述了一下协议相关信息。欢迎提[issue](https://github.com/NanjingForestryUniversity/valveboard/issues)bug随缘解决。
**丁坤2019年9月入学、丁坤QQ1091546069、丁坤电话17761700156**,他觉得老阀板的协议不明确(其实就没有协议,逆向工程后改进出来的这份协议),所以就大概描述了一下协议相关信息,作者已经毕业,但很乐意解答关于这份协议的所有问题
过奕任2020年入学目前正打算找其他人接管这个库毕业了就不要找他但永远可以找丁坤。
丁坤2019年入学虽然已经毕业但也很乐意解答关于这份协议的所有问题。丁坤QQ1091546069、丁坤电话17761700156。