您的位置:控制工程论坛网论坛 » 西门子社区 » 模拟量转换真的很简单

jijun

jijun   |   当前状态:在线

总积分:5845  2024年可用积分:3

注册时间: 2007-09-24

最后登录时间: 2023-08-18

空间 发短消息加为好友

模拟量转换真的很简单

jijun  发表于 2016/8/3 8:59:02      1453 查看 1 回复  [上一主题]  [下一主题]

手机阅读

      在找答案板块中经常遇到一些新手提问关于模拟量怎样转换的问题。有的人知道西门子系统库有专门的块可以直接使用,例如模拟量输入转换块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  。程序见下图:


当然,这个是最简单的模拟量转换。但是,只要我们明白了原理,再复杂的模拟量转换,我们只要画出图形,写出数学表达式,根据数学表达式就可以快速正确的编写出程序。

1楼 0 0 回复
  • xueba

    xueba   |   当前状态:在线

    总积分:2090  2024年可用积分:0

    注册时间: 2014-01-06

    最后登录时间: 2023-08-11

    空间 发短消息加为好友

    xueba   发表于 2016/8/3 18:18:36

    很对 这些看似很平常的数学 物理公式 就是我们在编程当中的理论基础; Y=KX+B     V= ω×r  等。。。

    2楼 回复本楼

    引用 xueba 2016/8/3 18:18:36 发表于2楼的内容

总共 , 当前 /