在找答案板块中经常遇到一些新手提问关于模拟量怎样转换的问题。有的人知道西门子系统库有专门的块可以直接使用,例如模拟量输入转换块FC105。但是不明白块指令各个管脚的定义及含义。即使看了帮助文件,也搞不太明白。其实,我们完全不需要使用系统块指令,自己编写程序就可以实现。
我们都知道大多数传感器输出信号和其测量数值成比例关系,即直线关系。我们可以使用数学表达式表达:Y= k X+b 这里举个最简单的例子。有一个4线制液压压力传感器,其量程也就是测量范围是0-400bar ,输出4-20ma电流信号。即 当传感器检测到液压压力为0bar,输出4ma 电流信号,当传感器检测到液压压力为400bar,输出20ma电流信号。4-20ma对应模拟量数值0--27648 。根据上述线性关系可以画出直线。见下图;
从上图我们得知:b=0 ,k=400/27648 即 Y=400 X/27648 。由于有除法运算,为了提高运算结果精度,我们使用浮点数运算。根据数学表达式我们可以轻松得写出程序。假设模拟量输入地址是PIW 264,转换结果保存在MD0中。程序如下:
L PIW264 //把PIW264装载到累加器1中低16位
ITD //整数转换双整数,结果保存在累加器1中
DTR //双整数转换浮点数,结果保存在累加器1中
L 400.0 //把400.0 装载到累加器1中,原累加器1中内容复制到累加器2中
*R //累加器2内容与累加器1内容相乘结果保存在累加器1中
L 27648.0 //把27648.0装载到累加器1中,原累加器1中内容复制到累加器2中
/R // 累加器2内容除以累加器1中内容,结果保存在累加器1中
T MD0 //累加器1中内容传送到MD0中。
当然,我们也可以使用梯形图指令实现同样的功能。因为梯形图中对数据类型有严格的要求,PIW 264 是WORD 数据类型,因此我们需要先将PIW 264赋值给整数类型变量MW10 。程序见下图:
当然,这个是最简单的模拟量转换。但是,只要我们明白了原理,再复杂的模拟量转换,我们只要画出图形,写出数学表达式,根据数学表达式就可以快速正确的编写出程序。