1、plc模拟量输进模块扩展 这里以一路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; void input(void ) { unsigned char idata i; unsigned int idata result=0x0000; IC4_C = 0; /* CS端为低电平*/ for(i=0;i<12;i++) { result = result << 1; IC4_S = 0; /*时钟端产生时钟脉冲*/ IC4_S = 1; if( IC4_D ) result++; /*从串行数据输出端读进A/D转换数据*/ } IC4_C = 1; /* CS端为高电平*/ pdat[1] = result; } MAX187的工作时序图见图2。
图2 MAX187的工作时序图 2、PLC模拟量输出模块扩展 这里以一路12位模拟量输出为例,设计中将采用12位D/A转换芯片MAX531来实现数摸转换。我们在MAX531的输出端接运算放大器,将模拟输出调节至0~5V,输出部分的硬件电路如图3所示。这里,MAX531是12位串行D/A,具有较高的转换速度, MAX531具有内部参考电压,既10#管脚(REFOUT)为2.048V,因此, D/A转换的全量程为2.048V。而输出信号一般要求是标准的0~5V,因此,要加一级运放把MAX531输出的0~2.048V信号转换成 0~5V信号。AT89C52的P1.0和MAX531的串行时钟信号端(SCLK)相连、AT89C52的P1.1和MAX531的串行数据输进端(DIN)相连、AT89C52的P1.2和MAX531的片选端(CS)相连。PLC把要输出的模拟量通过串行口传送给单片机,存进的内存中,再由单片机完成D/A转换进行输出。A/D转换的C51程序如下:
图3 D/A转换及放大器原理图 #include #include sbit IC2_S = P1^0; /*DA输出端口设置*/ sbit IC2_D = P1^1; sbit IC2_C = P1^2; void output(unsigned int dat) { unsigned char idata i = 12; IC2_C = 0; /* CS端为低电平*/ while( i-- ) { IC2_S = 0; /*时钟端产生时钟脉冲*/ if ( dat &0x0800 ) IC2_D =1; /*从串行数据输进端读进DA转换数据*/ else IC2_D =0; IC2_S = 1; dat = dat << 1; } IC2_C=1; /* CS端为高电平*/ } MAX531的工作时序图见图4。
图4 MAX531的工作时序图
|