MaximilianBurger
Level-1
- Beiträge
- 3
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
ich habe folgendes Problem:
Ich benutze eine 750-8206 PFC200-Steuerung zum Auslesen von Messgerätdaten via RS485.
Zur Kommunikation wird ein herstellereigenes Protokoll verwendet.
Benutze ich die OnBoard-Schnittstelle der Steuerung werden alle Daten richtig übertragen und die Verbindung funktioniert super.
Wechsle ich jedoch zu einer Schnittstellenkarte (750-652) (COM wechseln) klappt die Verbindung nicht mehr.
Die Indikatorleuchte "B" des Schnittstellenmoduls blinkt beim ausführen des Codes.
Bitte um hilfreiche Tipps wie ich mit dem Schnittstellenmodul ebenfalls die Daten einlesen kann
Wie gesagt ich benutze:
Controller: PFC200 750-8206
Modul: 750-652
Programmierumgebung: Codesys 2.3
Library: Serial_Interface_1-lib
Hier der Code:
ich habe folgendes Problem:
Ich benutze eine 750-8206 PFC200-Steuerung zum Auslesen von Messgerätdaten via RS485.
Zur Kommunikation wird ein herstellereigenes Protokoll verwendet.
Benutze ich die OnBoard-Schnittstelle der Steuerung werden alle Daten richtig übertragen und die Verbindung funktioniert super.
Wechsle ich jedoch zu einer Schnittstellenkarte (750-652) (COM wechseln) klappt die Verbindung nicht mehr.
Die Indikatorleuchte "B" des Schnittstellenmoduls blinkt beim ausführen des Codes.
Bitte um hilfreiche Tipps wie ich mit dem Schnittstellenmodul ebenfalls die Daten einlesen kann
Wie gesagt ich benutze:
Controller: PFC200 750-8206
Modul: 750-652
Programmierumgebung: Codesys 2.3
Library: Serial_Interface_1-lib
Hier der Code:
Code:
(*Sendedaten*)
SendBuffer[0]:=16#1A;
SendBuffer[1]:=16#01;
SendBuffer[2]:=16#00;
SendBuffer[3]:=16#30;
SendBuffer[4]:=16#31;
SendBuffer[5]:=16#01;
SendBuffer[6]:=16#30;
SendBuffer[7]:=16#36;
SendBuffer[8]:=16#10;
SendBuffer[9]:=16#30;
SendBuffer[10]:=16#32;
SendBuffer[11]:=16#01;
SendBuffer[12]:=16#30;
SendBuffer[13]:=16#34;
SendBuffer[14]:=16#01;
SendBuffer[15]:=16#30;
SendBuffer[16]:=16#36;
SendBuffer[17]:=16#01;
SendBuffer[18]:=16#30;
SendBuffer[19]:=16#32;
SendBuffer[20]:=16#10;
SendBuffer[21]:=16#30;
SendBuffer[22]:=16#34;
SendBuffer[23]:=16#10;
SendBuffer[24]:=16#B3;
SendBuffer[25]:=16#E3;
SECFL(IN:= (NOT xSendActive) , PT:= T#500ms );
HFLAG[1]:= SECFL.Q AND NOT HFLAG_M[1];
HFLAG_M[1]:=SECFL.Q;
IF HFLAG[1] THEN ReceiveBuffer.Index:=0; END_IF;
COM(
xOPEN_COM_PORT:= xOpenPort,
bCOM_PORT_NR:=2 ,(*COM0 = Controllerinterface und funktioniert*)
cbBAUDRATE:=5760 , (*57600Baud/s*)
cpPARITY:= 2, (*even = gerade*)
csSTOPBITS:=1 ,
cbsBYTESIZE:= 8,
cfFLOW_CONTROL:= 24, (* RS 485 / halfduplex / without handshake /without continous send =24*)
iBYTES_TO_SEND:=26 ,
ptSEND_BUFFER:= ADR(SendBuffer),
xSTART_SEND:=xSendActive,
utRECEIVE_BUFFER:=ReceiveBuffer,
xINIT:=xInitPort ,
bERROR=> berror,
xCOM_PORT_IS_OPEN=>comopen
);
IF ReceiveBuffer.Index = 54 THEN (*M Recieve Buffer auslesen*)
pInnentemp:=ADR(Innentemp);
pInnentemp^:= ReceiveBuffer.Data[6];
pInnentemp:=pInnenTemp+1;
pInnentemp^:= ReceiveBuffer.Data[7];
pInnentemp:=pInnenTemp+1;
pInnentemp^:= ReceiveBuffer.Data[8];
pInnentemp:=pInnenTemp+1;
pInnentemp^:= ReceiveBuffer.Data[9];
pTVal2:=ADR(TVal2);
pTVal2^:= ReceiveBuffer.Data[27];
pTVal2:=pTVal2+1;
pTVal2^:= ReceiveBuffer.Data[28];
pTVal2:=pTVal2+1;
pTval2^:= ReceiveBuffer.Data[29];
pTVal2:=pTVal2+1;
pTVal2^:= ReceiveBuffer.Data[30];
END_IF;
IF HFLAG[1] AND NOT xSendActive THEN xSendActive:=TRUE; END_IF;
(*Fehlerhandling*)
perror:=ADR(error);
perror^:= 0;
perror:=perror+1;
perror^:= berror;
IF (ReceiveBuffer.Index<>54) OR (berror <> 0) THEN xERR:=TRUE; ELSE xERR:=FALSE; END_IF; (*M RecieveBuffer größer 40 = Fault *)
VERZ_ERR (IN:= xERR , PT:= T#10s );
IF (VERZ_ERR.Q AND berror =0) THEN
%QW2010:= 16#0100;
ELSIF (VERZ_ERR.Q AND berror >0) THEN
%QW2010:= error;
ELSIF (NOT VERZ_ERR.Q AND berror =0) THEN
%QW2010:= 16#0000;
END_IF;