Parámetros
Ejemplo de programación
Si son erróneos los datos del ordenador, el variador de frecuencia no los acepta. Prevea por ello
en el programa de aplicación, para el caso de un error, siempre un programa para la ejecución
de reintentos de comunicación.
Toda transmisión de datos, p.ej. de las instrucciones de funcionamiento o de funciones de
supervisión, tiene lugar después de una solicitud de comunicación del ordenador. Sin una
solicitud, el variador de frecuencia no envía ningún dato. Por ello, prevea en el programa una
solicitud para el registro de los datos.
En el siguiente ejemplo se representa el cambio al funcionamiento para la comunicación serie
de datos. El ejemplo de programación ha sido preparado empleando Microsoft
(Ver. 6.0).
#include <stdio.h>
#include <windows.h>
void main(void){
HANDLE
hCom;
DCB
hDcb;
COMMTIMEOUTS
hTim;
char
szTx[0x10];
char
szRx[0x10];
char
szCommand[0x10]; //Instrucción
int
nTx,nRx;
int
nSum;
BOOL
bRet;
int
nRet;
int
i;
//**** Abre el puerto COM1****
hCom = CreateFile ("COM1", (GENERIC_READ | GENERIC_WRITE), 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hCom != NULL) {
//**** Configuración de comunicación del puerto COM1****
GetCommState(hCom,&hDcb);
hDcb.DCBlength = sizeof(DCB);
hDcb.BaudRate = 19200;
hDcb.ByteSize = 8;
hDcb.Parity = 2;
hDcb.StopBits = 2;
bRet = SetCommState(hCom,&hDcb);
if (bRet == TRUE) {
//**** Ajustes de timeout del puerto COM1****
Get CommTimeouts(hCom,&hTim);
hTim.WriteTotalTimeoutConstant = 1000;
hTim.ReadTotalTimeoutConstant = 1000;
SetCommTimeouts(hCom,&hTim);
//**** Pone la instrucción para cambiar el modo de funcionamiento del variador de la estación 1 al funcionamiento de red****
sprintf(szCommand,"01FB10000");
nTx = strlen(szCommand);
//**** Genera código de suma****
nSum = 0;
for (i = 0;i < nTx;i++) {
}
//**** Genera datos de envío****
memset(szTx,0,sizeof(szTx));
memset(szRx,0,sizeof(szRx));
sprintf(szTx,"\5%s%02X",szCommand,nSum);
nTx = 1 + nTx + 2;
nRet = WriteFile(hCom,szTx,nTx,&nTx,NULL);
//**** Proceso de envío ****
if(nRet != 0) {
nRet = ReadFile(hCom,szRx,sizeof(szRx),&nRx,NULL);
//**** Proceso de recepción ****
}
}
CloseHandle(hCom);
}
}
Fig. 6-125:Ejemplo de programación
FR-E700 EC
//Commmunication Handle
//Estructura para la configuración de la comunicación
//Estructura para los ajustes de timeout
//Búfer de envío
//Búfer de recepción
//Para los tamaños de búfer
//Para el cálculo de sumas de control
nSum += szCommand[i];
nSum &= (0xff);
if(nRet != 0) {
//**** Indica los datos recibidos ****
for(i = 0;i < nRx;i++) {
printf("%02X ",(BYTE)szRx[i]); //Salida de consola de los datos recibidos
//Representa el código ASCII en hexadeczimal. Indica 30 con "0".
}
printf("\n\r");
}
Funcionamiento en modo comunicación y ajustes
//Lee la información de comunicación actual
//Tamaño de la estructurta
//Velocidad de transferencia = 19200 bps
//Longitud de datos = 8 bits
//Paridad par
//Bit de parada = 2 bits
//Pone los datos de comunicación modificados
//Lee el valor de timeout actual
//Timeout acceso de escritura 1 s
//Timeout acceso de lectura 1 s
//Pone el ajuste de timeout modificado
//Datos de envío (escribir funcionamiento de red)
//Tamaño datos de envío
//Inicialización de la suma de control
//Calcula la suma de control
//Enmascara datos
//Inicialización del búfer de envío
//Inicialización del búfer de recepción
//ENQ Code+Datos de envío+Suma de control
//Longitud de datos de envío ENQ Code+Longitud datos de envío+Longitud suma de control
//Cerrar puerto de comunicación
®
®
Visual C++
6 - 241