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 supervi-
sión, tiene lugar después de una solicitud de comunicación del ordenador. Sin una solicitud, el varia-
dor 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 da-
tos. El ejemplo de programación ha sido preparado empleando Microsoft
#include <stdio.h>
#include <windows.h>
void main(void){
HANDLE
hCom;
DCB
hDcb;
COMMTIMEOUTS
hTim;
char
szTx[0x10];
char
szRx[0x10];
char
szCommand[0x10];
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++) {
nSum += szCommand[i];
nSum &= (0xff );
}
//**** 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 ****
if(nRet != 0) {
//**** Indica los datos recibidos ****
for(i = 0;i < nRx;i++) {
}
printf("\n\r");
}
}
}
CloseHandle(hCom);
}
}
Fig. 6-126:
Ejemplo de programación
FR-E700SC 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
//Instrucción
//Para los tamaños de búfer
//Para el cálculo de sumas de control
//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
printf("%02X ",(BYTE)szRx[i]);
//Salida de consola de los datos recibidos
//Representa el código ASCII en hexadeczimal. Indica 30 con "0".
//Cerrar puerto de comunicación
Funcionamiento en modo comunicación y ajustes
®
®
Visual C++
(Ver. 6.0).
6 - 247