Herunterladen Inhalt Inhalt Diese Seite drucken

Mitsubishi Electric FR-E700 series Bedienungsanleitung Seite 410

Inhaltsverzeichnis

Werbung

Kommunikationsbetrieb und Einstellungen
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;
//Kommunikations-Handle
DCB
hDcb;
//Structure für die Kommunikationseinstellungen
COMMTIMEOUTS hTim;
//Structure für Timeout-Einstellungen
char
szTx[0x10];
//Sende-Puffer
char
szRx[0x10];
//Empfangs-Puffer
char
szCommand[0x10];//Befehl
int
nTx,nRx;
//Für die Puffergrößen
int
nSum;
//Für die Prüfsummen-Berechnung
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-Frequenzumrichters auf Netzwerkbetrieb zu wechseln ****
sprintf(szCommand, " 01FB10000");
nTx = strlen(szCommand);
//**** Generates sum code****
nSum = 0;
for (i = 0;i < nTx;i++) {
nSum += szCommand[i];
nSum &= (0xff );
}
//**** 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 ****
if(nRet != 0) {
//**** Zeigt die Empfangs-Daten an ****
for(i = 0;i < nRx;i++) {
}
printf("\n\r");
}
}
}
CloseHandle(hCom);
}
}
Abb. 6-129:
Programmierbeispiel
6 - 256
//Liest aktuelle Kommunikationsinformation aus
//Größe der Structure
//Übertragungsgeschwindigkeit = 19200 Bits/s
//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
printf("%02X ",(BYTE)szRx[i]);
//Konsolenausgabe der Empfangs-Daten
//Stellt den ASCII-Code in Hexadezimal dar. Zeigt 30 bei „0" an.
//Kommunikations-Port schließen
Parameter
®
®
Visual C++
(Ver. 6.0) erstellt

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis