Page 1 of 1

Profibus RevPi Gate PROFIBUS Slave mit Codesys Runtime

Posted: 03 May 2019, 09:14
by BadTaste
Hallo liebes Forum,
ich möchte gerne den RevPi mit einer Codesys Runtime und einem Profibus Slave betreiben, ist das so möglich?
Wenn ja wie komme ich an die Daten des Moduls?
schöne Grüße
Michael

Re: Profibus RevPi Gate PROFIBUS Slave mit Codesys Runtime

Posted: 08 May 2019, 16:15
by dirk
Hi Michael,
momentan gibt es eine experiementelle, nicht supportete Bibliothek hierfür, die RevPiLib. Hier ist ein Tutorial https://revolution.kunbus.de/tutorials/ ... einbinden/
Wie du generell die Codesys Runtime auf Dein RevPi bringst und eine Lizenz aufspielst, unterscheidet sich nicht von der Vorgehensweise für das RaspberryPi CM3. Also schau mal bei Codesys vorbei für Infos hierzu.

Re: Profibus RevPi Gate PROFIBUS Slave mit Codesys Runtime

Posted: 14 May 2019, 08:19
by BadTaste
Hallo,
danke für den Link. Ich habe aber leider Probleme auf den Offstet zu schreiben. Beim lesen habe ich kein Problem und auch mit piTest kann ich auf das Abbild schreiben
hat jemand einen Tip was ich hier falsch mache?

Code: Select all

pi@RevPi13263:~ $ piTest -d
Found 2 devices:

Address: 0 module type: 105 (0x69) RevPi Connect V1.0
Module is present
     input offset: 1024 length: 6
    output offset: 1030 length: 5

Address: 31 module type: 77 (0x4d) Gateway Profibus V0.0
Module is present
     input offset: 0 length: 512
    output offset: 512 length: 512

das funktioniert gut --->

Code: Select all

pi@RevPi13263:~ $ piTest -w 512,2,3333
Write value d05 hex (=3333 dez) to offset 512.
Leider kann ich aber über die Codesys nicht schreiben (lesen funktioniert gut). Es gibt keine Fehlermeldung des rpi.REVPI_PIOUT_INT hier mal ein stark vereinfachter Code der mir zum testen dient :
klappt leider nicht --->

Code: Select all

// OFFSET BERECHNEN  	###################################
// Lesen
OFFSET[1]:=I*2;
PEV_IN(uiMaxIndex:=4096 , resErr:= , eError=>ER_01 );
READ_INPUT(auiOffset:=OFFSET , iIn=>DATPOINT );
WERTE_IN[i]:=ROL(DATPOINT,8);

// Schreiben
PEV_OUT(resErr:=reset , eError=>ER_02 );

OFFSET_W[1]:=512;
WRITE_OUTPUT(auiOffset:=OFFSET_W , iOut:=1111 );
OFFSET_W[1]:=514;
WRITE_OUTPUT(auiOffset:=OFFSET_W , iOut:=2222 );
OFFSET_W[1]:=516;
WRITE_OUTPUT(auiOffset:=OFFSET_W , iOut:=3333 );
schöne Grüße
Michael