S7 200Smart怎样添加和使用模拟量指令库
在默认情况下,STEP 7-Micro/WIN SMART没有集成模拟量处理的指令,我们需要自己编写量程转换的子程序才能完成模拟量的处理。今天这篇文章,我想告诉大家一种相对简单的模拟量处理方式——使用Scale指令库。
Scale指令库其实也是西门子内部人员编写的,但不是官方正式发布的。我觉的这个指令库还是蛮方便的,值得推荐给大家使用。下面我们分两个步骤介绍:【1】怎样添加Scale指令库?【2】怎样使用里面的指令?
1、怎样添加Scale指令库?
首先需要下载Scale指令库。从哪里下载呢?可以到西门子的网站上搜索。
下载好后,将其放在一个指定的文件夹中。然后打开STEP 7-Micro/WIN SMART ,单击【工具】菜单的【选项】按钮,在弹出的对话框中,单击【项目】,你会看到一个用户库文件夹路径的设置,其默认路径如下图:
你可以将下载的Scale指令拷贝到这个文件夹中,也可以单击【浏览】将用户库文件夹指定到你当前存放的路径,单击【确定】后,就可以在【指令】-【库】中看到你新添加的scale指令。
下面这张图是我添加用户指令库前后的对比(当然,除了Scale还添加了一些其它指令库):
2、怎样使用Scale指令库
Scale指令库(v1.2)中有三条指令:S_ITR、S_RTR、S_RTI。名称中的”S”代表”Scale”,表示”量程”;”I”代表”Integer”,即”整数”;”R”代表”Real”,即”实数”;”T”代表”To”,即”转换”的意思;
这样就很好理解了,比如:S_ITR,就表示 Scale ,integer to real ,也就是整数到实数的量程转换;而S_RTI,就表示,Scale,real to integer,也就是实数到整数的量程转换;S_RTR,就表示,Scale,real to real,也就是实数到实数的量程转换;
2.1、S_ITR
该指令可以处理模拟量输入信号,并转换成相应的工程值,其初始添加到程序块中的状态如下图所示:
该指令有6个输入参数和1个输出参数,含义如下:
EN: 布尔值,指令使能;
Input: 整数,要转换的变量 ;
- ISH: Input Scaled High, 整数,输入量程的上限;
- ISL:Input Scaled Low ,整数,输入量程的下限;
- OSH: Output Scaled High,实数,输出量程的上限 ;
- OSL: Output Scaled Low, 实数,输出量程的下限;
- Output: 实数,转换后的变量;
例如: 假设模拟量输入模块连接的外部压力传感器,输入信号为0~20mA的电流信号,压力的范围为0~10000 mbar,输入通道的地址为:AIW16,转换后数据存放在VD0中,则代码如下:
如果压力传感器的信号为4~20mA,则需要把ISL的值改为5530,代码如下:
2.2、S_RTI
该指令可以将工程值转换成模拟量值进行输出,其初始添加到程序块中的状态如下:
该指令有6个输入参数和1个输出参数,含义如下:
- EN: 布尔值,指令使能;
- Input: 实数,要转换的变量;
- ISH: Input Scaled High, 整数,输入量程的上限;
- ISL:Input Scaled Low ,整数,输入量程的下限;
- OSH: Output Scaled High,实数,输出量程的上限 ;
- OSL: Output Scaled Low, 实数,输出量程的下限;
- Output: 实数,转换后的变量;
例如:
假设使用4~20mA的模拟量输出信号控制比例阀的输出压力,其输出量程范围为:0~6000mbar,输出通道的地址为AQW32,输出压力设定值存放在VD4,则代码如下:
假设输出±10V的电压信号用于速度控制,正值表示正转,负值表示反转,转速绝对值的范围为:0~3000r/min,输出通道AQW34,输出设定值VD8,则代码如下:
2.3、S_RTR
该指令可以进行实数与实数的量程转换,它的输入参数和输出参数都是实数;
例如: 我们在实例1中获取了一个压力值放在VD0(pressureValue),它是范围为0~10000mbar的数值,我们想把当前压力值以其量程的百分数表示出来,转换值存放在VD12(pressurePercentage)中,就可以使用如下的代码:
好了,这就是Scale指令库的指令介绍,主要用于模拟量信号的处理。