5.1. S7-200模拟量数据格式与寻址
模拟量输入/输出数据是有符号整数,占用一个字长(两个字节),地址必须从偶数字节开始。模拟量的转换精度为12位,但在PLC中表示为-32000-+32000之间的整数值(实际上数值可以是整个16位有符号整数的范围,但标准输入信号如10V/20mA被标定为对应32000,模拟量超过标准值一点也可以表示)。
在S7-200中,单极性模拟量输入/输出信号的数值范围是 0 - 32000;双极性模拟量信号的数值范围是-32000-+32000。
格式:
• 输入:AIW[起始字节地址]——如AIW6
• 输出:AQW[起始字节地址]——如AQW0
每个模拟量输入模块,按模块的先后顺序和输入通道数目,以固定的递增顺序向后排地址。例如:AIW0、AIW2、AIW4、AIW6、AIW8等。
对于EM231 RTD(热电阻)两通道输入模块,不再占用空的通道,后面的模拟量输入点是紧接着排地址的。
每个有模拟量输出的模块占两个输出通道。第一个模块只有一个输出AQW0,第二个模块的输出地址也应从AQW4开始寻址(AQW2被第一个模块占用),依此类推。
温度模拟量输入模块(EM231 TC、EM231RTD)也按照上述规律寻址,所读取的数据是温度测量值的10倍(摄氏或华氏温度)。如520相当于52.0度。
注意:每一模块的起始地址都可在STEP 7-Micro/WIN中的菜单“PLC > Information”里在线读到。
5.2. 模拟量滤波器
S7-200允许你为每一路模拟量输入选择软件滤波器。一般情况下选用S7-200的模拟量滤波功能就不必再另行编制用户的滤波程序。
如果对某个通道选用了模拟量滤波,CPU将在每一程序扫描周期前自动读取模拟量输入值,这个值就是滤波后的值,是所设置的采样数的平均值。模拟量的参数设置(采样数及死区值)对所有模拟量信号输入通道有效。
如果对某个通道不滤波,则CPU不会在程序扫描周期开始时读取平均滤波值,而只在用户程序访问此模拟量通道时,直接读取当时实际值。
模拟量滤波器使用步骤如下:
1. 在Micro/Win 中进入View>Component>System Block,并选择Analog InputFilters选项,进入模拟量滤波器。
2. 设置模拟量滤波器:
图1. 模拟量通道滤波设置
a.设置模拟量采样数,例:此处设置的64表示模拟量滤波后的值为包括当前采样的前64个采样值的平均值。
b.死区值,定义了计算模拟量平均值的取值范围
◾如果采样值都在这个范围内,就计算采样数所设定的平均值;如果当前Zui新采样的值超过了死区的上限或下限,则该值立刻被采用为当前的新值,并作为以后平均值计算的起始值(如图2所示)
◾这就允许滤波器对模拟量值的大的变化有一个快速响应
◾死区值设为0,表示禁止死区功能,即所有的值都进行平均值计算,不管该值有多大的变化
◾对于快速响应要求,不要把死区值设为0,而把它设为可预期的Zui大的扰动值(320为满量程32000的1%)
c.选择需要滤波的模拟量通道,打钩的为使能的模拟量输入,缺省设置是为所有的模拟量输入使用滤波器
d.CPU224XP上的AIW0、AIW2(CPU本体上的模拟量输入通道)不必滤波
图2. 死区示意图
3. 点击OK并下载修改后的系统块到S7-200中。
注意:
•为变化比较缓慢的模拟量输入选用滤波器可以抑制波动
•为变化较快的模拟量输入选用较小的采样数和死区值会加快响应速度
•对高速变化的模拟量值不要使用滤波器
•如果用模拟量传递数字量信号,或者使用热电阻(EM231 RTD)、热电偶(EM231TC)、AS-Interface(CP243-2)模块时,不能使用滤波器
5.3. 模拟量比例换算
因为A/D(模/数)、D/A(数/模)转换之间的对应关系,S7-200CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。这个关系就是模拟量/数值量的换算关系。
例如,使用一个0 - 20mA的模拟量信号输入,在S7-200 CPU内部,0 - 20mA对应于数值范围0 - 32000;对于4- 20mA的信号,对应的内部数值为6400 - 32000。
如果有两个传感器,量程都是0 - 16MPa,一个是0 - 20mA输出,另一个是4 -20mA输出。它们在相同的压力下,变送的模拟量电流大小不同,在S7-200内部的数值表示也不同。显然两者之间存在比例换算关系。模拟量输出的情况也大致相同。
上面谈到的是0 - 20mA与4 - 20mA之间换算关系,但模拟量转换的目的显然不是在S7-200 CPU中得到一个0 -32000之类的数值;对于编程和操作人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的Zui终目标。
如果使用编程软件Micro/WIN32中的PID Wizard(向导)生成PID功能子程序,就不必进行0 - 20mA与4 -20mA信号之间的换算,只需进行简单的设置。
通用比例换算公式
模拟量的输入/输出都可以用下列的通用换算公式换算:
Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl
其中:
Ov: | 换算结果 |
Iv: | 换算对象 |
Osh: | 换算结果的高限 |
Osl: | 换算结果的低限 |
Ish: | 换算对象的高限 |
Ish: | 换算对象的低限 |
它们之间的关系可以图示如下:
图1. 模拟量比例换算关系
实用指令库
在STEP 7-Micro/WIN ProgrammingTips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程。
为便于用户使用,现已将其导出成为“自定义指令库”,用户可以添加到自己的Micro/WIN编程软件中应用。
模拟量比例换算指令库和例子
注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
在这个指令库中,子程序Scale_I_to_R可用来进行模拟量输入到S7-200内部数据的转换;子程序Scale_R_I可用于内部数据到模拟量输出的转换。
编程举例