文档介绍: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) 为 ,因此, A/D 转换的全量程为 。而输入信号是 0~ 5V , 因此, 要加一级运放把 0~ 5V 转换成 0~ 后送入 MAX187 。 AT89C52 的 和 MAX187 的片选端(CS) 相连、 AT89C52 的 和 MAX187 的串行时钟信号端(SCLK) 相连、 AT89C52 的 和 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) 模拟量输出模块扩展这里以一路 12 位模拟量输出为例,设计中将采用 12位 D/A 转换芯片 MAX531 来实现数摸转换。我们在 MAX531 的输出端接运算放大器, 将模拟输出调节至 0~ 5V ,输出部分的硬件电路如图 3 所示。这里, MAX531 是 12 位串行 D/A , 具有较