PLC采集脉冲水电表数据

    系统采用三菱FX2N-64MT微型可编程控制器作为基本模块,输入输出各32点,共64点。FX2N系列PLC具有极高的扫描速度(0.08μS/基本指令),内附大容量存储器,是一款高性能的小型可编程控制器。PLC与脉冲电度表连接见图1,脉冲电度表无源光耦输出直接接入PLC输入点,一个光耦接一个输入点,由PLC扫描实现脉冲累加。  

 一、系统框图及硬件配置     

为了实现串行通讯,采用了一个FX2N-232-BDRS232通讯模块,因本装置中RS232只用3根线RD、SD、SG(地),对于9针RS232口定义为:RD(3脚)、SG(5脚)、对于25针RS232口定义为:RD(2脚)、SD(3脚)、SG(7脚)。

装置还采用一个数据存取单元FX-10DU,可读、写PLC中所有数据,从而很方便地修改数据。

  系统框图如下图1:


二、软件设计

1、数据存放位置

FX2NPLC中数据寄存器均为16 bit二进制数,用D表示,一个D表示数值为-32 768~+32 767,可用相邻两个D表示32 bit二进制数,表示范围:-2.147×109~2.147×109,足够表示电度表读数。采用D200-D511停电保持用寄存器,电度表读数按以下存放。

(D203,D202)——第1个电度表的读数

(D205,D204)——第2个电度表的读数

依此类推,第30个电度表的读数存放在(D261,D260)。

2、程序指令基本说明

PLC指令功能强大,使用方便,如16位指令:ADD D50 D60 D100表示D50+D60→(D101,D100);当指令前加个D时为32位指令,如DADDD5 D10 D100表示(D6,D5)+(D11,D10)→(D101,D100);当指令后加P时为脉冲执行型。

3、脉冲采集程序

脉冲采集程序见图2。当X0闭合上升沿时,计数器C101(增计数器)加1,计数器的预置值为18,当C101=18时其触点闭合,上升沿时(D203,D202)数值加1;当(D203,D202)>9 999 999时,电度表读数为0,(D203,D202)清零,C101清零,预置数18不变,C101又从零开始累计。

程序中常数K值取决于使用电度表情况,如本厂电度表计数有5位整数,一位小数,再一位小格,即ABCDE.FG。但在PLC中只用整数表示,即ABCDEFG,比实际值放大100倍。如1 800个脉冲为1 kW·h(可从电度表参数得到),则18个脉冲时应在G位加1,所以常数K值应为18。各电度表就按这种方法设置参数,从而保证程序计数精度。其它电度表持续与此相似,只要设相应的常数K,至于电度表个数按实际情况增删程序即可。

实际运用中可能还会遇到K为小数的情况,如1650个脉冲为1度,则变为计数器C101应取K16.5,但在PLC中K只能是整数。考虑到1 650×2=3 300,即33个脉冲加0.02度,程序可作如下处理:(C101 K18)改为(C101 K33),〔DINCPD202〕改为〔DADDPD202 K2 D202〕,即当计数器C101=33时,(D203,D202)数值加2,结果存(D203,D202)。

4、RS232通讯程序

(1)参数初始化

采用标准RS232通讯,在FX系列的RS指令中,具体参数由设置D8 120的值确定,D8 120存放通讯的参数,设定(D8 120)=H0 361,表示波特率为2 400 bps,无奇偶效验,8位数据位,1位起始位,1位停止位,无握手信号。

(2)数据格式

数据格式依次为:起始字符(D199),数据头,第1块电表读数,第2块电表读数,……,第30块电表读数,效验和,结束字符(D264)。数据头“FF00FF00”存入(D201,D200),数据头取值可从RS指令说明得到;每个电度表值为32 bit二进制数,分4个字节上传,接收方将这4字节拼成一个32 bit二进制数即可。一次共传送5+4N+3=4N+8字节(N为电度表个数),因RS指令中传送字节数不计起始、结束字符,所以一次传送字节数为4N+6。该电站有30块表,则一次传送字节数为126;效验和占两个字节,值为n块电度表读数各字节值的和,存入一个未占用寄存器D中即可,用一个D存效验和可用于多于40块表的情况,效验和计算由程序中CCD指令实现。

(3)程序设计

①初始化程序:

下面程序(见图3)完成初始化工作:M8002在第一个扫描周期时闭合,闭合后将数据头“FF00FF00”存入(D201,D200),并设定D8120的值,即设定通讯参数,同时将M8161复位,M8161决定8 bit还是16 bit操作模式,M8 164=0表示16bit操作模式,即一个D存放2个字符。

②数据校验及传送程序

程序完成数据效验和数据传送见图4。

M8000在PLC运行时一直闭合,闭合后把从D202-D261的120个字节(30×4)的效验和存入(D263,D262);RS指令表示传送的首地址为D200,K26表示一次传送的数据总字节数为126,D360表示接收数据首地址,K0表示接收字节数为0,即不接收数据(本程序中不需要接收数据);采用定时上传一次的办法,每次按上述数据格式传送一次,程序中1 min上传一次,T0为0.1 min定时器,可改K值改变传送数据间隔;每隔1 s触发一次M8122,送出一次数据,M8122为数据传送标识,M8122=1则开始发送数据,一旦发送完毕将自动复位,等待下一次触发。

三、结束语

在现场投入运行时,上位机(PC)用VC++编制了一个数据接收通讯程序,完成数据的接收和处理工作,从而实现了电度表数据采集的自动化。测量结果证明,本装置具有很好的采集精度,且运行稳定,是行之有效的电表数据采集系统。