Polariät von Leitung prüfen

Else_Eifrig

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich lese schon einige Zeit in eurem Forum mit und habe nun auch ein paar Fragen. Ich bin absoluter Anfänger was SPS-Programmierung angeht.
Ich habe eine Steuerung von Mitsubishi FX1N-24MR-DS und möchte die Polarität bzw. den Durchgang von Leitungen, die mit einem Stecker und einer Kupplung verbunden sind, prüfen.

Also, die Leitungen habe ich so an die Steuerung angeschlossen:

Leitung 1:

Stecker +: X1
Kupplung +: Y1
Stecker -: X2
Kupplung -: Y2

Leitung 2:

Stecker +: X3
Kupplung +: Y3
Stecker -: X4
Kupplung -: Y4

Mein Plan ist es einen Funktionsbaustein zu erstellen, den ich immer wieder aufrufen kann, der die Leitungen dann so testet:

Input: i INT (i-te Leitung)
Output: Merker[0..3] BOOL (Array, bei 1 ok, bei 0 verpolt)
-------------------------------------
Yi & Xi -> setze Merker[0,i]
-------------------------------------
Yi & nicht Xi+1 -> setze Merker[1,i]
-------------------------------------
Yi+1 & Xi+1 -> setze Merker[2,i]
-------------------------------------
Yi+1 & nicht Xi -> setze Merker[3,i]
-------------------------------------

Kann man das überhaupt so machen? Also so, dass die Ausgänge variabel gesetzt werden? Und falls ja, wie? :) Ich hoffe, ich hab mich einigermaßen verständlich ausgedrückt.
Viele Grüße und Danke.
 
Zuletzt bearbeitet:
Also so, dass die Ausgänge variabel gesetzt werden? Und falls ja, wie?

jopp, kann man ... es gibt unterschiedliche möglichkeiten.

1. die einfache q&d: du setzt das "richtige" bit entsprechend deiner bedingung und setzt die anderen 3 zurück
2. die elegante: du schreibst abhängig von der verknüpfung ein bitmuster in den speicherbereich. für Yi+1 & Xi+1 z.b.: 0100
3. die aufwändige: du schiebst das nibble nach links oder rechts entsprechend der stellen, die vom letzten zustand her notwendig sind um an die richtige stelle zu kommen

ich tendiere zu 1. :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!
"Einfach" ist immer gut. Ich verstehe nur nicht, was du damit meinst, wenn du sagst das "richtige" bit setzten und die anderen 3 zurück setzten?!
Was wäre denn das bit? i? Oder Yi? ..hilfe :confused:
 
Ich kapier das nicht.

Ich will bei jeder Leitung überprüfen ob Stecker + und Kupplung + und Stecker - und Kupplung - einen Durchgang hat. Und das Stecker + und Kupplung - und Stecker - und Kupplung + keinen Durchgang haben. Und das soll für mehrere Leitungen nacheinander funktionieren, deswegen wollte ich eine Funktion erstellen, die ich dann bei z.B. 4 Leitungen 4 mal aufrufen kann. Wie gesagt, ich bin Anfänger. Kannst du mir das mal ausführlicher erklären? Zum Beispiel wie ich die Variablen definieren muss..
 
Zuviel Werbung?
-> Hier kostenlos registrieren
irgendwie reden wir doch an einander vorbei... :???:

und das prob ist, dass ich keine software für mutsibishi zur verfügung habe ...

also: du hast vier eingangs-bit, richtig?
und du möchtest diese vier bit entsprechend deiner spezifikation verknüpfen und damit ein bestimmtes bitmuster ausgeben? das geht, soweit ich mir das jetzt erstmal vorstellen kann nur auf ein eindimensionales array, die einzelnen arrays müssteste dann noch zusammen kopieren ...

sind grundsätzlich die bitmuster 0000 über 1010 bis 1111 vorstellbar oder ist im nibble immer nur ein bit zu erwarten ...

so richtig kann ich noch nicht nachvollziehen, wie die prüfung von statten gehen soll :confused:
 
Also, Bitmuster und nibble sagt mir nichts. Das sollte ich erstmal nachlesen. Ich versuche nochmal meine Aufgabe zu erklären. Ich bin kein Elektriker oder Techniker.

Es soll der Durchgang von Leitungen überprüft werden (genauer gesagt von Thermoelementen). Es soll so laufen, dass ich an meine Steuerung z.B. 2 oder 4 oder max. 16 Thermoelemente anschließe und dann soll überprüft werden, ob an den Steckern und Kupplungen die Leitungen richtig angeschlossen ist also + an + und - an -.
Probeweise habe ich jetzt 2 Leitungen an die Steuerung dran geschraubt.

Stecker von Leitung 1: Pluspol auf Eingang X1 und Minuspol auf Eingang X2.
Kupplung von Leitung 1: Pluspol auf Ausgang Y1 und Minuspol auf Ausgang Y2.

Stecker von Leitung 2: Pluspol auf Eingang X3 und Minuspol auf Eingang X4.
Kupplung von Leitung 2: Pluspol auf Ausgang Y3 und Minuspol auf Ausgang Y4.

Wenn ich jetzt Stecker und Kupplung der Leitungen zusammen stecke, dann soll überprüft werden ob die Teile richtig verbunden sind, also + auf + und – auf -.

Weil es später so sein soll, dass ich 16 Thermoelemente damit überprüfen will, wollte ich eine Funktion erstellen, die für jede Leitung aufgerufen werden kann. Vielleicht habe ich da auch ne falsche Denkweise. Bisher habe ich hauptsächlich Skripte mit Matlab und ein bisschen C++ programmiert.

Wenn ich eine Leitung überprüfen will, klappt es auch mit meinem Programm, aber dann eben nur für die jeweiligen Ein- und Ausgänge, also so:

Y1 & X1 -> setze Merker[0] % Prüfung auf + +
-------------------------------------
Y1 & nicht X2-> setze Merker[1] % Prüfung auf + -
-------------------------------------
Y2 & X2 -> setze Merker[2] % Prüfung auf - -
-------------------------------------
Y2 & nicht X1 -> setze Merker[3] % Prüfung auf - +

Dann bekomme ich Merker = [1 1 1 1] zurück, wenn nichts verpolt ist.

Wenn ich jetzt aber 16 Leitungen überprüfen will, sollte das aber so laufen, dass ich der Funktion die Nummer der aktuellen Leitung übergebe, also das i, und dann damit die jeweiligen Ein- und Ausgänge überprüft werden.
 
verstehe :D

... jetzt bräuchten wir einen experten, der sagen kann ob die mitsubishi auch indirekte adressen kennt ... das was ich bisher da gesehen hab, war eher nicht soooo schön :rolleyes:

ein nibble ist ein block von vier bit, also dein array ... und das bitmuster ist die kombination aus 0 und 1, die in diesem nibble gespeichert ist ... dein nibble "GUT" ist 1111 ... das nibble "total mies" wäre 0000 (glaub ich)
 
Ja, genau! :D

Gibts hier solche Experten im Forum? Ansonsten schlage ich so lange mal indirekte Adressen nach und hoffe, dass ich fündig werde.

mutsibishi ist hier im forum eher der außenseiter ... ich hatte grad versucht zu googlen, aber hab nichts gefunden...

eine andere möglichkeit wäre, dass du die schnittstelle vier byte breit machst...und den baustein 16mal aufrufst...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich mein natürlich vier bit :rolleyes: sorry ... die vier bit, die du auswertest, also deine X'e und Y's ... warum operierst du hier eigentlich mit ausgängen?

so richtige wiederverwendbare subroutinen scheint die mutsibishi gar nicht zu kennen
 
hab mir grad mal das programmierhandbuch zu gemüte geführt und möchte dir mitteilen:

vergiss es!

bau die routine 16 mal mit den absoluten operanden - das erspart dir ne menge sucherei, die am ende zum selben vorgehen führt...
 
Ja? Meinst du? Werd's dann wohl erstmal so machen. Falls dir oder einem Mitsubishi-Experten der das liest sonst noch was einfällt, wäre ich echt dankbar.
Also dann, vielen Dank für die Hilfe und deine Geduld :D
 
Zurück
Oben