数据采集系统设计
嵌入式操作系统μC/OSⅡ()是专为微控制器系统和软件开发而设计的公开源代码的抢占式实时多任务操作系统内核,是一段微控制器启动后首先执行的背景程序,作为整个系统的框架贯穿系统运行的始终。对于对实时性和稳定性要求很高的数据采集系统来说,引入μC/OSⅡ无疑将大大改善其性能。
μC/OSⅡ的特点可以概括为以下几个方面:公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。μC/OSⅡ自1992年的第一版(μC/OS)以来已经有好几百个应用,是一个经实践证明好用且稳定可靠的内核。对μC/OSⅡ的研究和应用都很多。 该系统采用了Samsung公司的S3C4510B作为系统与上位机沟通的桥梁,S3C4510B是基于以太网应用系统的高性价比16/32位RISC微控制器,他有如下几个主要特点:
硬件方面内含一个由ARM公司设计的16/32位ARM7TDMIRISC处理器核,ARM7TDMI为低功耗、高性能的16/32核,最适合用于对价格及功耗敏感的应用场合。S3C4510B通过在ARM7TDMI核内容基础上扩展一系列完整地通用外围器件。
片上资源包括2个带缓冲描述符(bufferdescriptor)的HDLC通道;2个UART通道;2个GDMA通道;2个32位定时器;18个可编程的I/O口。还有中断控制器;DRAM/SDRAM控制器;ROM/SRAM和FLASH控制器;系统管理器;1个内部32位系统总线仲裁器;1个外部存储器控制器等片内的逻辑控制电路。
这些为μC/OSⅡ的移植提供了优良的物理资源。
软件支持方面他有配套的代码编辑调试环境ADS12和JTAG在线调试功能,使S3C4510B芯片软件可以直接用C编写,这就使μC/OSⅡ的植入成为可能。
12位高速A/D转换电路采用AnalogDevices的AD574,该电路输出具有三态锁存功能。预处理电路包括了电流电压互感器、隔离电路和同步采样电路,他可以将信号转换成与AD574相匹配的量值,供后续处理。通讯电路采用常用的以太网接口与上位机相连,而232接口可作为备用,这样该装置既可作为便携式系统使用,也可通过网络来对设备实施实时监控。
Ⅱ 液压系统数据采集装置的设计
液压系统具有功率大、响应快及精度高等特点,已经广泛应用于冶金和制造领域。但其故障又具有隐蔽性、多样性、不确定性及因果关系复杂等特点,故障出现后不易查找原因,而且故障发生会带来巨大的经济损失。通常,液压系统只能靠定期检查和维护来排除故障,这种方法有一定的滞后性。因此需要实时监测液压系统的状态数据并及时分析以减少故障率,确保工程机械正常、连续运行。传统单片机已广泛应用于数据采集和处理中,虽然其价格便宜、易于开发,但是在存储空间和网络传输方面往往难以满足工程上的要求。因此,笔者针对液压系统采用了基于ARM 的数据智能采集终端。
采集终端通过分布在液压系统各处的传感器对油压、流量和温度3 类信号进行采集,并将采集到的信号进行滤波、放大,然后模数转换,数据经过分析后进行统一的编排与压缩,最后通过通信模块进行传输,将数据传输到本地监控中心做进一步故障诊断。
1 硬件总体结构
智能数据采集终端系统采用三星的ARMS3C2440 为主控芯片、GTM900-C GPRS 为通信模块。整个硬件系统分为3 部分: 主控模块、数据采集模块和通信模块,具体结构如图1 所示。
终端的主控模块包括控制芯片电路、存储电路、电源电路以及串口和JTAG 接口电路; 数据采集模块包括传感器电路、信号调理电路以及8 路A/D转换电路; 通信模块包括GPRS 芯片以及外围电路。其中ARM 与GPRS 之间的通信是通过RS-232 总线完成。
Ⅲ 如何通过EXCEL制作一个录入收集系统
一、数据采集系统功能 录入、保存、查询、清空、修改
二、两个界面
1.数据录入界面:前台功能使用界面,实现“录入、保存、查询、清空、修改”;
2. 数据存储界面:后台实现数据的保存; 录入界面:
三、实现方法 1. 保存功能 Sub Save() '
'保存数据 Marco,xiaohou制作,时间2013-9-5 '
Dim r1, r2, r3 As Range With Sheets("数据存储")
Set r2 = .Range("a2", .[a100000].End(xlUp)) End With
With Sheets("数据录入") Set r1 = .Range("c4:e4, d6:l39")
If IsEmpty(.Range("c4")) Or IsEmpty(.Range("e4")) Then 'Or IsEmpty(.Range("b7:b41")) 添加科室不为空,未成功 MsgBox ("编码、名称为空,不可保存!") Else
Set r3 = r2.Find(.Cells(4, 3), , , 1) If Not r3 Is Nothing Then
MsgBox ("此编码已存在,不可保存。如果此信息需要修改,请点击查询后再修改")
Else
Sheets("数据存储").Rows("2:35").Insert Shift:=xlDown
.Range("c6:l39").Copy '复制“数据录入”表体信息
Sheets("数据存储").Range("c2:l2").PasteSpecial Paste:=xlPasteValues .Range("c4").Copy '复制“数据录入”编码
Sheets("数据存储").Range("a2:a35").PasteSpecial Paste:=xlPasteValues .Range("e4").Copy '复制“数据录入”名称
Sheets("数据存储").Range("b2:b35").PasteSpecial Paste:=xlPasteValues r1.ClearContents '保存数据后,清空录入界面
.Range("c4").Select End If End If End With End Sub
2. 查询功能 Sub Query() '
' 查询筛选 Macro,xiaohou制作,时间2013-9-5 ' '
Dim Erow As Integer Dim r1, r2 As Range With Sheets("数据录入") Set r1 = .Range("d6:l39") Set r2 = .Range("a6:b39")
Erow = Sheets("数据存储").[a100000].End(xlUp).Row
r1.ClearContents
'For Each ce In .[a2:x2]
'If ce <> "" Then ce.Value = "*" & ce & "*" '加上通配符*,实现模糊查询
'Next
If IsEmpty(.Range("c4")) Or IsEmpty(.Range("e4")) Then
'Or IsEmpty(.Range("b7:b41")) 添加科室不为空,未成功
MsgBox ("编码、名称为空,不可查询!") Else
Sheets("数据存储").Range("A1:l" & Erow).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ .[c3:e4], CopyToRange:=.[A5:l5], Unique:=False
r2.Borders(xlDiagonalDown).LineStyle = xlNone r2.Borders(xlDiagonalUp).LineStyle = xlNone
r2.Borders(xlEdgeLeft).LineStyle = xlNone
r2.Borders(xlEdgeTop).LineStyle = xlNone
r2.Borders(xlEdgeBottom).LineStyle = xlNone
'r2.Borders(xlEdgeRight).LineStyle = xlNone r2.Borders(xlInsideVertical).LineStyle = xlNone
r2.Borders(xlInsideHorizontal).LineStyle = xlNone
r2.NumberFormatLocal = ";;;"
'For Each ce In .[a2:x2]
'If ce <> "" Then ce.Value = Mid(ce, 2, Len(ce) - 2) '取消 "*"通配符
'Next End If End With End Sub
3. 更新 Sub Update() '
'更新 Macro,xiaohou制作,时间2013-9-5
Dim arr, d As Object
Dim r As Range
Dim lr&, i&, j%
With Sheets("数据录入") '查询修改工作表数据区域写入数组arr
'arr = .Range("A7:D" & .Range("A65536").End(xlUp).Row)
arr = .Range("a6:l39")
Set r = .Range("d6:l39")
End With
Set d = CreateObject("scripting.dictionary") '定义字典对象
For i = 1 To UBound(arr) '逐行
'If Len(arr(i, 2)) <> 0 Then '排出“合计”行,即:姓名务数据
If Not d.exists(arr(i, 1) & arr(i, 2) & arr(i, 3)) Then d(arr(i, 1) & arr(i, 2) & arr(i, 3)) = arr(i, 4) & Chr(9) & arr(i, 5) _
& Chr(9) & arr(i, 6) & Chr(9) & arr(i, 7) & Chr(9) & arr(i, 8) & Chr(9) & arr(i, 9) & Chr(9) & arr(i, 10) & Chr(9) & arr(i, 11) & Chr(9) & arr(i, 12)
'上一句:如果编码和名称连接字符串字典不存在(首次出现,这里判断可能多余),这个字符串添加到字典键值,后续的相关属性字段用制表符连接添加到字典条目
'End If Next
With Sheets("数据存储")
lr = .Range("A100000").End(xlUp).Row '数据存储工作表数据行数
'.Range("C2:D" & lr).SpecialCells(xlCellTypeConstants, 23).ClearContents '清除C、D列不含公式单元格的值
arr = .Range("A2:l" & lr) '数据存储工作表数据区域写入数组arr
For i = 1 To UBound(arr) '逐行
If d.exists(arr(i, 1) & arr(i, 2) & arr(i, 3)) Then '如果编码和名称连接字符串字典存在,即Sheet2中有
For j = 4 To 12 'D、E、F...列逐列
'If Not Cells(i, j).HasFormula Then Cells(i, j) = Split(d(arr(i, 1) & arr(i, 2)), Chr(9))(j - 3)
'上句:如果单元格不含公式,把Sheet2对应的数据写入这个单元格
.Cells(i+1,j)=Split(d(arr(i,1)&arr(i,2)&arr(i,3)),Chr(9))(j-4)
Next
EndIf
Next
EndWith
r.ClearContents
Sheets("
数据录入
").Cells(4,3).Select
MsgBox("
数据已更新完成,若要查看更新后的内容,请点击按钮查询")
Ⅳ 设计一个采样速率为20MHz的数据采集系统,应选用哪种单片机
1:20M?用ARM或STM32,PIC32,AVR的有些也可以。
2:看你选什么AD了,有的AD是串口输出数据的,那你的专单片机要上百属M才行,如果是并口的,则好一些,视AD芯片而定,但单片机的频率一定要大于等于AD,成倍数关系。