- 求讲解51单片机电子秤的程序,分模块详细点
- 问几个有关模块设计报告中的术语定义
- vi设计是什么,做vi设计有什么用途?
- 帮讲解一下 研华数据采集卡的范例 中断方式数据采集adint (单通道模拟量数据采集)这个vi
- 用labview仿真设计实验,测试电液比例方向阀的流量特性和动态特性。
子VI AD INT模块设计(子模块结构图)
大家好!今天让创意岭的小编来大家介绍下关于子VI AD INT模块设计的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等,官网:https://ai.de1919.com
创意岭专注品牌设计、策划,为各大上市企业、个人提供一站式设计、策划服务,服务客户遍布全国,咨询相关业务请拨打电话:175-8598-2043,或添加微信:1454722008
本文目录:
求讲解51单片机电子秤的程序,分模块详细点
如果想知道更多的东西,建议看一本书:吴鉴鹰单片机实战精讲,网上能找到,代码我给你了。
/*******************************************************程序:吴鉴鹰基于单片机的电子秤的设计程序
** 这一讲的主要内容: 电子称是什么,讲的专业点就是:
利用物体的重力作用来确定物体质量的测量仪器,也可用来确定与物体质量相关的其他量的大小,
参数,或特性用我们自己话讲就是测重量的。
** 功能描述:
** 输 入:
** 内容:
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 14.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
#include <reg51.h>
#include <intrins.h>
#include<stdlib.h>
#include<math.h>
#define uchar unsigned char //宏的定义变量类型 uchar 代替 unsigned char
#define uint unsigned int //宏的定义变量类型 uint 代替 unsigned int
#define delay_time_max 50 //按键去抖动延时阀值
sbit RS = P2^0;
sbit RW = P2^1;
sbit SCLK = P2^2;
sbit LCDRST = P2^3;
sbit ST=P3^6; //启动信号
sbit EOC=P3^3; //转换结束信号,连到外部中断1口,转换结束后进入外部中断
sbit OE=P3^7; //输出使能
uchar KEY_VALUE;
uchar key_data;
uchar dis_buf; //显示缓存
uchar temp;
uchar key; //键顺序码
uchar result;
uint f;
void delay(uchar x); //x*0.14MS
// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
unsigned char ADC0809[],KONGBVAI[],DANJIA[];
void ADC0809_change();
/*************************************************************************************
** 函数名称: delayms
** 功能描述: 译码功能,将需要显示的数字转成相应的七段译码表
如要显示的字符为“0”,则为7e ---0111 1111,就中间的一个LED不亮
** 输 入: ms:需要延时的长度
**
**
** 输 出:
**
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 14.02.22
**-----------------------------------------------------------------------------------
** 修改人:吴鉴鹰
** 日 期:
**----------------------------------------------------------------------------------
****************************************************************************************/
void delayms(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
/*********************************************************************************
** 函数名称: SendByte
** 功能描述: 串口给液晶发送数据
** 输 入: Dbyte
**
**
** 输 出:
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 14.02.28
************************************************************************************/
void SendByte(uchar Dbyte)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
Dbyte=Dbyte<<1; //左移一位
RW = CY; //移出的位给RW
SCLK = 1;
SCLK = 0;
}
}
/***********************************************************************************
** 函数名称: TransferCom
** 功能描述: 串口给液晶发送命令
** 输 入: data0
**
**
** 输 出:
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 14.02.28
**********************************************************************************/
void TransferCom(uchar data0)
{
RS=1;
SendByte(0xf8); //11111ABC,RW(0),RS(1),0
SendByte(0xf0&data0); //高四位
SendByte(0xf0&data0<<4); //低四位(先执行<<)
RS=0;
}
/*******************************************************************************
** 函数名称: lcd_mesg
** 功能描述: 写数据,
** 输 入: data1
**
**
** 输 出:
** 全局变量:
** 调用模块:
**
** 作 者: 吴鉴鹰
** 日 期: 14.02.28
*****************************************************************************/
void TransferData(uchar data1)
{
RS=1;
SendByte(0xfa); //11111ABC,RW(0),RS(1),0
SendByte(0xf0&data1); //高四位
SendByte(0xf0&data1<<4); //低四位(先执行<<)
RS=0;
}
问几个有关模块设计报告中的术语定义
1\模块如果退出Python解释程序然后再进入,原有的定义(函数和变量)就丢失了。所以,如
果需要写长一点的程序,最好用一个文本编辑程序为解释程序准备输入,然后以程序文
件作为输入来运行Python解释程序,这称为准备脚本(script)。当你的程序变长时,
最好把它拆分成几个文件以利于维护。你还可能想在几个程序中都使用某个很方便的函
数,但又不想把函数定义赋值到每一个程序中。
为了支持这些,Python有一种办法可以把定义放在一个文件中然后就可以在一个脚本中
或交互运行中调用。这样的文件叫做一个模块;模块中的定义可以导入其它模块或主模
块(主模块指在解释程序顶级执行的脚本或交互执行的程序所能访问的变量集合)。
模块是包含了Python定义和语句的文件。文件名由模块名加上后缀“.py”构成。在模块
内,模块的名字(作为一个字符串)可以由全局变量__name__的值获知。例如,在Pyth
on的搜索路径中用你习惯使用的文本编辑器(Python 1.5.2包含了一个用Tkinter编写的
IDLE集成开发环境,MS Windows下有一个PythonWin界面也可以进行Python程序编辑)生
成一个名为“fibo.py ”的文件,包含如下内容:
# Fibonacci numbers module
def fib(n): # 输出小于n的Fibonacci序列
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
def fib2(n): # 返回小于n的Fibonacci序列
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
然后进入Python解释程序(在IDLE或PythonWin中可以直接进入解释程序窗口),用如下
命令可以导入模块:
>>> import fibo
这不会把模块fibo中的函数的名字直接引入当前的符号表,这只是把模块名fibo引入。
可以用模块名来访问其中的函数:
>>> fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
如果经常使用某个函数可以给它赋一个局部名字:
>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
6.1 模块的进一步介绍
模块除了可以包含函数定义之外也可以包含可执行语句。这些可执行语句用来初始化模
块,它们只在模块第一次被导入时执行。
每个模块有自己私有的符号表,这个私有符号表对于模块中的所有函数而言却是它们的
全局符号表。因此,模块作者可以在模块中使用全局变量而不需担心与模块用户的全局
变量冲突。另一方面,如果你有把握的话也可以用访问模块中函数的格式,即modname.
itemname的方法来修改模块中的全局变量。
模块可以导入其它模块。我们通常把所有的导入语句放在模块(或脚本)的开始位置,
这不是规定要求的。导入的模块名放入模块的全局符号表中。
导入还有另一种用法,可以把模块中的名字直接导入使用者的符号表。例如:
>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
这不会把模块名导入使用者的符号表中(例如,上面例子中fibo就没有定义)。
还有一种办法可以导入一个模块中定义的所有名字:
>>> from fibo import *
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
这可以把模块中除了以下划线结尾的所有名字导入。
6.1.1 模块搜索路径
在导入名为spam的模块时,解释程序先在当前目录中寻找名为“spam.py”的文件,然后
从环境变量PYTHONPATH所定义的目录列表中寻找。PYTHONPATH的用法和可执行文件的搜
索路径PATH用法相同,都是一个目录列表。当PYTHONPATH未设置的时候,或者文件仍找
不到,则搜索继续在安装时设定的缺省路径搜索,在Unix中,这通常是“.:/usr/local
/lib/python” 。
实际上,模块是按变量sys.path指定的路径搜索的,此变量在解释程序启动时初始化为
包含输入脚本的目录(或当前路径),PYTHONPATH和安装缺省路径。这样,用户可以通
过修改sys.path 来修改和替换模块搜索路径。参见后面关于标准模块的一节。
6.1.2 “编译”的Python文件
为了提高调用许多标准模块的小程序的启动时间,一个重要的措施是,如果在找到“sp
am.py ”的目录中存在一个名为“spam.pyc”的文件,就认为此文件包含了模块spam的
一个所谓“ 字节编译”版本。用于生成“spam.pyc”的“spam.py”的修改时间被记入
了“spam.pyc”中,如果记录的修改时间与现在文件的时间不相符的话就忽略编译文件
。
一般不需要自己生成“spam.pyc”这样的编译文件。每当“spam.py”成功编译后解释程
序就尝试写编译版本“spam.pyc”,如果不可写也不会出错;如果因为某种原因此文件
没有写完则生成的“spam.pyc”被识别为不完整的而被忽略。编译文件“spam.pyc”的
格式是不依赖于平台的,所以不同结构的机器可以共享Python模块目录。
下面是对专家的一些窍门:
如果Python解释程序是以-O标志启动的,将生成优化的编译代码,保存在“.pyo”文件
中。目前优化不是很多,现在只是去掉assert语句和SET_LINENO指令。使用了-O标志时
,所有字节码都是优化的,“.pyc”文件被忽略,“.py”文件被编译为优化的字节码。
给Python解释程序两个优化标志(-OO)产生的优化代码有时会导致程序运行不正常。目
前双重优化只从字节码中删除了__doc__字符串,使得“.pyo”文件较小。有些程序可能
是依赖于文档字符串的,所以只有在确知不会有问题时才可以使用这样的优化。
从“.pyc”或“.pyo”读入的程序并不能比从“.py”读入的运行更快,它们只是调入速
度更快一些。
如果一个程序是用在命令行指定脚本文件名的方式运行的,脚本的字节码不会写入“.p
yc ”或“.pyo”文件。所以如果把程序的主要代码都移入一个模块,脚本中只剩下导入
该模块的引导程序则可以略微缩短脚本的启动时间。
可以有叫做“spam.pyc”(当用了-O标志时为“spam.pyo”)的文件而没有对应的源文
件“spam.py”。这可以用来分发一个比较难反编译的Python代码库。
模块compileall可以把一个目录中所有模块编译为“.pyc”文件(指定了-O选项时编译
为“.pyo”文件)。
6.2 标准模块
Python带有一个标准模块库,在另一个文档《Python库参考》中进行了描述。一些模块
直接编入了解释程序中,这些模块不是语言的核心,为了运行效率或者为了提供对于系
统调用这样的系统底层功能而编入了解释程序中。提供那些模块是编译时的选择,例如
,amoeba模块只在提供amoeba底层指令的系统中才能提供。
有一个模块值得特别重视:sys模块,每一个Python解释程序中都编译入了这个模块。变
量sys.ps1和sys.ps2定义了交互运行时的初始提示和续行提示。
>>> import sys
>>> sys.ps1
'>>> '
>>> sys.ps2
'... '
>>> sys.ps1 = 'C> '
C> print 'Yuck!'
Yuck!
C>
这两个变量只在解释程序以交互方式运行时才有定义。
变量sys.path是一个字符串列表,由它确定解释程序的模块搜索路径。它被初始化为环
境变量PYTHONPATH所指定的缺省路径,环境变量没有定义时初始化为安装时的缺省路径
。可以用标准的列表操作修改这个搜索路径,例如:
>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')
6.3 dir()函数
内置函数dir()用于列出一个模块所定义的名字,它返回一个字符串列表:
>>> import fibo, sys
>>> dir(fibo)
['__name__', 'fib', 'fib2']
>>> dir(sys)
['__name__', 'argv', 'builtin_module_names', 'copyright', 'exit',
'maxint', 'modules', 'path', 'ps1', 'ps2', 'setprofile', 'settrace',
'stderr', 'stdin', 'stdout', 'version']
没有自变量时,dir()列出当前定义的名字。
>>> a = [1, 2, 3, 4, 5]
>>> import fibo, sys
>>> fib = fibo.fib
>>> dir()
['__name__', 'a', 'fib', 'fibo', 'sys']
注意dir()列出了所有各类名字:变量名、模块名、函数名,等等。dir()不会列出内置
函数、变量的名字。要想列出内置名字的话需要使用标准模块__builtin__:
>>> import __builtin__
>>> dir(__builtin__)
['AccessError', 'AttributeError', 'ConflictError', 'EOFError', 'IOError',
'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt',
'MemoryError', 'NameError', 'None', 'OverflowError', 'RuntimeError',
'SyntaxError', 'SystemError', 'SystemExit', 'TypeError', 'ValueError',
'ZeroDivisionError', '__name__', 'abs', 'apply', 'chr', 'cmp', 'coerce',
'compile', 'dir', 'divmod', 'eval', 'execfile', 'filter', 'float',
'getattr', 'hasattr', 'hash', 'hex', 'id', 'input', 'int', 'len', 'long',
'map', 'max', 'min', 'oct', 'open', 'ord', 'pow', 'range', 'raw_input',
'reduce', 'reload', 'repr', 'round', 'setattr', 'str', 'type', 'xrange']
6.4 包
Python中可以用“包”来组织Python的模块名字空间,名字引用时可以用“带点的模块
名。例如,模块名A.B代表包“A”内名为“B”的子模块。正如使用模块可以使不同模块
的作者不用顾虑彼此的全局变量名会冲突,使用带点的模块名可以使多模块包如NumPy和
PIL的作者不需要担心彼此的模块名会冲突。
假设你有一系列处理声音文件和声音数据的模块(称为一个“包”)。有许多种不同的
声音文件格式(通常用扩展名来识别,如“wav”,“.aiff”,“.au”),所以你可能
需要制作并维护一组不断增加的模块来处理不同文件格式的转换。你还可能需要对声音
数据进行许多不同的操作(如混音、回响、均衡、产生模拟立体声效果),所以你还需
要不断增加模块来执行这些操作。一下是你的程序包的可能的结构(用一个分层文件系
统表示):
Sound/ 顶层包
__init__.py 初始化音响包
Formats/ 用于文件格式转换的子程序包
__init__.py
wavread.py
wavwrite.py
aiffread.py
aiffwrite.py
auread.py
auwrite.py
...
Effects/ 用于音响效果的子程序包
__init__.py
echo.py
surround.py
reverse.py
...
Filters/ 用于滤波的子程序包
__init__.py
equalizer.py
vocoder.py
karaoke.py
...
包目录中的“__init__.py”文件是必须得,用来指示Python把这个目录看成包,这可以
防止有相同名字如“string”的子目录掩盖住在搜索路径后面一些出现的模块定义。在
最简单的情况下,“__init__.py”可以是一个空文件,它也可以包含初始化包所需的代
码,和设置“__all__”变量,这些后面会加以讨论。
包的用户可以从包中导入单独的模块,如:
import Sound.Effects.echo
这可以把子模块Sound.Effects.echo导入。要引用它也必须用全名,例如:
Sound.Effects.echo.echofilter(input, output, delay=0.7, atten=4)
导入子模块的另一种办法是:
from Sound.Effects import echo
这同样也导入子模块echo,但调用时不需写包前缀,所以可以用如:
echo.echofilter(input, output, delay=0.7, atten=4)
另外一种写法是直接导入所需的函数或变量:
from Sound.Effects.echo import echofilter
这一次同样是调入了子模块echo,但是使其函数echofilter直接可用:
echofilter(input, output, delay=0.7, atten=4)
注意使用“from 包 import 项”这样的格式时,导入的项可以是包的一个子模块(或子
包),也可以是包内定义的其它名字如函数、类、变量。导入语句首先查找包内是否定
义了所需的项,如果没有则假设它是一个模块然后调入。如果找不到,结果引起Import
Error。
相反的,当使用“import item.subitem.subsubitem”这样的格式时,除最后一个外其
它各项都应该是包,最后一项可以是包也可以是模块,不允许是前面一项内部定义的类
、函数或变量。
6.4.1 从包中导入*
现在,如果用户写“from Sound.Effects import *”会发生什么情况?理想情况下我们
希望这应该扫描文件系统,找到所有包内的子模块并把它们都导入进来。不幸的是这种
操作在Mac和Windows平台上不能准确实现,这两种操作系统对文件名的大小写没有准确
信息。在这些平台上,不知道名为“ECHO.PY”的文件会作为模块echo、Echo还是ECHO被
导入。(例如,Windows 95在显示文件名时总是讨厌地把第一个字母大写)。DOS的8+
3文件名限制更是对长模块名造成了有趣的困难。
这个问题的唯一解决办法是由模块作者显式地提供包的索引。引入*的import语句遵循如
下规定:如果包的“__init__.py”文件定义了一个名为“__all__”的列表,这个列表
就作为从包内导入*时要导入的所有模块的名字表。因此当包的新版本发布时需要包的作
者确保这个列表是最新的。包的作者如果认为不需要导入*的话也可以不支持这种用法。
例如,文件Sounds/Effects/__init__.py 可以包含如下代码:
__all__ = ["echo", "surround", "reverse"]
这意味着from Sound.Effects import *将从Sound包中导入指定的三个子包。
如果没有定义__all__,则from Sound.Effects import *语句不会导入Sound.Effects包
中的所有子模块;此语句只能保证Sound.Effects被导入(可能是执行其初始化代码“_
_init__.py ”)并导入包中直接定义的名字。这包括由“__init__.py”定义的任何名
字和显式导入的子模块名。这也包括模块中已经在前面用import显式地导入的子模块,
例如:
import Sound.Effects.echo
import Sound.Effects.surround
from Sound.Effects import *
在这个例子中,echo和surround模块被导入当前名字空间,因为它们在执行from...imp
ort 语句时已定义(在定义了__all__的情况下这一点也是成立的)。
注意用户应尽量避免使用从模块或包中导入*的做法,因为这样经常导致可读性差的代码
。尽管如此,在交互运行时可以用导入*的办法节省敲键次数,而且有些模块在设计时就
考虑到了这个问题,它们只输出遵循某种约定的名字。注意,from 包 import 特定子模
块的用法并没有错,实际上这还是我们推荐的用法,除非程序还需要用到来自其它包的
同名的子模块。
6.4.2 包内部引用
子模块常常需要彼此引用。例如,模块surround可能要用到模块echo。事实上,这样的
引用十分常见,所以import语句首先从子模块的所在包中寻找要导入的子模块才在标准
模块搜索路径查找。所以,模块surround只要写import echo或from echo import echo
filter。如果在包含本模块的包中没有找到要导入的模块,import语句将去寻找指定名
字的顶级模块。
当包组织成子包时(比如例中的Sound包),没有一种简单的办法可以引用兄弟包中的子
模块――必须使用子模块的全名。例如,如果模块Sound.Filters.vocoder要引用Sound
.Effects 包中的echo模块,它可以用Sound.Effects import echo。
通过执行类代码体创建或扩展类Class的对象
ruby 代码
class [scope::] classname [
body
end
注意:
1、如果superexpr存在,那么该superexpr应当是一个以Class对象为结果的表达式,而且它将是被定义的类的超类。
如果省略superexpr,则默认为类Object
2、所有类定义是在代码执行时候生成的。
3、所有类定义在执行后都是一个Class类的对象。
4、所有的这些对象都将赋给名为classname的常量。
5、使用域作用符(::)可以为类定义中的classname前置一个已存在的类或模块名。这样会将新的定义插入到前面定义
的模块和/或类的名字空间中,但不是在这些外部类的作用域中解释此定义。前面带有域作用符的classname将被放置在
那个类或模块所处的顶层(这样作有个什么好处)
方式二、匿名类
ruby 代码
class << obj
body
end
该类是一个匿名类,将会和指定的对象关联。这时这个匿名类将是该关联对象的虚拟类,原来该对象的类,变成了该虚拟 类的超类。
注意:如果直接在类定义外,给你对象新增一些方法和这样为一个对象创建一个类是等价的。同样是创建一个虚拟类。
Ruby类定义和其他语言不一样,其他语言都是在编译期处理的。而ruby是在代码运行时候根据类的定义创建的。这样如下特点:
1、可以在运行时候决定类的定义。这样根据不同条件,得出不同的类的定义结构
2、如果类定义是可执行的代码,那么它一定是在某个对象的上下文中执行的。Ruby中直接把该类作为当前对象
3、这个对象的类属于Class。说明,所有创建类就是一个对象,他们的类就是Class
太多了!对不起!没有给您找完
vi设计是什么,做vi设计有什么用途?
VI即(Visual Identity),通译为视觉识别系统,是CIS系统最具传播力和感染力的部分。是将CI的非可视内容转化为静态的视觉识别符号,以无比丰富的多样的应用形式,在最为广泛的层面上,进行最直接的传播。设计到位、实施科学的视觉识别系统,是传播企业经营理念、建立企业知名度、塑造企业形象的快速便捷之途。x0dx0ax0dx0aVI设计即(Visual Identity),通译为视觉识别系统,是CIS系统最具传播力和感染力的部分。是将CI的非可视内容转化为静态的视觉识别符号,以无比丰富的多样的应用形式,在最为广泛的层面上,进行最直接的传播。设计到位、实施科学的视觉识别系统,是传播企业经营理念、建立企业知名度、塑造企业形象的快速便捷之途。x0dx0aVI:视觉识别x0dx0aVI:以标志、标准字、标准色为核心展开的完整的、系统的视觉表达体系。将上述的企业理念、企业文化、服务内容、企业规范等抽象概念转换为具体符号,塑造出独特的企业形象。在CI设计中,视觉识别设计最具传播力和感染力,最容易被公众接受,具有重要意义。x0dx0aVI系统:x0dx0aA.基本要素系统:如企业名称、企业标志、企业造型、标准字、标准色、象征图案、宣传口号等。x0dx0aB.应用系统:产品造型、办公用品、企业环境、交通工具、服装服饰、广告媒体、招牌、包装系统、 公务礼品、陈列展示以及印刷出版物等。x0dx0ax0dx0a一套VI设计的主要内容:x0dx0aI.基本要素系统x0dx0aA.标志x0dx0aB.标准字x0dx0aC.标准色x0dx0aD.标志和标准字的组合.x0dx0ax0dx0aII.应用系统x0dx0aA.办公用品:信封、信纸、便笺、名片、徽章、工作证、请柬、文件夹、介绍信、帐票、备忘录、资料袋、公文表格等。x0dx0aB.企业外部建筑环境:建筑造型、公司旗帜、企业门面、企业招牌、公共标识牌、路标指示牌、广告塔、霓虹灯广告、庭院美化等。x0dx0aC.企业内部建筑环境:企业内部各部门标识牌、常用标识牌、楼层标识牌、企业形象牌、旗帜、广告牌、POP广告、货架标牌等。x0dx0aD.交通工具:轿车、面包车、大巴士、货车、工具车、油罐车、轮船、飞机等。x0dx0aE.服装服饰:经理制服、管理人员制服、员工制服、礼仪制服、文化衫、领带、工作帽、钮扣、肩章、胸卡等。x0dx0aF.广告媒体:电视广告、杂志广告、报纸广告、网络广告、路牌广告、招贴广告等。x0dx0aG.产品包装:纸盒包装、纸袋包装、木箱包装、玻璃容器包装、塑料袋包装、金属包装、陶瓷包装、包装纸。x0dx0aH.公务礼品:T恤衫、领带、领带夹、打火机、钥匙牌、雨伞、纪念章、礼品袋等。x0dx0aI.陈列展示:橱窗展示、展览展示、货架商品展示、陈列商品展示等。x0dx0aJ.印刷品:企业简介、商品说明书、产品简介、年历等。x0dx0ax0dx0a简单的说 是一个企业的形象识别系统帮讲解一下 研华数据采集卡的范例 中断方式数据采集adint (单通道模拟量数据采集)这个vi
你自己编程还是用组态软件,如果是组态软件的话,就很简单了,只要熟悉组态软件界面就可以在组态中设置 各种采集卡上的采集信息方式及信息采集的控制,中断方式是在设置界面中可以自己设置的。单通道模拟量就可以不考虑同步卡异步卡的问题了用labview仿真设计实验,测试电液比例方向阀的流量特性和动态特性。
1 实验台设计实验台台体用5 mm 不锈钢板喷漆制成操作机架。安装台面为长1 000 mm、宽700 mm、高900 mm带t 型槽平台,实验所需阀块安装在 t 型槽平台前面板上并预留元件扩展空间。液压缸为 2 个自设计加工的有效行程为 200 mm 双作用单杆活塞式液压缸,分为实验缸和加载缸。泵站由2 个 1. 5 kw 定量叶片泵采用分别供油方式对液压实验台进行供油。实验台硬件构成主要有: 液压泵站,比例溢流阀、压力传感器,流量传感器,减压阀、节流阀、调速阀、电磁方向阀,测试油路块及蓄能器、滤油器、紫铜管等辅件( 图1) 。
2 计算机辅助测试系统设计
2. 1 硬件系统的构建
一般液压计算机辅助测试( cat) 系统主要包括:计算机( 工控pc) ,高精度压力、流量传感器,数据采集模块,信号调理板卡等硬件。
在满足测试系统硬件要求和测试精度的前提下,选用实验室标准配置的计算机和国产性能优良的压力及流量传感器。为提高数据采集系统的整体性能,选 用国产某公司生产的多功能pci -8603 数据采集卡,与labview 软件有出色的兼容配合性,性能优良具有较高性价比。最高采样频率为100 ks/s; ad 转换精度12 位; 基于 pci 总线的单端16 路模拟量输入与8 路差分输入; 两路模拟量输出。
数据采集卡只能对电压信号进行模数转换,其可接收的电压范围有: 0 ~ +5 v、-5 ~ +5 v、-10 ~ +10 v,而压力传感器输出的信号多为4 ~ 20 ma 电流信号,因此要进行电流 - 电压( i/v) 转换。需将此毫安级电流信号放大并转换为数据采集卡可接收的电压信号。故选用电路设计中性价比较高的lm324 放大元件和精密电阻、电容等元器件设计制作了转换调理板卡。该板卡可实现对压力传感器输出的信号进行放大、滤波降噪和 i/v 转换等功能。
2. 2 软件系统的开发
采用虚拟仪器技术 labview 作为测试系统软件开发平台,可在计算机系统中完成数据采集和处理等各种测试功能。labview 软件可与数据采集卡的硬件设备驱动程序实现无缝结合,利用“测量和自动化浏览器”软件自动检测和配置硬件及软件属性。系统流程如图2 所示。
文中的虚拟仪器测控软件 labview 程序的编制采用模块化思想,即将比例溢流阀稳态压力控制、稳态负载特性等各个特性实验测试项目编制成子vi,通过主vi 调用相应的子vi 来完成实验项目的测试。并在labview 提供的 express vi 中,实现数据的采集、数字滤波、曲线拟合、波形生成显示、保存读取打印文件; 时域分析,频谱分析等功能。利用自己编制的虚拟信号发生器取代传统的函数信号发生器输出激励信号,不仅使信号参数的调整更加便捷而且降低了实验台的制作成 本。系统界面如图3 所示。
3 测试方案及实验内容的设计与研究
3. 1 比例溢流阀测试方案( 图4)
如图4 所示,实验台测控系统上位机采用计算机、下位机集成了 ad/da 控制模块的采集卡,其与压力传感器、调理转换电路结合,构成了比例溢流阀压力信号采集和控制的硬件系统; 信号发生器则提供可调三角波或正弦波激励信号驱动比例控制放大器,控制比例溢流阀阀芯产生位移; 传感器将受控压力值采集并输入计算机中得到输入控制电信号与输出压力值之间关系的特性曲线。由压力传感器进行的检测反馈构成了比例控制系统的双闭环反馈结 构,有效降低负载突变时对液压系统产生的扰动,提高了系统控制的响应速度、动态性能和抗干扰能力。
本文中数据采集卡模拟输入通道1、2、3、4 分别采集比例溢流阀出口压力值p1、液压缸实验缸工作腔压力值p2、回油流量q、控制电流 i,并将两路压力值进行实时采集。将信号发生器输出的激励信号由数据采集卡0 通道输出控制信号来驱动比例溢流阀的控制放大器。由于测量过程中容易产生干扰现象,因此使用有效接地的屏蔽线缆、低纹波干扰的直流线性稳压电源、差分测量 系统及模、数电路分置接地可明显减弱共模电压干扰。
3. 2 部分实验内容设计及试验研究
( 1) 稳态压力控制特性实验
系统正常运行时,如图1,将方向阀3 迅速调至中位,使试验流量全部通过被测阀2,在信号发生器中以频率小于0. 03 hz 的三角波电压信号在起始最小控制电流in为100 ma 与额定最大电流in为800 ma 之间输入连续增大或减小的电信号,阀口开度也随之相应改变。此时系统将测量的压力值采集至计算机并在labview 中记录显示,得到被测试阀从最低( 高) 开启压力运行到最高( 低) 工作压力的一个完整周期的两条 p - i 曲线,将其与理想曲线对比。给出 10 组不同的控制电信号且在不同工况下重复该实验 10 次,得到稳态压力控制特性曲线,从曲线图中可得出该测试阀的滞环、重复精度、线性度、相对调压偏差等特性指标。
( 2) 稳态负载流量控制特性实验
实验中,增大实验缸负载压力使其接近静止,此时将比例溢流阀调至一定供油压力值( 如6 mpa) ,给出一组输入电信号( 即压力值) 如: 最小流量 in、30% in、60% in、90%in、100%in。此时调节调速阀 4 的流量大小,使其在初始流量与试验流量之间变化,得到p - q稳态负载流量控制特性曲线,给出 5 组电信号进行测试,可得到被测阀的阻尼特性和响应特性。
( 3) 稳压特性( 测量压力随时间变化的特性) 实验如图1,实验中固定负载缸压力值,此时给被测阀一个控制信号,通过压力传感器12 和 13 测量压力点p1和p2的实时变化。即在10组不同时间间隔内( 如1 s,3 s,5 s…; 2 s,7 s,11 s…) 观测压力点的波动变化,记录结果并保存,对采集到的压力点进行曲线拟合( 图5 所示) 。将每组曲线做自相关分析,组与组之间做互相关分析,给出5 组信号进行测试,即得到压力随时间变化的特性 p - t 曲线。此实验可对比 p1、p2压力点的动态变化过程反映被测阀的动态特性以及在阀响应过度过程中系统产生压力波动的原因。
( 4) 调压延迟特性实验
试验中,在某一工况下,给被测试阀发出一个或一组变化指令控制电信号,查看压力值是否及时反应,迅速达到预调定值,延迟时间是多少,并在 labview 中显示该时间点上压力值的时域变化、频谱成分和频域特性。图6 为压力信号采集产生瞬时脉动的时域波形分析和频谱分析,通过此实验分析导致调压延迟的原因,找到缩短调压延迟和解决系统回路压力补偿的办法。
本实验台适用于压力31. 5 mpa、流量 200 l/min范围内的比例溢流阀特性测试,以 dbe10 - 30b -100ym 型先导电反馈比例溢流阀为被测试阀,并在实验台预留若干液压器件扩展位置,以实现比例阀压力、流量、位移的同步测控。
4 结语
本实验台将计算机辅助测试技术和电液比例阀特性测试技术相结合,并利用虚拟仪器技术开发了比例溢流阀特性计算机辅助测试( cat) 系统,不仅可以完成《液压传动》教学中所有常规的实验内容,还能完成对比例溢流阀各项特性的测试。
对现行比例溢流阀测试内容方案改进设计,使用labview 软件中强大的信号分析工具对采集的数据进行时域、频域分析处理; 实现了对两路及四路压力值的实时采集,显示/存储数据及数据分析处理等功能,为后续实现比例阀压力、流量、位移综合测试及不同参量多点实时同步数据采集打 下了基础。更好地从多角度获取比例溢流阀的特性,为工业生产和工程实际提供可靠的实测参考数据。
此外,测试试验研究表明,该实验台实现了对比例溢流阀特性的自动测试,各项测试指标达到了工业测试要求。其结构设计合理、体积小巧、测试性能稳 定、数据采集分析准确、扩展性强,开发成本较低,具有较好的性价比、研究性和实用性; 为真正实现液压测试全自动化和机电液一体化提供了参考依据。
以上就是关于子VI AD INT模块设计相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: