Herunterladen Inhalt Inhalt Diese Seite drucken

Mitsubishi Electric FR-E700 Bedienungsanleitung Seite 391

Vorschau ausblenden Andere Handbücher für FR-E700:
Inhaltsverzeichnis

Werbung

Parameter
Programmierbeispiel
Sind die Daten vom externen Rechner fehlerhaft, akzeptiert der Frequenzumrichter diese Daten
nicht. Sehen Sie daher für den Fehlerfall im Anwendungsprogramm immer ein Programm zur Aus-
führung von Wiederholversuchen vor.
Jede Datenübertragung, z.B. der Betriebsanweisungen oder Überwachungsfunktionen, erfolgt erst
nach einer Kommunikationsanforderung des externen Rechners. Ohne eine Anforderung versendet
der Frequenzumrichter keine Daten. Sehen Sie daher im Programm eine Anforderung zum Einlesen
der Daten vor.
Im folgenden Beispiel wird das Umschalten in den Betrieb für serielle Datenkommunikation darge-
stellt. Das Programmierbeispiel ist unter Verwendung von Microsoft
worden.
#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;
//**** Öffnet COM1 Port****
hCom = CreateFile ("COM1", (GENERIC_READ | GENERIC_WRITE), 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hCom != NULL) {
//**** Kommunikationseinstellung des COM1 Ports****
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) {
//**** Timeout-Einstellung des COM1 Ports****
Get CommTimeouts(hCom,&hTim);
hTim.WriteTotalTimeoutConstant = 1000;
hTim.ReadTotalTimeoutConstant = 1000;
SetCommTimeouts(hCom,&hTim);
//**** Setzt den Befehl, um die Betriebsart des Station 1-Umrichters auf Netzwerkbetrieb zu wechseln ****
sprintf(szCommand,"01FB10000");
nTx = strlen(szCommand);
//**** Generates sum code****
nSum = 0;
for (i = 0;i < nTx;i++) {
}
//**** Generiert Sende-Daten****
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);
//**** Sendevorgang ****
if(nRet != 0) {
nRet = ReadFile(hCom,szRx,sizeof(szRx),&nRx,NULL);
//**** Empfangsvorgang ****
}
}
CloseHandle(hCom);
}
}
Abb. 6-126:
Programmierbeispiel
FR-E700SC EC
//Kommunikations-Handle
//Structure für die Kommunikationseinstellungen
//Structure für Timeout-Einstellungen
//Sende-Puffer
//Empfangs-Puffer
//Befehl
//Für die Puffergrößen
//Für die Prüfsummen-Berechnung
nSum += szCommand[i];
nSum &= (0xff );
if(nRet != 0) {
//**** Zeigt die Empfangs-Daten an ****
for(i = 0;i < nRx;i++) {
printf("%02X ",(BYTE)szRx[i]);//Konsolenausgabe der Empfangs-Daten
//Stellt den ASCII-Code in Hexadezimal dar. Zeigt 30 bei „0" an.
}
printf("\n\r");
}
Kommunikationsbetrieb und Einstellungen
//Liest aktuelle Kommunikationsinformation aus
//Größe der Structure
//Übertragungsgeschwindigkeit = 19200 bps
//Datenlänge = 8 Bit
//Gerade Parität
//Stoppbit = 2 Bit
//Setzt die geänderten Kommunikationsdaten
//Liest aktuellen Timeout-Wert aus
//Schreibzugriff-Timeout 1 s
//Lesezugriff-Timeout 1 s
//Setzt die geänderte Timeout-Einstellung
//Sende-Daten (Netzwerkbetrieb schreiben)
//Sende-Daten-Größe
//Initialisierung der Prüfsumme
//Berechnet die Prüfsumme
//Maskiert Daten
//Initialisierung des Sende-Puffers
//Initialisierung des Empfangs-Puffers
//ENQ Code+Sende-Daten+Prüfsumme
//Sende-Datenlänge ENQ Code+Länge Sende-Daten+Länge Prüfsumme
//Kommunikations-Port schließen
®
®
Visual C++
(Ver. 6.0) erstellt
6 - 247

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis