Hallo User, http://pridopia.co.uk/pi-23017-4-lp.html
Soweit funktioniert alles, jedoch kann ich die einzelnen I/O´s immer nur für eine I2C-Adresse ansprechen.
Wenn ich vier Bausteine mit den einzelnen I2C Adressen ansprechen möchte, funktioniert immer nur ein Baustein.
Wo liegt mein Fehler?
Danke für eure Hilfe
Viele Grüße
Mathias
du hattest doch recht. Ich habe für jeden MCP23017 ein eigenes Gerät angehängt und in der POU ebenfalls für jedes Gerät einen eigenen Baustein.
Ich bin begeistert, dass es klappt und danke für deine Hilfe.
Viele Grüße Mathias
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
die von anderen Usern erstellten Bibliotheken und Gerätebeschreibungen findest du im englischen CODESYS Forum unter:CODESYS V3 Raspberry Pi share your devices & libraries
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2015-02-12
Originally created by: PJ242
mawi hat geschrieben:
Hallo PJ242,
du hattest doch recht. Ich habe für jeden MCP23017 ein eigenes Gerät angehängt und in der POU ebenfalls für jedes Gerät einen eigenen Baustein.
Ich bin begeistert, dass es klappt und danke für deine Hilfe.
Viele Grüße Mathias
Hi mawi.
Das freut mich, dass ich dir helfen konnte.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
MCP23017.IN_A;
MCP23017.IN_B := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);
MCP23017.IO_B := 16#00;
MCP23017.IO_A := 16#00;
MCP23017.OUT_A := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(A7),1) OR BOOL_TO_BYTE(A6),1) OR BOOL_TO_BYTE(A5),1) OR BOOL_TO_BYTE(A4),1)
OR BOOL_TO_BYTE(A3),1) OR BOOL_TO_BYTE(A2),1) OR BOOL_TO_BYTE(A1),1) OR BOOL_TO_BYTE(A0);
MCP23017.OUT_B; // := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
// OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);
MCP23017.STATE;
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bei mir kommt immer die Meldung "IN_A ist kein Eingang von MCP23017_16_IO". Wenn ich den Eingangsteil ausblende (//) und nur den OUT Teil drin habe, funktioniert es... Wo könnte das Problem liegen?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bei mir kommt immer die Meldung "IN_A ist kein Eingang von MCP23017_16_IO". Wenn ich den Eingangsteil ausblende (//) und nur den OUT Teil drin habe, funktioniert es... Wo könnte das Problem liegen?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo User,
http://pridopia.co.uk/pi-23017-4-lp.html
Soweit funktioniert alles, jedoch kann ich die einzelnen I/O´s immer nur für eine I2C-Adresse ansprechen.
Wenn ich vier Bausteine mit den einzelnen I2C Adressen ansprechen möchte, funktioniert immer nur ein Baustein.
Wo liegt mein Fehler?
Danke für eure Hilfe
Viele Grüße
Mathias
TEST_6.project [117.11 KiB]
Originally created by: PJ242
4 Geräte am Bus bedarf auch dem Einbinden von 4 Geräten oder etwa nicht?
Danke für den Tipp.
Das habe ich auch schon versucht, leider ohne Ergebnis.
Hallo PJ242,
du hattest doch recht. Ich habe für jeden MCP23017 ein eigenes Gerät angehängt und in der POU ebenfalls für jedes Gerät einen eigenen Baustein.
Ich bin begeistert, dass es klappt und danke für deine Hilfe.
Viele Grüße Mathias
Hallo, ich suche auch die Lib für den MCP23017.
Hallo Josef,
die von anderen Usern erstellten Bibliotheken und Gerätebeschreibungen findest du im englischen CODESYS Forum unter:CODESYS V3 Raspberry Pi share your devices & libraries
http://forum.codesys.com/viewtopic.php? ... 868#p11014
Grüße
Edwin
Originally created by: PJ242
Hi mawi.
Das freut mich, dass ich dir helfen konnte.
wie kann man den Bereich B als Eingang deklarieren? So in etwa:
FUNCTION_BLOCK IO_MCP23017
VAR_INPUT
I2C: USINT;
A0:BOOL;
A1:BOOL;
A2:BOOL;
A3:BOOL;
A4:BOOL;
A5:BOOL;
A6:BOOL;
A7:BOOL;
END_VAR
VAR_OUTPUT
B0:BOOL;
B1:BOOL;
B2:BOOL;
B3:BOOL;
B4:BOOL;
B5:BOOL;
B6:BOOL;
B7:BOOL;
END_VAR
VAR
END_VAR
MCP23017.usiAddress := I2C;
MCP23017.IN_A;
MCP23017.IN_B := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);
MCP23017.IO_B := 16#00;
MCP23017.IO_A := 16#00;
MCP23017.OUT_A := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(A7),1) OR BOOL_TO_BYTE(A6),1) OR BOOL_TO_BYTE(A5),1) OR BOOL_TO_BYTE(A4),1)
OR BOOL_TO_BYTE(A3),1) OR BOOL_TO_BYTE(A2),1) OR BOOL_TO_BYTE(A1),1) OR BOOL_TO_BYTE(A0);
MCP23017.OUT_B; // := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
// OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);
MCP23017.STATE;
Bei mir kommt immer die Meldung "IN_A ist kein Eingang von MCP23017_16_IO". Wenn ich den Eingangsteil ausblende (//) und nur den OUT Teil drin habe, funktioniert es... Wo könnte das Problem liegen?
Bei mir kommt immer die Meldung "IN_A ist kein Eingang von MCP23017_16_IO". Wenn ich den Eingangsteil ausblende (//) und nur den OUT Teil drin habe, funktioniert es... Wo könnte das Problem liegen?
Hallo,
so änderst du die IOs als Eingang MCP23017.IO_B := 16#FF;
Viele Grüße Mathias