El componente desarrollado permite el desarrollo
de aplicaciones de adquisición de datos y supervisión
para los analizadores de redes antes mencionados que no son más
que equipos que miden y trasmiten de forma serie los parámetros
de las redes de trasmisión eléctrica.
Para el funcionamiento el componente requiere de otro componente
desarrollado que implementa el protocolo
Modbus. Los equipos para
los cuales fue desarrollado el componente se comunican empleando
el mismo protocolo.

A continuación se describen las Propiedades, Métodos
y Eventos que se incorporan al componente:
PROPIEDADES:
TipoPWM
Esta propiedad va a indicar el tipo de equipo del que se va a
leer. Este puede ser un analizador PM 170E de la firma Satec o
un analizador CVM-K de la firma Circutor. Se hace referencia empleando
un tipo enumerado definido en el mismo fichero de cabecera de
la unit del componente.
( enum TEquipo {SatecPM170E, CircutorCVMK} )
ModBus
Es un puntero al componente Modbus con el que se va a comunicar
para realizar la lectura de los parámetros de analizador
de red.
NoEquipo
Indica el número de equipo esclavo del que se van a leer
los datos dentro de la red.
FechaHora
Cadena que contiene la fecha y la hora del equipo o analizador
que estamos leyendo los datos
EVENTOS:
OnReadData
Es un evento de notificación que se genera inmediatamente
después que son leídos los datos.
MÉTODOS:
TPWM(TComponent* Owner)
Constructor del componente.
~TPWM()
Destructor del componente
RefrescarDato(void)
Método que se invoca para realizar la lectura de los parámetros
del analizador de red cuyo identificador o número de equipo
en la red es el indicado en la propiedad NoEquipo. La lectura
de todos los parámetros se almacena en un arreglo de datos
interno para el trabajo del componente.
ReadData(unsigned short value);
Función que devuelve un tipo flotante que será el
valor del parámetro que se quiere leer. Esta función
no realiza la lectura directa del equipo sino que se refiere al
arreglo interno de datos que tiene el componente. Para refrescar
los datos de este arreglo interno se invoca la función
RefrescarDato.
El parámetro value indica el índice del arreglo
de datos interno del componente. Para el caso de un analizador
PM 170E se puede hacer referencia a cada uno de los parámetros
empleando el siguiente tipo de dato enumerado.
enum TSatecParametro {Voltage_L1, Voltage_L2, Voltage_L3,
Current_L1, Current_L2, Current_L3,
Power_L1, Power_L2, Power_L3,
Reactive_Power_L1, Reactive_Power_L2, Reactive_Power_L3,
Aparent_Power_L1, Aparent_Power_L2, Aparent_Power_L3,
Power_Factor_L1, Power_Factor_L2, Power_Factor_L3,
Average_Power_Factor, Total_Active_Power, Total_Reactive_Power,
Total_Aparent_Power, Unbalanced_Current, Frecuency,
Maximum_Demand, Acumulated_Maximum_Demand,
Maximum_Aparent_Demand, Acumulated_Aparent_Demand,
Aparent_Maximum_Demand_L1, Aparent_Maximum_Demand_L2,
Aparent_Maximum_Demand_L3, Consumption_kWH, Consumption_MWH,
Returned_Energy_kWH, Returned_Energy_MWH,
Reactive_Energy_Positive_kVARH, Reactive_Positive_Energy_MVARH,
Reactive_Energy_Negative_kVARH, Reactive_Negative_Energy_MVARH,
THD_Voltage_Phase_L1, THD_Voltage_Phase_L2, THD_Voltage_Phase_L3,
THD_Current_Phase_L1, THD_Current_Phase_L2, THD_Current_Phase_L3};
y para el caso de un analizador CVM-K se empleará el siguiente
tipo enumerado definidos ambos en el fichero .h de la unit del
componente:
enum TCircutorParametro {Fecha_Hora, V1, mA1, W1, varL1, varC1,
PF1,
V2, mA2, W2, varL2, varC2, PF2,
V3, mA3, W3, varL3, varC3, PF3,
VavIIIN, mAavIII, WIII, VarLIII, varCIII, PFIII, Hz,
VAIII, V12, V23, V31, VavIII,
Wh_T1, varhL_T1, varhC_T1, Pd, _wh_T1, _varhL_T1, _varC_T1};
Ejemplo de Uso del Componente
En el siguiente ejemplo se emplea un componente para implementar
el protocolo Modbus (MB1) y un componente PWM (PWM1) para leer
los parámetros de un analizador de red Circutor CVM-K.
El componente PWM se crea dinámicamente.
Evento OnCreate de la forma principal de la aplicación:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
MB1->Connect(); //Se conecta el componente Modbus al puerto
serie.
PWM1 = new TPWM (Form1); //Se crea el componente PWM;
PWM1->ModBus=MB1; //Se le conecta el PWM con el MB1;
PWM1->NoEquipo=1; //Se indica el número de equipo esclavo
dentro de la red.
PWM1->TipoPWM= CircutorCVMK; //Se trabaja con un Circutor
CVMK
PWM1->OnReadData = Button3Click; Se le asigna el evento OnReadData
al componente PWM
}
//Evento OnTimer del timer Timer1. Se leen los parámetros
y se muestran en Labels.
void __fastcall TForm1::Timer1OnTimer(TObject *Sender)
{
TCircutorParametro P;
PWM1->RefrescarDato(); //Se realiza la lectura de los parámetros
del analizador de red
Caption=""; //Para mostrar el error en el caption de
la ventana.
//Se asigna a P el nombre del parámetro a leer y se invoca
el método ReadData para leer el
//parámetro del arreglo de datos interno del PWM
P=V1; Label1->Caption= PWM1->ReadData(P);
P=V2; Label2->Caption= PWM1->ReadData(P);
P=V3; Label3->Caption= PWM1->ReadData(P);
P=Hz; Label7->Caption= PWM1->ReadData(P);
P=PFIII; Label8->Caption= PWM1->ReadData(P);
}
//Muestra en el caption de la ventana el mensaje
//de error generado por el componente Modbus en caso de que exista
void __fastcall TForm1::MB1Error(TObject *Sender)
{
Caption=IntToStr(MB1->Error);
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction
&Action)
{
MB1->Disconnect();
delete PWM1;
}
Si desea descargar el componente desarrollado de clic aquí:
Si desea más información sobre los
analizadores de redes para los cuales se desarrolló esta
primera versión y otros contacte conmigo.
Ir al Inicio