目录
模拟量控制简介
技术指标&输入特性
接线方式
通用程序
From/To指令
缓冲存储器分配
程序设计
结果折算
参考:
《三菱FX系列PLC编程速成全图解》 韩相争 化学工业出版社
FX2N-2AD中文手册说明书
三菱FROM、TO指令解释
模拟量控制简介
模拟量处理过程如图7-1所示。
——
模拟量I/O模块包括模拟量输入模块、模拟量输出模块和模拟量输入输出模块。
FX2N-2AD型模拟输入模块用于将2点模拟输入(电压输入或电流输入)转换成12位的数字值,并将该值输入到PLC的BFM中。该模块无需外部电源,其电源由基本单元提供,通过专用的扁平电缆与CPU通信。
两个频道的模拟输入值可以接受0-10V DC(点),0-5V DC,或者4-20mA之间。
技术指标&输入特性
模拟量转换的精度除了取决与A/D转换的分辨率,还受到转换芯片的外围电路的影响。在实际应用中,输入的模拟量信号会有波动、噪声和干扰,内部模拟电路也会产生噪声、漂移,这些都会对转换的最后精度造成影响。这些因素造成的误差要大于A/D芯片的转换误差。
接线方式
注意电压输入和电流输入接线方式不同:电流输入时,VIN与IIN需要短接再接入;电压输入时,可直接接入VIN。
信号输入设备与模块之间最好用屏蔽双绞线连接,为了减少外界干扰可在VIN与COM端间并联1个0.1~0.47uf的电容。
一般电压信号比电流信号容易受干扰,应优先选用电流信号。
电流输入通道对地有一250欧姆电阻,当电流输入时,通过电阻转换为电压,接入电压输入通道,因此模块的输入端实际上就是电压输入。模块的输入放大器的增益时可调的,因此量程是可调的,量程在5-10V间可调,出场时量程为10V,如果被测信号的最大值小于10V,可通过调节增益电位器来调节量程。
例:如果被测信号为0-5V,将模块输入端接入5V直流电压,调节增益调节电位器,同时读取AD转换值,当读取转换值为4000时即可。
注意
- 由于所有通道都采用同样的偏移值和增益值,因此两个通道的模拟输入必须统一(即输入相同类型的信号),不能一个作为模拟电压的输入,一个作为电流的输入;
- 输入信号只能是单极性的;
- 模块转换数字量对应2^12-1=4095,实际应用中简化为4000;
通用程序
From/To指令除了硬件连接,还需要编写相关程序用于设置模块的工作参数和读取转换得到的数字量以及模块的操作状态。
FX2N-2AD模块的使用不是很方便,要使用FROM/TO指令。
FROM指令
用FROM指令读取特殊功能模块的BFM中的数据,将A/D转换结果读入PLC,指令格式如下:
符号 | 含义 |
---|---|
Cc | 指令执行的启动条件 |
FROM | 助记符 |
—>功能号 | FNC78 |
Kn1 | 扩展模块编号,常用K表示 |
Kn2 | 缓冲存储器BFM的地址;此地址只和模块本身有关,和模块编号无关,常用K表示 |
Kn3Mn4 | 读取的数据在PLC CPU中的存储地址,具体含义见下 |
—>Kn3 | 从BFM读取的二进制的位数,常用K表示,以4bit为单位,n3允许值为1~8,例:K4代表16位 |
—>Mn4 | 数据在PLC储存区域的首地址,M表示读取的数据储存于中间继电器。注意:储存位置可以是数据继电器,此时无需前缀Kn3 |
Kn5 | 需要传送的点数,常用K表示。FROM、FROMP格式时,以16位二进制为单位,例:K1代表16位;采用DFROM、DFROMP格式时,以32位二进制为单位,例:K1代表32位 |
—>表示该行从属于上方最近一行没有—>的行。
TO指令
使用TO指令用于PLC基本单元将数据写入特殊功能模块的BFM中,启动A/D转换;
符号 | 含义 |
---|---|
Cc | 指令执行的启动条件 |
TO | 助记符 |
—>功能号 | FNC79 |
Kn1 | 扩展模块编号,常用K表示 |
Kn2 | 缓冲存储器BFM的地址;此地址只和模块本身有关,和模块编号无关,常用K表示 |
Kn3Mn4 | 写入的数据在PLC CPU中的存储地址,具体含义见下 |
—>Kn3 | 写入BFM的二进制的位数,常用K表示,以4bit为单位,n3允许值为1~8,例:K4代表16位 |
—>Mn4 | 数据在PLC储存区域的首地址,M表示写入的数据储存于中间继电器。注意:储存位置可以是数据继电器,此时无需前缀Kn3 |
Kn5 | 需要传送的点数,常用K表示。FROM、FROMP格式时,以16位二进制为单位,例:K1代表16位;采用DFROM、DFROMP格式时,以32位二进制为单位,例:K1代表32位 |
转换结果数据在模块缓冲存储器(BFM)中的存储地址如下,BFM是16位的:
程序设计表中:
A/D通道选择:b0=0,选择CH1通道;b0=1,选择CH2通道
A/D转换启动:b1由0变1时,转换开始
使用前还需确定模块的编号,FX系列可以连接多达8个特殊功能模块,其编号从最靠近基本单元的那一个开始顺次编为0-7号,注意数字量I/0扩展模块不占编号。
单通道
下面展示一段非常经典的AD模块程序,采用了通道1进行转换,几乎在每本教材中都会出现:
下面对该梯形图程序进行逐行解释:
- CPU在第一个特殊模块(K0)的BFM17(K17)中,向bit0(H0=0B)写入0,意思是选择模块的CH1通道;
- CPU在第一个特殊模块(K0)的BFM17(K17)中,向bit1(H2=10B)写入1,即启动CH1通道 的AD转换功能;
两行代码没法合成一行。
- K2M100,该操作将第一个模块的BFM#0 的低八位(b0-b7)读到CPU的M100-M107,BFM#1的低八位(包含有效数据b0-b3)读到CPU的M108-M115,即读取CH1通道的12位数字值;
这个问题我想了有一段时间了,BFM#0和BFM#1中共有16+16位数据(包括保留位),所以转移的点数位K2(K1代表16位,因此K2代表32位),然而储存,目的地址为K2M100(K2代表8位)而非K4M100(K4代表16位)。之所以采用K2M100而非K4M100,可能是因为后者会使12位数字值不连续,高位和低位数据分散需要额外编写传送指令;前者刚好使低八位和高四位连续。
- K4M100,该操作将M100-M115的数据内容转移到数据储存器D0中(通道1的高端4位移动到下面的8位位置上,并存储到D0);
双通道
如果要同时使用两个通道,可采用如下程序:
实际上在BFM#17中同一时间只能设置1个通道工作,因此图中X0和X1在同一时间只能有一个置位,这也是为什么两个通道都将临时数据存储到K2M100却不会造成数据冲突;若二者同时置位,会导致程序不能正常运行。
注意
从X0/X1打开至模拟到数字转换值存储到主单元的数据寄存器之间的时间为2.5ms,因此两通道的切换时间不得小于该处理时间。
为了将模拟量模块内部数字量与实际物理量对应,需要找出二者的数据比例关系。
设X为数字量(0-10V),M为模拟量(0-4000),可得:
M=X/400
如果直接写入DIV D0 K400 D2,由于除法指令无法除小数的特性,其结果总是为整数,小数会被省略,因而数据精度遭到折损。
可以将X从0-10V的范围转换到0-10000mV,这样算式为:
M=1000X/400
=10X/4
即将小数扩大为整数来保留值。
修改后的程序为:
用了两个指令,先乘后除。
乘法MUL指令和除法DIV指令占取两个寄存器,如果只保留一个会造成数据错误。
平均值滤波
(摘自FX3U手册,不清楚FX2N有没有这个功能)模拟量输入模块可能采集到缓慢变化的模拟量信号中的干扰噪声,这些噪声通常以窄脉冲的方式出现,为了减轻噪声信号的影响,模块提供连续若干次采样值的平均值,可以设置求平均值的采样周期数。但是,取平均值会降低PLC对外部输入信号的响应速度。
