VS2010, C# - SPS Steuerung mit Ethernet

Moin,

Hersteller nach einer API fragen. Im Prospekt werden nur Protokolle angeben die entsprechende Übertragung über das Netzwerkkabel realisieren. Damit Du aber entsprechend Eingäng und Ausgänge nutzen kannst wird ein Protkoll benötigt, welche auf TCP bzw. UDP aufsetzt. Und das hat definitiv der Hersteller.

hand, mogel
 
Moin,

Ich muss aberr dann die Events selber programmieren, sprich Flanke.
  • 0 -> 1 - Event
  • 1 -> 0 - Event
Für n Eingänge.

jain - das kommt an der Stelle jetzt wirklich auf die API die der Hersteller anbietet. Im besten Fall bietet Dir die API entsprechende Events bei steigender bzw. fallender Flanke. Meistens ist eine API aber auf das nötigste gekürzt, also nur lesen und schreiben. In dem Fall musst Du pollen, in etwa so:

Code:
public class IrgendwasAbfragen {

    private bool laststate = false;

    public bool steigendeFlanke() {
        bool current = getIOFromSPS(); // was auch immer die API für Aufrufe benötigt
        if (current == laststate) return false;
        if (current == false) return false;
        laststate = current;
        return true;
    }

    public bool fallendeFlanke() {
        bool current = getIOFromSPS(); // was auch immer die API für Aufrufe benötigt
        if (current == laststate) return false;
        if (current == true) return false;
        laststate = current;
        return true;
    }

}

kostengünstige SPS kenne ich nicht - das überlasse ich lieber den Profis

hand, mogel
 
Code:
this.btnBitVariante02.Click += new System.EventHandler(this.btnBitVariante02_Click);

  private void btnBitVariante02_Click(object sender, EventArgs e)
  {

Hallo,
ich dachte so an einen Mausklick.

steigendeFlanke
fallendeFlanke

Wie setze ich einen Ausgang? Wie setze ich diesen zurück?
Wie prüfe ich, ob Eingang 9, gesetzt ist oder nicht.

Du kennst ja eine SPS.
Wie sieht da das Telegramm zum setzen aus?
Wie sieht da das Telegramm zum prüfen des Eingangs aus?

Einfach dass ich es mal sehe?
Was muss ich via TCP/IP senden?

Grüße Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren

Wie setze ich einen Ausgang? Wie setze ich diesen zurück?
Wie prüfe ich, ob Eingang 9, gesetzt ist oder nicht.

Du kennst ja eine SPS.
Wie sieht da das Telegramm zum setzen aus?
Wie sieht da das Telegramm zum prüfen des Eingangs aus?

Einfach dass ich es mal sehe?
Was muss ich via TCP/IP senden?

Du brauchst die API des Herstellers - ohne geht es nicht. Z.B. ist LibNoDave auch eine API. Das setze ich immer ein - ich habe Null Ahnung was auf TCP/IP-Eben passiert.
 
Hallo,
OK. Welche SPS nimmst du denn?
Wenn du Null Ahnung hast, zeige mir doch wie du Ausgänge setzen tust, Eingänge abprüfst.
Wie du die Flankenänderung als Event mitbekommst.

D.h. du musst eigentlich in der Tat nicht wissen, wie die SPS funktioniert.
Dann ist es doch einfacher als Siemens S7 oder Codesys.
Sehe ich das richtig?
Grüße Thomas
 
Falls es dir um das TCP-Protokoll geht dann schau mal hier http://www.bj-ig.de/140.html

Flankenänderung musst du ggf. selbst auswerten. Sprich, du pollst das entsprechende Bit und reagierst auf Änderung.
Manche API´s haben das, glaub ich zumindest, schon implementiert.
Aber das hat mogel im Post#4 ja schon erwähnt.

Du kannst auch ohne Treiber arbeiten, dazu musst du dann allerdings sowohl auf pc-Seite als auch auf SPS-Seite eine offene TCP/IP-Schnittstelle programmieren.

SPS und kostengünstig?? Zumindest bei Siemens nicht der fall *g*.
Evtl. findest du was kostengünstiges in der eBucht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
>Pollen
Ja ich wollte was geprüftes, fertiges haben. Oder hast Du Beispielcode?

Welche kostengünstige SPS kannst du empfehlen, rein für Hobby.
'nur max. 20Eingänge, 20 Ausgänge, 24V" --- keine analoge Eingänge, Ausgänge.
Grüße Thomas
 
Moin,

OK. Welche SPS nimmst du denn?
die, die der Kunde verbaut hat (meistens Siemens)

Wenn du Null Ahnung hast, zeige mir doch wie du Ausgänge setzen tust, Eingänge abprüfst.
das ist 100% von der API bzw. dem Hersteller abhängig

Wie du die Flankenänderung als Event mitbekommst.
das hatte ich schon oben im Quelltext angedeutet (der funktioniert übrigens nicht 100%, ist ein Fehler drinnen). Du musst nur getIOFromSPS() durch den entsprechenden API-Aufruf des Herstellers ersetzen. Mehr mache ich auch nicht, dann habe ich zumindest schon mal eine steigende bzw. fallende Flanke. Der Rest ist wie schon beschrieben vom Hersteller bzw der API abhängig.

D.h. du musst eigentlich in der Tat nicht wissen, wie die SPS funktioniert.
setzt (unterm Strich) Eingänge und Ausgänge :cool:

Dann ist es doch einfacher als Siemens S7 oder Codesys.
Sehe ich das richtig?
Da sehe ich keinen Unterschied - das ist mir egal. Für mich ist nur wichtig welche SPS da am anderen Ende (im Netzwerk) steckt, damit ich die entsprechende API rauskramen/anfordern kann.

Ja ich wollte was geprüftes, fertiges haben.
Also das wirst Du nicht finden, da wirst Du schon selber was machen dürfen.

Wenn es dir nur um das Lesen/Setzen von Ein-/Ausgängen geht und Du den Rest auf dem PC programmieren willst, dann ist evt. folgendes eine Alternative
hand, mogel
 
Erzähl doch mal was du damit machen möchtest. Dann fällt vielleicht auch die Auswahl der Komponenten etwas leichter...
Was willst du denn für die Hardware ausgeben? Was ist schon vorhanden? Wenn du was von Siemens(oder kompatibel z.B. VIPA) willst brauchst du natürlich auch die entsprechende Software (Step7 o.ä.) die auch nicht grad billig ist. Dazu noch einen Adapter zum programmieren...usw.
Wie es bei anderen Systemen aussieht kann ich nicht sagen da ich nur Siemens benutze.

Erst wenn du die Hardware ausgewählt hast kannst du dich mit der Software beschäftigen da dies eben Herstellerabhängig ist.
 
Zurück
Oben