搜档网
当前位置:搜档网 › PIC16F877模拟量输入与输出

PIC16F877模拟量输入与输出

PIC16F877模拟量输入与输出
PIC16F877模拟量输入与输出

第6章模拟量输入与输出

6.1 A/D转换的应用

例6.1 A/D转换初始化程序

//A/D转换初始化子程序

void adinitial( )

{

ADCON0 = 0x51;//选择A/D通道为RA2,打开A/D转换器

//在工作状态,且使AD转换时钟为8t osc ADCON1 = 0X80;//转换结果右移,及ADRESH寄存器的高6位为"0"

//且把RA2口设置为模拟量输入方式

PIE1 = 0X00;

PIE2 = 0X00;

ADIE = 1;//A/D转换中断允许

PEIE = 1;//外围中断允许

TRISA2=1;//设置RA2为输入方式

}

6.1.2 程序清单

下面给出一个调试通过的例程,可作为读者编制程序的参考。该程序中用共用体的方式把A/D转换的10位结果组合在一起。有关共用体的详细资料请参考本书相关章节。# include

union adres

{int y1;

unsigned char adre[2];

}adresult;//定义一个共用体,用于存放A/D转换的结果unsigned char i;

unsigned int j;

//系统各I/O口初始化子程序

void initial()

{

TRISD=0X00;//D口为输出

i=0x00;

}

//A/D转化初始化子程序

void adinitial()

{

ADCON0=0x51;//选择A/D通道为RA2,打开A/D转换器

//在工作状态,且使A/D转换时钟为8t osc

117

ADCON1=0X80;//转换结果右移,及ADRESH寄存器的高6位为"0"

//且把RA2口设置为模拟量输入方式

PIE1=0X00;

PIE2=0X00;

ADIE=1;//A/D转换中断允许

PEIE=1;//外围中断允许

TRISA2=1;//设置RA2为输入方式

}

//延时子程序

void delay()

{

for(j=5535;--j;) continue;

}

//报警子程序

void alarm()

{

i=i^0xFF;//通过异或方式每次把i的各位值取反

PORTD=i;//D口输出i的值

}

//中断服务程序

void interrupt adint(void)

{

ADIF=0;//清除中断标志

adresult.adre[0]=ADRESL;

adresult.adre[1]=ADRESH; //读取并存储A/D转换结果,A/D转换的结果通过共

//用体的形式放入了变量y1中

if(adresult.y1>0x200)

{

alarm();//如果输入的模拟量大于2.5V(对应数字量

//0X200h),则调用报警子程序

delay();//调用延时子程序,使电压检测不要过于频繁

}

else PORTD=0XF0 ;//如果输入的模拟量小于2.5V,则与D口相连的

//8个发光二极管的低4个发亮,表示系统正常ADGO=1;//启动下一次A/D转换

}

//主程序

main()

{

adinitial();//A/D转换初始化

118

initial();//系统各I/O口初始化

ei();//总中断允许

ADGO=1;//启动A/D转换

while(1)

{

} //等待中断,在中断中循环检测外部电压

}

6.2.2 I2C总线工作方式相关子程序

1.C语言编写的I2C总线工作方式的初始化子程序

//I2C初始化子程序

void i2cint()

{

SSPCON = 0X08;//初始化SSPCON寄存器

TRISC3 =1;//设置SCL为输入口

TRISC4 =1;//设置SDA为输入口

TRISA4 = 0;

SSPSTAT=0X80;//初始化SSPSTAT寄存器

SSPADD=0X02;//设定I2C时钟频率

SSPCON2=0X00;//初始化SSPCON2寄存器

di();//关闭总中断

SSPIF=0;//清SSP中断标志

RA4=0;//关掉74HC165的移位时钟使能,以免74HC165移位

//数据输出与I2C总线的数据线发生冲突(此操作与该

//实验板的特殊结构有关,不是通用的)SSPEN=1;//SSP模块使能

}

2.C语言编写的I2C总线工作方式传输数据子程序

需要发送的数据在寄存器j中。

//I2C总线输出数据子程序

i2cout()

{

SEN=1;//产生I2C启动信号

for(n=0x02;--n;) c ontinue;//给予一定的延时,保证启动

do {

RSEN=1;//产生I2C重启动信号

}while(SSPIF==0);//如果没能启动,则反复启动,直到启动为止

SSPIF=0;//SSPIF标志清0

119

SSPBUF=0X58;//I2C总线发送地址字节

do {

}while(SSPIF==0);//等待地址发送完毕

SSPIF=0;//SSPIF标志清0

SSPBUF=0X01;//I2C总线发送命令字节

do {

}while(SSPIF==0);//等待命令发送完毕

SSPIF=0;//SSPIF标志清0

SSPBUF=j;//I2C总线发送数据字节

do {

}while(SSPIF==0);//等待数据发送完毕

SSPIF=0;//SSPIF标志清0

PEN=1;//产生停止条件

do {

}while(SSPIF==0);//等待停止条件产生

SSPIF=0;//SSPIF标志清0

}

6.2.4程序清单

下面给一个例程。该程序利用MAX518进行D/A转换,且从D/A0引脚输出一个正弦波形。可作为读者编制程序的参考。特别注意,在调试该程序时,把模板上的钮子开关S8拔向高电平,以免发生资源冲突。

#include

//本程序将通过PIC16F877的I2C方式驱动D/A转换器MAX518,使其D/A0通道输出//一个连续的正弦波形(注:本程序并没对正弦波的频率进行控制)

const char table[ ] = {0X80,0X86,0X8D,0X93,0X99,0X9F,0XA5,0XAB,

0XB1,0XB7,0XBC,0XC2,0XC7,0XCC,0XD1,0XD6,0XDA,0XDF,0XE3,0XE7,0XEA,0XEE,0XF1,0XF4,0XF6,0XF8,0XFA,0XFC,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFD,0XFB,0XF9,0XF7,0XF5,0XF2,0XEF,0XEC,0XE9,0XE5,0XE1,0XDD,0XD8,0XD4,0XCF,0XCA,0XC5,0XBF,0XBA,0XB4,0XAE,0XA8,0XA2,0X9C,0X96,0X90,0X89,0X83,0X80,0X79,0X72,0X6C,0X66,0X60,0X5A,0X55,0X4E,0X48,0X43,0X3D,0X38,0X33,0X2E,0X29,0X25,0X20,0X1C,0X18,0X15,0X11,0X0E,0X0B,0X09,0X07,0X05,0X03,0X02,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X02,0X04,0X06,0X08,0X0A,0X0D,0X10,0X13,0X16,0X1A,0X1E,0X22,0X27,0X2B,0X30,0X35,0X3A,0X40,0X45,0X4C,0X51,0X57,0X5D,0X63,0X69,0X6F,0X76,0X7C};

120

//以上的数组用于存放正弦表,在定义数组时,前面应该加上const,

//以使数组存放于ROM中,而不至于占用太多的RAM

unsigned char i;

unsigned char j;

unsigned char n;

//I2C初始化子程序

void i2cint()

{

SSPCON = 0X08;//初始化SSPCON寄存器

TRISC3 =1;//设置SCL为输入口

TRISC4 =1;//设置SDA为输入口

TRISA4 = 0;

SSPSTAT=0X80;//初始化SSPSTAT寄存器

SSPADD=0X02;//设定I2C时钟频率

SSPCON2=0X00;//初始化SSPCON2寄存器

di();//关闭总中断

SSPIF=0;//清SSP中断标志

RA4=0;//关掉74HC165的移位时钟使能,以免74HC165

//移位数据输出与I2C总线的数据线发生冲突SSPEN=1;//SSP模块使能

}

//I2C总线输出数据子程序

void i2cout()

{

SEN=1;//产生I2C启动信号

for(n=0x02;--n;) c ontinue;//给予一定的延时,保证启动

do {

RSEN=1;//产生I2C启动信号

}while(SSPIF==0);//如果没能启动,则反复启动,直到启动为止

SSPIF=0;//SSPIF标志清0

SSPBUF=0X58;//I2C总线发送地址字节

do {

}while(SSPIF==0);//等待地址发送完毕

SSPIF=0;//SSPIF标志清0

SSPBUF=0X01;//I2C总线发送命令字节

do {

}while(SSPIF==0);//等待命令发送完毕

SSPIF=0;//SSPIF标志清0

121

SSPBUF=j;//I2C总线发送数据字节

do {

}while(SSPIF==0);//等待数据发送完毕

SSPIF=0;//SSPIF标志清0

PEN=1;//产生停止条件

do {

}while(SSPIF==0);//等待停止条件产生

SSPIF=0;//SSPIF标志清0

}

//主程序

main ()

{

i2cint();//I2C初始化

while(1){

for(i=0x00;i<=127;++i)

{

j=table[i];//从数组中得到需要传输的数据量

i2cout();//利用I2C总线方式送出数据

}

}

}

122

对输入、输出模拟量的PLC编程的探讨及编程实例解析

对输入、输出模拟量的PLC编程的探讨及编程实例解析

————————————————————————————————作者: ————————————————————————————————日期:

对输入、输出模拟量的PLC编程的探讨及编程实例解析 对于初学PLC编程的人来说,模拟量输入、输出模块的编程要比用位变量进行一般的程序控制难的多,因为它不仅仅是程序编程,而且还涉及到模拟量的转换公式推导与使用的问题。不同的传感变送器,通过不同的模拟量输入输出模块进行转换,其转换公式是不一样的,如果选用的转换公式不对,编出的程序肯定是错误的。比如有3个温度传感变送器: (1)、测温范围为0~200,变送器输出信号为4~20ma (2)、测温范围为0~200,变送器输出信号为0~5V (3)、测温范围为-100 ~500,变送器输出信号为4~20ma (1)和(2)二个温度传感变送器,测温范围一样,但输出信号不同,(1)和(3)传感变送器输出信号一样,但测温范围不同,这3个传感变送器既使选用相同的模拟量输入模块,其转换公式也是各不相同。 一、转换公式的推导 下面选用S7-200的模拟量输入输出模块EM235的参数为依据对上述的3个温度传感器进行转换公式的推导: 对于(1)和(3)传感变送器所用的模块,其模拟量输入设置为0~20ma电流信号,20ma 对应数子量=32000,4 ma对应数字量=6400; 对于(2)传感变送器用的模块,其模拟量输入设置为0~5V电压信号,5V 对应数字量=32000,0V对应数字量=0; 这3种传感変送器的转换公式该如何推导的呢?这要借助与数学知识帮助,请见下图:

模拟输入输出接口原理及其应用 第三版习题参考答案

第7章模拟输入输出系统设计 本章习题 7-1基于嵌入式处理器的模拟输入输出系统是怎么构成的?各部分的主要功能是什么?两个系统的主要区别是什么? 答:基于嵌入式处理器的模拟输入输出系统与普通模拟输入输出系统不同之处在于嵌入式处理器内部已经大都集成了A/D转换器、D/A转换器。其它同普通模拟输入输出系统。如图所示。 传感器感知或采集工程过程中的相关参数、如温度、压力、流量等,信号调理电路把传感器送来的信号进行调整处理使采集的信号在A/D的有效范围,A/D变换器将模拟信号转换为数字信号,处理器对变换后的数字信号根据系统需求进行数字处理或运算,D/A变换器将数字信号变换成模拟信号,功能放大把模拟信号进行功率放大,使之足以推动后面的执行机构,执行机构将电能变换为机械能或其它能量以控制工业过程。 7-2传感器的作用是什么?有哪些常用传感器? 答:传感器的作用就是感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节。 按输入量可将传感器分为:位移传感器、速度传感器、温度传感器、压力传感器等;按照按工作原理分类:应变式、电容式、电感式、压电式、热电式等;按物理现象分类:结构型传感器、特性型传感器; 按能量关系分类:能量转换型传感器、能量控制传感器;按输出信号分类:模拟式传感器、数字式传感器。 主要传感器有:流量传感器、压力传感器、温度传感器、物位传感器、位移传感器、称重传感器、气敏传感器、磁敏传感器、红外光电传感器、机器人传感器等。 7-3传感器与变送器有什么区别?常用变送器有哪些? 答:变送器是将物理测量信号或普通电信号转换为标准电信号输出或能够以通讯协议方式输出的设备。与传感器的主要区别是除了感知还包括了以某种协议输出检测的结果。由于现代传感器通常增加了协议输出,因此也基本具备了变送器的功能。变送器主要有:温度/湿度变送器,压力变送器,差压变送器,液位变送器,电流变送器,电量变送器,流量变送器,重量变送器等。 7-4在模拟输入通道中,经常要使用信号调理电路,其主要功能和任务是什么?对于片上有ADC的嵌入式模拟输入通道,其调理电路的主要形式有哪些? 答:信号调理电路主要功能和任务就是放大、滤波、隔离以及激励与变换等,使其符合模/数转换器(ADC)输入的要求。 片上有ADC的调理电路主要形式包括:

模拟量输入输出

第六章模拟量输入输出 *模拟通道的组成 调理电路,模拟开关MUX(多路复用)sample/holder S/H 采样保持器SHA (sample/holder—S/H )* 转换接口电路 简单I/O 扩展:输入缓冲/输出锁存,同步转换(R f G d) 基准地(Reference Ground)电压基准源(Reference Voltage Source)(g )*ADC/DAC 线性转换关系X Di it l A l x-x 0X-X 0= 微机系统与接口X:Digital,x:Analog x 1-x 0X 1-X 0

应用: 生产过程微机控制系统结构 I /O 通道信号调理 连续模拟信号 过 程 传感器检测/控制 操作台I/O 接口A/D 输入调理模拟量对 象变送器微I/O 接口D/A V/I 变换打印机⌒被执行机构机主数字量控对 象 传感器执行机构机电平变换功放驱动I/O 接口I/O 接口DI DO 显示器∪ 传感执行 频率、其他微机系统与接口 传感、执行I/O 接口变换信号处理

模拟量I/O 接口 模拟量的概念(信号连续量):DC-V(mv)/mA(V)典型:信号采样/复原-信号处理 控制、监控-自动化系统 转换输入:V/F(P389:AD650)?计数器;输出:计数器?F/V(LM331);PWM 调宽(时间):易于光电隔离 F/V 模 T/C 8253/脉冲 频率 V/F 拟 信 8254MPU 号 ADC/DAC 微机系统与接口V/I 数字量

模拟量转换与I/O 通道 1.模数转换--ADC 数模转换--DAC Analog to Digital Converter/Digital to Analog Converter 22. 模入与模出通道的组成:输入通道: (高精度测量,1%~0.05%,可分时采样,同步采样) Vref 调理放大MUX S/H ADC 数字量 (MPU) 传感器Multiplexer :(6.4)多路转换器(开关,(模拟)多路(电子)开关 1-N,N-1,N 选一):N 路入一路输出:巡回扫描/分时转换;S l /H ld (65)Sample/Holder :(6.5)捕捉后保持信号(电容)Voltage reference:电压基准源 输出通道:(精度,同步输出,输出保持--动态扫描) 复习:运算放大器放大执行DAC V/I 调理数字量 (MPU)微机系统与接口驱动机构 Vref MUX, S/H

对输入、输出模拟量的PLC编程实例解析汇报

对输入、输出模拟量的PLC编程的探讨及编程实例解析 对于初学PLC编程的人来说,模拟量输入、输出模块的编程要比用位变量进行一般的程序控制难的多,因为它不仅仅是程序编程,而且还涉及到模拟量的转换公式推导与使用的问题。不同的传感变送器,通过不同的模拟量输入输出模块进行转换,其转换公式是不一样的,如果选用的转换公式不对,编出的程序肯定是错误的。比如有3个温度传感变送器: (1)、测温围为0~200,变送器输出信号为4~20ma (2)、测温围为0~200,变送器输出信号为0~5V (3)、测温围为-100 ~500,变送器输出信号为4~20ma (1)和(2)二个温度传感变送器,测温围一样,但输出信号不同,(1)和(3)传感变送器输出信号一样,但测温围不同,这3个传感变送器既使选用相同的模拟量输入模块,其转换公式也是各不相同。 一、转换公式的推导 下面选用S7-200的模拟量输入输出模块EM235的参数为依据对上述的3个温度传感器进行转换公式的推导: 对于(1)和(3)传感变送器所用的模块,其模拟量输入设置为0~20ma电流信号,20ma 对应数子量=32000,4 ma对应数字量=6400; 对于(2)传感变送器用的模块,其模拟量输入设置为0~5V电压信号,5V对应数字量=32000,0V对应数字量=0; 这3种传感変送器的转换公式该如何推导的呢?这要借助与数学知识帮助,请见下图:

上面推导出的(2-1)、(2-2)、(2-3)三式就是对应(1)、(2)、(3)三种温度传感变送器经过模块转换成数字量后再换算为被测量的转换公式。编程者依据正确的转换公式进行编程,就会获得满意的效果。 二、变送器与模块的连接

S7 200模拟量编程讲解与示范(1)

本文以EM235为例讲解S7-200模拟量编程,主要包括以下内容: 1、模拟量扩展模块接线图及模块设置 2、模拟量扩展模块的寻址 3、模拟量值和A/D转换值的转换 4、编程实例 模拟量扩展模块接线图及模块设置 EM235是最常用的模拟量扩展模块,它实现了4路模拟量输入和1路模拟量输出功能。下面以EM235为例讲解模拟量扩展模块接线图,如图1。 图1 图1演示了模拟量扩展模块的接线方法,对于电压信号,按正、负极直接接入X+和X-;对于电流信号,将RX和X+短接后接入电流输入信号的“+”端;未连接传感器的通道要将X+和X-短接。 对于某一模块,只能将输入端同时设置为一种量程和格式,即相同的输入量

程和分辨率。(后面将详细介绍) 量的单/双极性、增益和衰减。 时,模拟量输入为单极性输入,SW6为OFF时,模拟量输入为双极性输入。 SW4和SW5决定输入模拟量的增益选择,而SW1,SW2,SW3共同决定了模拟量的衰减选择。

6个DIP开关决定了所有的输入设置。也就是说开关的设置应用于整个模块,开关设置也只有在重新上电后才能生效。 输入校准 模拟量输入模块使用前应进行输入校准。其实出厂前已经进行了输入校准,如果OFFSET和GAIN电位器已被重新调整,需要重新进行输入校准。其步骤如下: A、切断模块电源,选择需要的输入范围。 B、接通CPU和模块电源,使模块稳定15分钟。 C、用一个变送器,一个电压源或一个电流源,将零值信号加到一个输入端。 D、读取适当的输入通道在CPU中的测量值。 E、调节OFFSET(偏置)电位计,直到读数为零,或所需要的数字数据值。 F、将一个满刻度值信号接到输入端子中的一个,读出送到CPU的值。 G、调节GAIN(增益)电位计,直到读数为32000或所需要的数字数据值。 H、必要时,重复偏置和增益校准过程。 EM235输入数据字格式 下图给出了12位数据值在CPU的模拟量输入字中的位置

实验4模拟输入输出接口

实验四模拟输入输出接口 一、实验目的 1. 学习模拟输入输出接口的原理 2. 掌握接口程序实现的基本方法 二、实验设备 标准硬件。 三、实验内容 在实验箱的CPU板上运行程序,拨动相应开关,与它对应的LED灯显示电平的高低,同时,LCD上显示相应的数据值。 四、实验原理 使用一片缓冲芯片74LS244来把CPU外面的输入数据写入CPU的并行总线上,之后,并行总线上的数据被一片数据锁存芯片74LS273保留,CPU通过选中锁存芯片,并读取预先设给锁存器地址内的内容,就可以把数据读出,来确定外面的数据的高低。本实验的输入是用8个拨动开关两种工作状态来表示输入接口的高低状态,然后,再通过8个LED灯亮和灭两种工作状态,以及LCD上用数据值来清楚的反映各状态的输出显示,从而完成模拟的输入输出接口的实现。 在C程序中的实现,如下程序所示: while(1) { for(i=0;i<1000;i++);//延时 rrr = (*(volatile unsigned char*)0x20000016);//CPU把值写入并行数据总线 d0 = rrr>>7&1; d1 = rrr>>6&1; d2 = rrr>>5&1; d3 = rrr>>4&1; d4 = rrr>>3&1;

d5 = rrr>>2&1; d6 = rrr>>1&1; d7 = rrr>>0&1;//将数据按位赋值 data = (d7<<7|d6<<6|d5<<5|d4<<4|d3<<3|d2<<2|d1<<1|d0); (*(volatile unsigned char*)0x20000000) = data;//CPU把总线值写入锁存器 for(i=0;i<1000;i++); if (data != data_pre) //data_pre为上一个数据,若当前数据与上一个相同则不处理 { Set_Color(GUI_YELLOW); Set_Font(&GUI_Font8x16); Disp_BinAt(data,170,120,8);//显示二进制数据 Disp_HexAt(data,170,140,4);//显示十六进制数据 Disp_DecAt(data,170,160,3);//显示十进制数据 data_pre = data; //保存数据 } } 五、实验步骤 1.打开LCD电源开关。 2.打开ADS1.2开发环境,打开\基础实验 \实验八\IO_SIM.mcp项目文件,然后进行compile和make生成*.axf文件。 3.编译通过后,进入ADS1.2调试界面,加载基础实验\实验八 \IO_SIM_Data\Debug中的映象文件IO_SIM.axf。 4.在ADS调试环境下全速运行映象文件。LCD上有图形显示后,将拨码开关0-7全部拨到ON,拨动LED灯下方的开关K1-k8,拨到L为0,H为1,0时LED亮。观察开关上方的8个LED灯的亮灭情况,以及LCD上的显示情况。每个开关代表1个数字位,遵循二进制规则。

PIC单片机模拟量输入与输出

第6章模拟量输入与输出 6.1 A/D转换的应用 例6.1 A/D转换初始化程序 //A/D转换初始化子程序 void adinitial( ) { ADCON0 = 0x51;//选择A/D通道为RA2,打开A/D转换器 //在工作状态,且使AD转换时钟为8t osc ADCON1 = 0X80;//转换结果右移,及ADRESH寄存器的高6位为"0" //且把RA2口设置为模拟量输入方式PIE1 = 0X00; PIE2 = 0X00; ADIE = 1;//A/D转换中断允许 PEIE = 1;//外围中断允许 TRISA2=1;//设置RA2为输入方式 } 6.1.2 程序清单 下面给出一个调试通过的例程,可作为读者编制程序的参考。 117

该程序中用共用体的方式把A/D转换的10位结果组合在一起。有关共用体的详细资料请参考本书相关章节。 # include union adres {int y1; unsigned char adre[2]; }adresult;//定义一个共用体,用于存放A/D转换的结果 unsigned char i; unsigned int j; //系统各I/O口初始化子程序 void initial() { TRISD=0X00;//D口为输出 i=0x00; } //A/D转化初始化子程序 void adinitial() { ADCON0=0x51;//选择A/D通道为RA2,打开A/D转换 118

//在工作状态,且使A/D转换时钟为8t osc ADCON1=0X80;//转换结果右移,及ADRESH寄存器的高6位为"0" //且把RA2口设置为模拟量输入方式PIE1=0X00; PIE2=0X00; ADIE=1;//A/D转换中断允许 PEIE=1;//外围中断允许 TRISA2=1;//设置RA2为输入方式 } //延时子程序 void delay() { for(j=5535;--j;) continue; } //报警子程序 void alarm() { i=i^0xFF;//通过异或方式每次把i的各位值取 119

第六章模拟量输入输出与数据采集卡

第六章模拟量输入输出与数据采集卡 通过本章的学习,使考生掌握D/A,A/D转换的原理和典型芯片,在此基础上了解工业控制计算机常用模板的组成和应用。 要求: (1)了解D/A转换的工作原理和8位,12位D/A转换芯片;D/A转换器与总线的连接和应用方法。 (2)了解A/D转换器的工作原理和指标,熟悉A/D转换的典型芯片和多路转换器,采样保持器的工作原理。 (3)了解数据采集卡的组成和指标及其应用方法,了解工控机配套模板的概况。 一、重点提示 本章重点是D/A,A/D转换器的工作原理,与总线的连接方法。 二、难点提示 本章难点是利用这些芯片和多路开关、采样保持器组成数据采集卡的应用方法。 考核目的:考核学生对微型计算机的模拟通道的构成及工作原理的掌握。 1.数模转换器D/A (1)D/A转换的指标和工作原理 / (2)典型D/A转换器芯片 (3)D/A转换器与总线的连接 2.模数转换器A/D (1)A/D转换器的工作原理(双积分和逐次逼近型A/D转换),A/D转换器主要指标 (2)典型A/D转换器芯片(ADC0809及.12位A/D芯片)的功能和组成,与总线的连接 3.多路开关 (1)数据采集系统对多路开关的要求 (2)几种多路开关芯片 (3)几种多路开关的主要技术参数 4.采样保持器 (1)采样保持器的工作原理 (2)常用的采样保持器芯片 5.数据采集卡的组成及其应用 本章知识结构如下: (一)D/A转换接口 D/A转换器的作用是将二进制的数字量转换为相应的模拟量。D/A转换器的主要部件是电阻开关网络,其主要网络形式有权电阻网络和R-2R梯形电阻网络。 集成D/A芯片类型很多,按生产工艺分有双极型、MOS型等;按字长分有8位、10位、

S7-300PLC模拟量输入输出量程转换教程

S7-300/400 PLC模拟量输入/输出的量程转换 SLC A&D CS March, 2005

1模拟量输入/输出量程转换的概念 (3) 2S7-300/400 PLC模拟量输入/输出模板 (3) 2.1需要使用的模板 (3) 2.2涉及的信号类型 (3) 3STEP 7中模拟量输入/输出的编程 (3) 3.1FC105/FC106在哪里 (3) 3.2FC105/FC106功能描述 (5) 3.2.1FC105功能描述 (5) 3.2.2FC106功能描述 (5) 3.3FC105/FC106参数定义 (6) 3.3.1FC105 的参数定义 (6) 3.3.2FC106的参数定义 (6) 3.4例子程序 (7) 3.4.1FC105例子程序 (7) 3.4.2FC106例子程序 (8)

1模拟量输入/输出量程转换的概念 实际的工程量,如压力、温度、流量、物位等要采用各种类型传感器进行测量。传感器将输出标准电压、电流、温度、或电阻信号供PLC采集,PLC的模拟量输入模板将该电压、电流、温度、或电阻信号等模拟量转换成数字量——整形数(INTEGER)。在PLC程序内部要对相应的信号进行比较、运算时,常需将该信号转换成实际物理值(对应于传感器的量程)。而经程序运算后得到的结果要先转换成与实际工程量对应的整形数,再经模拟量输出模板转换成电压、电流信号去控制现场执行机构。这样就需要在程序中调用功能块完成量程转换。 如一个压力调节回路中,压力变送器输出4-20mA DC信号到SM331模拟量输入模板, SM331模板将该信号转换成0-27648的整形数,然后在程序中要调用FC105将该值转换成0-10.0(MPa)的工程量(实数),经PID运算后得到的结果仍为实数,要用FC106转换为对应阀门开度0-100%的整形数0-27648后,经SM332模拟量输出模板输出4-20mA DC信号到调节阀的执行机构。 本文主要讨论S7-300/400 PLC编程中模拟量的量程转换。 2S7-300/400 PLC模拟量输入/输出模板 2.1需要使用的模板 使用西门子S7-300/400 PLC进行模拟量输入/输出需要使用的模板: S7-300系列PLC:SM331系列模拟量输入模板;SM332系列模拟量输出模板;SM334/335系列模拟量输入/输出模板。 S7-400系列PLC:SM431系列模拟量输入模板;SM432模拟量输出模板。 目前常用的模板规格型号参见模板手册,请链接到如下网址下载模板手册: S7-300: https://www.sodocs.net/doc/324065503.html,/WW/view/en/8859629 S7-400: https://www.sodocs.net/doc/324065503.html,/WW/view/en/1117740 2.2涉及的信号类型 电压,电流,温度,电阻。 3STEP 7中模拟量输入/输出的编程 3.1FC105/FC106在哪里 在编程界面下,在Program elements中的Libraries下的Standard Library下的TI-S7 Converting Blocks中就可以找到,见下图:

模拟量输入输出讲解

对输入、输出模拟量的PLC 编程的探讨及编程实例解析 对于初学PLC 编程的人来说,模拟量输入、输出模块的编程要比用位变量进 行一般的程序控制难的多,因为它不仅仅是程序编程,而且还涉及到模拟量的转 换公式推导与使用的问题。不同的传感变送器,通过不同的模拟量输入输出模块 进行转换,其转换公式是不一样的,如果选用的转换公式不对,编出的程序肯定 是错误的。比如有3个温度传感变送器: (1) 、测温范围为0~200 ,变送器输出信号为4?20ma (2) 、测温范围为0~200 ,变送器输出信号为0?5V (3) 、测温范围为 —100 ~500 ,变送器输出信号为4?20ma (1)和(2) 二个温度传感变送器,测温范围一样,但输出信号不同,( 1) 和(3)传感变送器输出信号一样,但测温范围不同,这 3个传感变送器既使选用 相同的模拟量输入模块,其转换公式也是各不相同。 一、转换公式的推导 下面选用S7-200的模拟量输入输出模块EM235勺参数为依据对上述的3个 温度传感器进行转换公式的推导: 对于(1)和(3)传感变送器所用的模块,其模拟量输入设置为 0?20ma 电流 信号,20ma 对应数子量=32000, 4 ma 对应数字量=6400; 对于(2)传感变送器用的模块,其模拟量输入设置为 0?5V 电压信号,5V 对应数字量=32000, 0V 对应数字量=0; 这3种传感変送器的转换公式该如何推导的呢?这要借助与数学知识帮助, 请见下图: 时,输出电流ITma,模块转AIW=C400H T 与AlWffi 关系曲线如上左图所示,恨 据三角形相粽定理可5lb LABM 屮 按可引h — = ..... (1-1) 由團外h 屮 CT DM AB=200 CI>=h BM=32000—6400 DM=AI^—6400 带入(1*1)式,可得; 十 “咤边….(… (32000-6400) | (2;传感藩测温T=20€°时,输出电压V=5V,模块转换数字話f 『」U AIW T AlWx ⑴传感鉄诜珞跆 T 戋糸图 (3満惑越7AIW 戋齐因 (1)偉感器测淳7-200°时,输出电療1-2Dim,模块转换数宇量AIW-3200Dj 测温T-D 0*

PLC模拟量输入输出模块

PLC模拟量输入、输出模块低成本扩展的一种方法 1 引言 可编程控制器(以下简称PLC)由于其高可靠性、编程简单、通用性强、体积小、结构紧凑、安装维护方便等特点,而在工业控制中得到了广泛应用。PLC的模块一般分为以下几大类:开关量输入模块、开关量输出模块、模拟量输入模块、模拟量输出模块。在工业控制中特别是过程控制领域中需要采集和控制的模拟量比较多,因而对PLC的模拟量输入、输出模块需要的较多,而模拟量输入、输出模块比较贵,增加模拟量输入、输出模块就增加了成本,降低了整个系统的性价比,限制了PLC的应用。本文提出了一种基于通讯的模拟量输入、输出模块的扩展方法力图解决这一问题。 2 基于通讯的模拟量输入、输出模块的扩展方法 (1) 模拟量输入模块扩展 这里以一路12位模拟量输入为例,模拟信号以0~5V标准电压的形式送入信号输入端,应用12位A/D转换芯片MAX187实现模数转换。MAX187是12位串行A/D,具有较高的转换速度,采样频率是75kHz,适用于较高精度的过程控制。考虑到实际工业现场中的高频干扰,在采样信号送MAX187之前还使用了低通滤波器滤波,如图1所示。

图1 低通滤波、放大器及A/D转换 MAX187具有内部参考电压,既4#管脚(REF)为4.096V,因此,A/D 转换的全量程为4.096V。而输入信号是0~5V,因此,要加一级运放把0~5V转换成0~4.096V后送入MAX187。AT89C52的P1.3和MAX187的片选端(CS)相连、AT89C52的P1.4和MAX187的串行时钟信号端(SCLK)相连、AT89C52的P1.5和MAX187的串行数据输出端(DOUT)相连。模拟量采样的值存入单片机的内存中,再由单片机的串行口传送给PLC。A/D转换的C51程序如下: #include #include sbit IC4_S = P1^4; /* AD输入端口设置*/ sbit IC4_D = P1^5; sbit IC4_C = P1^3;

模拟量输入输出AD-DA使用教程

AD与DA功能说明 一、关于AD所使用的寄存器功能: 1)D8050:模拟量AD时钟分频(设定值:0~3,默认为:2),0-AD时钟为CPU时钟2分频;1-AD时钟为CPU时钟4分频;2-AD时钟为CPU时钟6分频;3-AD时钟为CPU时钟8分频;AD时钟不能大 于14M; 2)D8051:模拟量AD采样次数(设定值:3~50次,默认为:22)的设置数据在下次上电生效; 二、关于上下量程设置与使用 1、上下量程支持设置成负数,上量程必须大于下量程; 2、如果上下量程均为0,则不进行对应量程的数据转换; 3、当上下限量程均为0时,DA数据的输入范围:0~4095,反之,DA数据的输入范围:>=下限量 程,<=上限量程;数据在上述数据外时,PLC报6712故障; 三、RD3A与WR3A使用说明 1、RD3A的使用 M0m1m2s1 (RD3A K0D0D10) 指定保存AD数据的寄存器D10 指定量程的寄存器D0上限D1下限 指定需要读取的AD路数(0~14)说明: a)m1-指定需要读取的AD路数(最大数为设置软件开通的路数,超出报6711); b)m2-指定上下限量程的寄存器,m2为量程上限,m2+1为量程下限,仅可指定D寄存器作为量 程地址,其它数据报6711; c)上面的程序原理:当M0为ON时,读取第一路AD数据(上限量程在D0,下限量程在D1)到 D10保存; 例: 按上述的程序, 1)假如:D0=1000,D1=0,AD的输入是0~10V,现时输入是5V,那D10=500; 2)假如:D0=0,D1=0,AD的输入是0~10V,现时输入是5V,那D10=2048; 3)假如:D0=1000,D1=-1000,AD的输入是0~10V,现时输入是5V,那D10=0;

第四讲 模拟量的输入输出通道

第四讲 模拟量的输入输出通道 过程控制 前向通道和后向通道是过程控制系统的重要组成部分 1、前向通道 数字信号处理 1.1 A/D 转换 1.1.1 硬件电路设计 (1)分辨率的选择 分辨率用位表示,n 位的A/D 转换器表示可以把输入信号分为2n 份,每一份为全量程1/2n ,称为1个LSB 。例如,本例程中采用8位A/D 温度范围为20℃~100℃,则 C 5.0C 3125.02 20 100LSB 18 ?

片选RD WR ADC0804 WR RD INTR DB 0~DB 7CS A/D 转换的时序图 1.1.2 软件的编制 查询法和中断法 (1)查询法

Extern unsigned char convert_ad(void) { Char xdata *dptr; Dptr=0x8000; *dptr=0; While(int0); Return(*dptr); } 1.1.3 测试 可以用LCB直接显示转换结果(3位整数),描点画线检查A/D转换的线性度。 A/D 万用表测出 的输入电压 1.2 数字滤波器 1.2.1 问题定义 来自传感器或变送器的有用信号中,往往混杂了各种频率的干扰信号。为了抑制这些干扰信号,通常在信号入口引入滤波器。常用的RC 滤波器能抑制高频干扰信号,但对低频干扰信号的滤波效果较差。而数字滤波器可以对极低频干扰信号进行滤波,以弥补RC 滤波器的不足。另外,它还具有某些特殊的滤波功能。 所谓数字滤波,就是在计算机中用某种计算方法对输入的信号进行数学处理,以便减少干扰在有用信号中的比重,提高信号的真实性。这种滤波方法不需要增加硬件设备,只需根据预定的滤波算法编制相应的程序即可达到信号滤波的目的。 1.2.2 常用的滤波算法 (1)限幅滤波 限幅滤波的作用是把两次相邻的采样值相减,求出其增量(以绝对值表示),然后与两次采样允许的最大差值(由被控对象的实际情况决定)Δy进行比较,若小于或等于Δy,则取本次采样值;若大于Δy,则仍取上次采样值作为本次采样值 当| y(n)- y(n -1)|≤Δy时,则取y(n)= y(n) 当| y(n)- y(n -1)| >Δy时,则取y(n)= y(n -1)

8-6模拟信号的输入与输出

模拟信号的输入与输出

模数(A/D)转换和数模(D/A)转换 ?计算机应用系统,比如数据采集系统、实时控制系统等,常常会遇 到一些随时间连续变化的参数,如温度、压力、位移、速度等。这些都是模拟量,一般需要先通过传感器将其转换成电流或电压,然后再将其转换成数字量,再输入到计算机中进行处理。 ?对于控制系统来说,其最终目的是对控制对象进行控制。如果控制 对象的参数是模拟量,则需要把计算机输出的数字量转换为模拟量。上述过程中,从模拟量到数字量的过程称为模数(A/D)转换,从数字量到模拟量的过程称为数模(D/A)转换。相应的有,ADC为A/D 转换器,DAC为D/A转换器。

A/D转换及其接口 A/D转换的基本步骤为:采样、保持、量化和编码。

采样-保持电路 t 0时刻S 闭合,C H 被迅速充电,电路处于采样阶段,此时u o =u i ;t 1时刻采样阶段结束,S 断开,电路处于保持阶段。若A 2的输入阻抗为无穷大,S 为理想开关,则C H 没有放电回路,两端保持充电时的最终电压值不变,从而保证电路输出端的电压u o 维持不变。 - - + + u i u o C H S A 1 A 2 u C u o , u i u o u i 0 (a) 电路图 (b) 波形图 t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10 t 11 t 采样脉冲(f S ) 开关驱 动电路

量化 ?把离散信号转变为数字信号的过程,称为量化过程。 ?量化就是把输入模拟信号f(t)的变化范围划分成若干 层,每一层都由一个数字来代表,采样值落到哪一层,就由哪一层的数字来代表。这样,所有的采样值经过“量化”后,就化为了对应的数字量,成为了整数值。 ?精度:当量化单位R取得愈小时,误差越小。

模拟量输入输出模块

模拟量输入输出模块 1、FX1N-2AD-BD模拟量输入板 用在FX1S或者FX1N系列的plc上,提供2路的模拟量输入。 2、FX1N-2DA-BD 用在FX1S或者FX1N系列的plc上,提供2路的模拟量输入。 3、FX1N-8AV-BD/FX2N-8A V-BD模拟量调节器 用在FX1S或者FX1N或FX2N系列的plc上,用作模拟定时器调整器的旋钮开关

1):示例:利用模拟量改变定时器的设定值 把八个电位器中的0号电位器的模拟量(0~255)读取进来放在D0中D0的变化值是0~~255 2)、利用模拟量调整器设计一个具有11档的旋转开关。 读取1号电位器,把读取的值放在D1中,然后对其进行译码DECO指令是把D0的前四位进行解码,把对应的结果放在M中D1的变化值是0~~10

4、 FX0N-3A 模拟量输入和输出模块 功能:(能同时把模拟量转化成数字量,也能把数字量转化成模拟量) 1)提供8位分辨率精度(转化精度比较低) 2)配备2路模拟量输入(0--10V 直流或4—20mA 交流)通道和1路模拟输出通道 模拟量输入: 公共项目:

接线: 与plc 的连接情况: FX0N 系列plc:可连接FX0N-3A 模块8个 FX1N 系列plc:可连接FX0N-3A 模块5个 FX2N 系列plc:可连接FX0N-3A 模块8个 FX0NC 系列plc:可连接FX0N-3A 模块4个 输入/输出特性曲线: 输入特性:(模块不允许两个通道有不同的输入特性) 即不允许电流和电压同时输入或不同量程的电压输入

输出特性: 缓冲存储器(BFM)的分配 注:BFM#17: b0=0选择模拟输入通道1 b0=1选择模拟输入通道2 b1=0—>1,起动A/D转换处理 b2=0—>1,起动D/A转换处理 例:把外部输入的模拟量转化成数字量 TO:是把数据写到特殊模块的BFM中。上例即是当M0接通时,把H0的值写到外部扩展模块0的位置中的BFM#17开始的一个字(16位)中 FROM:上例即是当M0接通时,把外部扩展模块0的位置中的BFM#0开始的一个字(16位)的数据写到D0中 H0的值写到外部扩展模块0的位置中的BFM#17开始的一个字(16位)中

模拟量输出电路

文件编号:INVT0_013_0005_CBB_01 CBB规范 模拟量输出电路 (VER:V1.0) 拟制:华时间:2009-05-26 批准:时间: 文件评优级别:□A优秀□B良好□C一般

1 功能介绍 目前许多单片机本身都不具备模拟量输出(DAC)功能,但可以输出PWM信号,本电路实现了将频率为10K,幅值为5V的PWM信号转换成0~10V电压或者0~20mA电流的模拟量信号输出。 2 详细原理图 工作原理说明: (1)输入频率为10K,幅值为5V的PWM信号,经过元件R1、C1、R2、C3二阶低通滤波后转换成0~5V的电压信号; (2)运放U1A是一个同相放大器,对输入信号放大(1+R6/R5)倍,所以输出电压Uout 对应0~10V; (3)虚线框内部分构成了一个恒流源,电流大小就是Iout=Uout*R7/R8/R13; (4)通过短接片跳线可以选择输出电流或者电压信号。 3 器件功能 ?电阻R1、R2及电容C1、C3构成二阶RC低通滤波器,将输入PWM信号转换成对应电压。?U1A为同相输入运算放大器; ?U1B构成了一个恒流源; ?二极管D1,对端子信号进行电压钳位,防止电压过高或者过低,起保护作用; ?电容C2、C4为芯片TL082的滤波电容; ?C5、C6,输出电压滤波,减少电压纹波作用;

? Q1、Q2三极管,增加电流驱动能力; ? R9、R11,三极管基极限流电阻。 4 参数计算 4.1 运算放大器: 选择常用TL082。 4.2 电阻R1、电容C1、电阻R2、电容C3: 构成二阶低通滤波电路,必须满足截止频率远远小于输入的PWM 频率,这里电阻我们选用22K ,兼顾到响应速度,电容C1选用0.1uF 电容,为了更好地稳定运算输入端电压,电容C3这里选用1uF 电容。滤波积分时间常数为: 3121C C R R ???=μμ1.012222???K K =7mS 符合使用要求。 4.3 电容C2、C4: 芯片电源滤波电容,选择常用的0.1uF 电容。 4.4 电容C5、 滤波作用,直接与外端输出端子相连,一方面减少输出电压纹波,另一方面也可以抑制外部输入的干扰信号。这里选用0.1uF/100V 电容。 4.5 电容C6: 滤波电容,抑制电压纹波,选择1uF/50V 电容。 4.6 电阻R5、R6的选取: 0~5V 的信号通过同相放大器放大到0~10V 输出,放大倍数为(1+R6/R5),输入信号0~5VPWM 信号需要转换成0~10V 输出。考虑到输入的PWM 信号有可能会略低于5V ,所以放大倍数稍大于2,这里R5选择9.1K ,R6选择10K 。 4.7 恒流源电路,电阻R7、R8、R10、R11、R13: 典型的恒流源电路,由图可知: )87/(7*)2_(2_R R R U Uout U U +-+=+ )1210/(10*1_R R R U U +=- 对于运放有-≈+U U ,所以有: )1210/(10*1_)87/(8*2_)87/(7*R R R U R R R U R R R Uout +≈+++ 我们取电阻R8=R10,R7=R12,则有: 8/12*2_1_R R Uout U U =- 当R13<

相关主题