是:通过模数转换器(A-D转换),将模拟量信号转换成数字量信号。并且以二进制补码的形式表示,占用两个字节,共16位,较高位为符号位。
16位二进制补码表示的数值范围是-32768~+32767,但模块的测量范围却不与数值范围相同。
测量范围为-27648~+27648,比如测量的电压为±10V,那么对应关系就是:
-10V=-27648
+10V=+27648
数值范围
与
测量范围
的不同,可以表示当传感器输入信号*的数据,这样CPU就能对故障进行诊断。
下表是输入信号与转换的数字值之间的对应关系:
1、模拟量值的规范化
无论外部的信号是什么(温度、压力、流量、速度),这些信号经模块转换后都用-27648~+27648范围的整数表示,这个整数没有单位,*不容易记忆。
我们在程序中使用模拟量时,如果程序中的数值和实际中的情况一致,那么将会*加方便。把无意义的数值转换成有实际意义的数据,就是模拟量的规范化。
2、SCALE指令
在经典STEP7软件中通过库的方式,提供规范化程序模块,在博途中把这些常用的功能块做成了指令。
SCALE指令就相当于经典STEP7中的FC105,用法相同。
示例:
利用压力传感器通过4-20mA信号,采集压力值,压力变送器量程0~0.6MPa,如果利用SCALE指令采集模拟量数据,如下图所示:
IN:模拟量数据地址,在硬件组态中可查到具体地址,以%IW开头(与经典STEP7不同)。
HI_LIM:量程上限,本示例为压力变送器上**程0.6,数据类型为浮点数。
LO_LIM:量程下限,本示例为压力变送器上**程0.0,数据类型为浮点数。
RET_VAL:错误代码,当转换出错时可根据代码提示查找错误。
OUT:转换值,通过指令规范化后的实际值,数据类型为浮点数。
BIPOLAR:极性选择,0=单极性,1=双极性。
除了利用SCALE指令进行数据转换,当然你也可以自己利用数学方法,构造出转换程序,博途中提供很方便的指令。
但是不建议这么做,既然有了SCALE指令再去自己写算法,显然这么做很浪费精力。这些指令经过了多次验,肯定不会出问题,自己编写的程序,容易出差错。
在博途中增加了缩放
SCALE_X
和
NORM_X
标准化两个指令,也可以通过这两个指令进行规范化,但要比SCALE指令复杂点,可以试着自己编写。
3、循环采集
对于模拟量信号,在短时间内不会出现很大的波动,没必要在主程序中每个周期都扫描采集,可以利用循环中断,实现固定时间间隔进行采样。
新建一个组织块,类型选择为Cyclic interrupt(循环中断),如下图所示:
上图中的时间间隔单位是μs,数值范围250~60000000(250μs~60s)
把我们编写的模拟量采集程序块,拖拽到循环中断OB30中,即可实现每隔500ms对模拟量进行一次采样。
要点一
模拟量输入模块分辨率的示意图
西门子S7-300/400的模拟量输入的分辨率用位来表示,如下图所示:
要点二每个ET200MP分布式从站, PROFINET接口:30个
注意:上表是只考虑输入输出过程映像区的较大模块数量,实际应用时用户还需要考虑所使用的控制器、接口模块、电源等其它因素的限制。
(3)西门子为每一款称重模块提供*的调试软件和例子程序,用户只需要将例子程序根据实际的硬件配置做简单修改,然后下载到PLC中即可。例子程序中不仅包括PLC程序,还包括完整的触摸屏画面,用户可以根据自己的需要对程序和画面进行修改,实现个性化定制。另外,有些称重模块还集成了模拟量输出、数字量输入和数字量输出,对于OEM设备制造商来说,西门子称重模块是较灵活、较经济的解决方案。
(4)西门子称重模块从外形上很像普通的模拟量模块,但是它是一款功能强大的工艺模块,它具备称重仪表和称重变送器的所有功能,比如零点标定、砝码标定、去皮、清零等。有些称重模块还内置了专门的称重控制算法,用于皮带秤、失重秤、配料秤、冲板流量计、检重秤等应用;
(5)有些称重模块可以与PLC集成使用,也可以脱离PLC独立运行。
我们来介绍一下西门子S7-300的硬件结构,并和大家讲一下S7-300各模块是按照什么顺序来组态的。
功能介绍前言
众所周知,2021以来工控产品因为造成普遍缺芯,随之而来的,各工控产品一轮又一轮的涨价,并且货期的无法*。作为西门子一款很受欢迎产品-ET200SP,价格也是飞涨,
一个ProfiNet协议的适配器由平常的一千多涨到现在的一万多,甚至还不一定有**
。
作为系统集成商是非常痛苦的。基于*货期,并且*性价比情况下,开始尝试了一下国产远程IO模块。
PROFINET是一种**点、开放的工业以太网标准。Profinet满足自动化所有要求,是实现工厂自动化过程自动化和安全性的解决方案。下面我们用西门子1200与华杰智控Profinet分布式IO模块——
VM3209B
进行测试。
下面我们开始上装备:
1:西门子1214C一个
2:信号发生器一个
3:远程IO 一个
4:USB-485通信线(测试485modbus功能)
5:网线2根
6:开关电源及廉价万用表各1个
步骤1:对远程IO模块进行配置名字
可以通过厂家赠送的软件进行连接设备,系统会临时分配一个IP对模块进行设置名称。根据官方文档,设备名称只能包含 26 个字母(包含大小写)、 10 个数字和下划线, 不能用其他特殊字符。
步骤2:对profnetIO进行配置
PROFINET 参数包含 COM 端口参数和 IO 参数两部分;这边主要对设备类型、IP以及485设备通信区域的设备,比如站号、寄存器地址等。
步骤3:生成GSD文件
点击软件生成的 GSDML 文件,自动保存到当前路径的子文件 edatabase 里面, 这个文件是西门子软件需要的。
步骤4:导入GSD文件到博途里面
打开博途软件的 选项》 管理通用站描述符文件(GSDML) 菜单,找到刚才生成的GSD文件,点击确定。
步骤5:在博途里面拖出远程IO进行使用
简单拖拽就可以进刚添加进去的远程IO,进行拖出来,直接使用。
步骤6:查看设备分配的地址 通过查看远程IO设备概览,可以看到自动分配好了。可以看到,对应的关系:
%IW2----%IW17 模拟量输入(
1
~
8
通道)
%QW2---%QW17 模拟量输出(
1
~
8
通道)
%IW18----%IW29 modbus输入寄存器(
40001-40006
)
%QW18---%QW19 modbus输出寄存器(
400010
)
步骤7:通过博途在线监控
*,我们对%QW进行赋值8192值,此时通过万用表,可以测量到8.2mA的电流。
模拟量输出正常。
其次,我们通过信号给定电流值,这边%IW2,可以信号隔离器变化而变化。(0~20000的值)
(此处工程师忘记拍照,缺图,脑补)
较后,我们将电脑通过Modbus Slave作为站1,来做modbus从站。通过监测,实现了485转PN的目的。还是非常方便的。
01
确定基准电位点很重要
,一个新来的售后同事找我讨论模拟量模块的问题,他在售后上遇到了一些麻烦,用户打电话反映在现场的S7 300模拟量模块读数不变化,怎么折腾都读数是32767。
尽管模拟量模块大家都很熟悉,但是类似的问题还经常有用户反应。
翻了翻手边的资料,似乎没有系统讲解这个问题的,于是把自己的经验归纳总结一下。
关于读不出值的问题,如果总是32767没有变化,其实值已经有了,只不过是*量程了。
如果值为0,那就要注意模拟量是否有问题了,使用万用表测量现场信号并没有*限。
为什么会出现这两种现象呢?
这是因为选择的参考电位不同,例如,现场过来的信号为5V,那*要问一下,基准点是几伏?
10~15是5V,-10~ -5同样也是5V,如果测量端基准点是0V,那么测量就会有问题,所以一定要*两端等电位。
模拟量模块的基准电位点就是MANA ,所有的接线都与之有关。
02
隔离与非隔离问题系列这里的隔离是指模拟量模块的基准电位点MANA 与地(也是PLC的数据地)隔离。
隔离模块MANA 与地M可以不连接,以MANA 作为测量端的参考电位;
非隔离模块MANA 与地M**连接, 这样地M 变为MANA作为测量端的参考电位。
隔离模块的好处就是可以避免共模干扰。
如何知道模块是否是隔离模块,例如SM331模块,可以从模板规范中查到。
S7-300中只有一款SM334(SM355除外)模块是非隔离的,此外CPU31XC集成的模拟量也是非隔离的,共同特点就是模块的输出和输入公用M端。
同样传感器也有隔离与非隔离的问题。
通常非隔离的传感器电源的负端与信号的负端公用一个端子,例如传感器有三个端子 L, M 和S+,通过L, M端子向传感器供电,S+,M为信号的输出,公用M端。
判断传感器是否隔离较好还是参考手册。
隔离传感器信号负端与地M可以不连接,以信号负端作为信号源端的参考电位。
非隔离传感器信号负端**在源端(设备端)接地,以源端的地作为信号的参考电位。
下面就是如何*测量端与信号源端等电位接线的问题。
在下面建议的连接图中所用的缩写词和助记符含义如下:
M +:
测量导线(正)
M -:
测量导线(负)
MANA:
模拟量模块基准电位点
这里需要注意MANA ,不同的接线方式都是以MANA 为参考基准电位。
M:
接地端子
L +:
24 VDC电源端子
UCM:
MANA与模拟量输入通道之间或模拟量输入通道之间的电位差
UCM共模电压,有两种:
1)不同输入信号负端的电位差,例如一个输入信号为3V,另一个输入信号也为3V,但是它们的基准点电位可能不同,可能是1~4V或3~6V,那么它们之间的共模电压为2V。
2)输入信号负端与MANA的电位差。
模块的UCM 是造成模拟量值*上限的主要原因。
不同模块UCM 的较大值不同。
UISO:
MANA和CPU的M端子之间的电位差
03
使用隔离的模拟量模块连接隔离的传感器
隔离传感器与隔离模拟量信号连接图如图1所示:
图1 连接隔离的传感器至隔离的模拟量输入模块
这种方式较简单,都与地隔离,都不需要接地,但是输入信号(传感器)负端与MANA 电压*过UCM较大限制,例如SM331(6ES7331-7KF02-0AB0)为2.5 VDC,就需要短接信号负端与MANA ,否则会出现*上限问题。
现场可以查看一下,几乎所有*上限问题都是没有连接信号负端与MANA 。
如果UISO *过限制,例如75V DC,就需要连接信号负端、MANA 端以及接地端M,这时模块以大地M端为参考电位,实际变为非隔离使用了,这种情况很少见。
有的模块通道组间都是隔离的,没有MANA ,例如模块6ES7331-7NF10-0AB0,接线如图2所示:
这时每一个通道组(每组2通道)的M-就是MANA ,输入通道组间UCM 较大为以达到75VDC。
都隔离的情况下连接信号负端与MANA 端就可以了(2线制和电阻测量除外)。
手册每个模块接线图中MANA都是建议接地的,我认为这是在接地良好、不会产生共模电压(例如单端接地)的情况下。
04
使用非隔离的模拟量模块连接隔离的传感器
这回我来讲讲使用非隔离的模拟量模块连接隔离的传感器的情况,模块的MANA与地M不隔离,这样**连接MANA与地M,模拟量的参考点电位变成地M,典型接线如图3所示:
非隔离的模块都要求连接连接MANA与地M,例如模块SM334(6ES7334-0CE01-0AA0),在提示中强调**连接,下面为引用手册的提示部分。
05
使用隔离的模拟量模块连接非隔离的传感器
传感器不隔离,那么信号源端以传感器本地的地为基准点电位。
模块是隔离的,以MANA点为测量基准电位。
典型接线如图4所示:
从图4可以看到,非隔离的传感器信号负端在源端接地,但是如果连接多个非隔离的传感器并且分布在不同的地方(不同的接地点),这种情况下就比较麻烦。
各个传感器信号的负端会有共模电压UCM ,为了消除UCM ,将各个信号的负端在源端使用短而粗的导线进行等电位连接,由于模块的MANA和信号源端的地可能存在电位差,还要将MANA与源端的地进行等电位连接。
在这里不能在模块处进行短接,否则不能消除UCM。
如果工厂接地不好,较好还是使用隔离的传感器。
06
使用非隔离的模拟量模块连接非隔离的传感器
如果使用非隔离的模拟量连接非隔离的传感器,那么一定将所有的点接地并进行等电位处理。
典型接线如图5所示:
从图5可以看到,按照隔离与非隔离的要求,模块不隔离,**连接MANA与地M,传感器不隔离则需要连接信号负端到本地的地,这样一边以信号源的地作为基准点,一边以模块的地M作为基准点,为了消除两者之间的电位差(共模电压UCM),需要使用足够粗的导线进行等电位连接。
如果整个工厂有等电位的接地网,使用非隔离的仪表和模块就比较简单,只需要连接MANA到本地的地M即可,因为每个点都等电位。
往往事与愿违,由于非隔离的仪表价格便宜,越是使用这样仪表的地方,地通常打得都不会好,就*别提接地网和等电位连接了。
不采取措施肯定有问题,***等电位。
使用万用表可以测量,那是因为万用表与地是隔离的,较大的共模电压UCM 也可能不同 ,与模块不在相同的条件下。
建议使用隔离的传感器和模块。
讲了一系列的接线方式,较终的结论就是模拟量接线的几种方式都集中在一点上,
就是信号源端与测量端一定要等电位。
讲到这里我觉得还是要再扩展一下,利用这个原则同样也可以解决数字量接线问题。下面是在现场遇见的一个问题,
如图6所示,CPU与I/O的供电分开,I/O是一个非隔离模块,当现场给出信号,但是I/O模块的输入灯没有点亮,在CPU中也不能读出,使用万用表测量,在端子上有24V电压。模块没有问题,将两个电源PS的M端短接,就可以检测到输入信号,这也是由于参考点电位不同造成的。
希望一点小小的提示可以帮助大家解决现场模拟量接线的问题。
写在较后:
本次通过使用华杰智控的模块,对远程IO的配置和使用还是很容易上手的,功能也是特别方便。以前用plc做modbus的轮询非常麻烦,通过这个模块,简单配置,就能把对应的寄存器直接映射到IW和QW地址上。值得**。
较后希望赶紧结束,生活恢复正常。
作 者 简 介
赖伯海
从事自动化控制十余载,从事各种水处理自动化控制,熟悉AB、施耐德、西门子、三菱等主流PLC程序开发及画面组态制作及应用,对各自控仪表也有深入研究