模拟量的编程就是把模拟量转换成数字量,即A/D。如何实现的呢?西门子公司用专用的模拟量输入模块(EM231,EM235)来编程实现。
首先我们要学习一下,
(1)4通道输入模块(EM231,EM235)的输入值寻址?
模拟量输入和输出为一个字, 所以地址 必须从偶数字节开始, 精度为12位, 模拟量值为0-32000的数值。
输入模拟量地址是A1W0,A1W2,A1W4,A1W6 每个模拟量输入模块占两个通道 ,A1W0为第一通道模拟量,依次类推
输出模拟量地址是AQW0,AQW2,AQW4,AQW6 每个模拟量输出模块占两个通道 ,AQW0为第一通道模拟量,依次类推
(2)模拟量输入模块拨码开关设置
模拟量输入模块可以通过拨码开关设置为不同的测量方法。
开关的设置应用于整个模块,一个模块只能设置为一种测量范围。(注:开关设置只有在重新上电后才能生效)
输入阻抗与连接有关:电压测量时,输入是高阻抗为10 MOhm ;电流测量时,需要将Rx 和 x 短接,阻抗降到250 Ohm 。
(3)用软件编程提高稳定性:
针对上述情况,从软件入手,进一步调整了模拟量输入的稳定状况。方法是从AIW0取输入值,求多次采样的平均值依据计算出的平均值输出。
(4)子程序调用4AD编程
说明如下:
1、将模拟量通道AIW0的数据通过I_DI指令转换为DINT数据类型,并存放入AC0中
2、将AC0中的数据使用DI_R转换为浮点数,目的是为了提升计算精度,因为西门子不允整型数据直接转换为浮点数,因此必须通过1,2步骤转换。
3、将AC0-6400,因为4-20mA的采集在西门子200系列中是通过坐标移动进行的,也就是因为对于0-20mA来说,西门子S7-200的采集数据在0-32000,也就是说每mA
4、然后除以(DIV_R)25600来得到输入值占用整个输入范围的百分比,32000-6400=25600,25600就是4-20mA对应的输入范围。
5、然后通过乘以(MUL_R)100,就得到了0-100的数据。
通过上述程序,将输入的模拟量信号对应的6400-32000之间的数据转换为0-100之间的据,这样做也称为线性转换。
6.计算公式如下:AD=100X (AIW0-6400)/(32000-6400)
计算公式如下:AD=200X (AIW0-6400)/(32000-6400)