-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - Juergen Maier

#1
Hallo,
ich habe ein Problem beim einlesen meines Analogwertes.
Ich benutze die CoDeSys 2.3 SP RTE und einen Wago Controller 750-333 mit der Analogeingangskarte 750-456.
Die Karte ist eine -10 bis +10 Volt Karte.
Ich bekomme von der Karte ein Dezimalwert (WORD) 0 Volt = Dezimalwert = 0, 10 Volt = Dezimalwert 32760, -10 Volt = Dezimalwert 32768.
Die Karte hat eine 12 Bit Auflösung, Bit3 bis Bit14, Bit0 = Überlauf (Analogeingang außerhalb +-10 Volt), Bit1 = Kurzschluss, Bit2 = nicht Benutzt.
Das Problem ist das mein errechneter Messwert nicht übereinstimmt, d.h ich möchte den Analogeingang -10 bis +10 Volt auch so Anzeigen.
Ich habe im AIN1 folgende Einstellung:
in:=  wInput , ""Das ist mein Dezimalwert von der Karte""
error_bit:= 1,
error_code_en:=FALSE ,
error_code:= ,
overflow_bit:= 0,
overflow_code_en:=FALSE ,
overflow_code:= ,
Bit_0:=3 ,
Bit_N:=14 ,
out_min:= -10.0,
out_max:= 10.0,
code_min:=0 ,
code_max:=32760 ,
error_output:= ,
overflow_output:= ,

Hat jemand eine Idee woran der falsche Messwertausgang des AIN1 kommen kann.
#2
Eigentlich möchte ich nur eine Datei schreiben mit "viel" Text.
Die Datei hat folgenden Aufbau. Das Beispiel ist jetzt für eine Spannstelle (Injektor).
In meiner Datei die ich erzeuge sind es 24 Stück.
Denn gesamten String erzeuge ich über eine CONCAT Funktion.

Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<DataMatrixCode xmlns="http://tempuri.org/DataMatrixCode.xsd">
   <Injektor>
      <Spannstelle>1</Spannstelle>
      <Typ></Typ>
      <Nummer>32182</Nummer>
      <Qref>0.00070</Qref>
      <Angeschlossen>true</Angeschlossen>
      <VP_Nr>xxxxx</VP_Nr>
      <Ventil_ID>xxxxx</Ventil_ID>
      <Platzhalter1>xxxxx</Platzhalter1>
      <Platzhalter2>xxxxx</Platzhalter2>
      <Platzhalter3>xxxxx</Platzhalter3>
   </Injektor>

.... insgesamt 24 Injektoren
#3
Hallo,
ich möchte lange Texte in eine Datei schreiben. Leider ist die Länge meiner Variable begrenzt.
Ich definiere meine Variable zum bsp. => sMeineVariable: STRING(800);
Diese Variable übergebe ich dann meiner Funktion (SysFileWrite).
Wenn ich jetzt aber einen sehr langen Text habe > 800 Zeichen schreibt er nicht alle Zeichen
in die Datei. Wie kann ich diesen langen Text am besten in meine Datei schreiben.
Vielleicht hat jemand eine gute Idee.

Kann mir jemand sagen wie viele Zeichen ich max. in eine Stringvariable speichern kann ?

CoDeSys V2.3.9.25 RTE
#4
Hallo, gibt es bei OSCAT einen Baustein mit dem ich eine Mittelwertbildung durchführen kann.
Hintergrund: Ich lese über meinen Profibus einen Messwert ein der schwankt. Diesen Messwert
möchte ich mit einer Mittelwertfunktion "beruhigen".

Danke!
Jürgen
#5

Kannst Du mir sagen wie mann eine USB Schnittstelle "mounten" kann,
damit man diese wie einen seriellen Port ansprechen kann ?
#6
Hallo, wir haben da ein 4-Kanal Recorder/Logger von Velleman (PCS10).
Aus diesem kann man die Temperaturen auslesen.
#7
Hallo, ich möchte mit CoDeSys ein Gerät ansprechen, dass auf einer
USB Schnittstelle steckt. Hat jemand eine Idee wie ich die USB Schnittstelle
ansprechen kann.
Ich habe einmal gehört das man die USB Schnittstelle im System "mounten"
muss, wenn ja wie ?

IPC mit WIN XP, CoDeSys V2.3 + RTE
#8
Ankündigungen / Announcements / Re:Referenzen
26. März 2010, 10:31:41
Hallo,
Wir verwenden die OSCAT-Bibliothek im Prüfstandsbau für die Automobilindustrie (CoDeSys).

Euer Angebot ist einfach SUPER !!

Die Antworten auf gestellte Fragen im Forum, schnell und Professionell.

Einfach gut !
#9
Hallo,

stimmt genau, das war das Problem. Vielen Dank für die professionelle Hilfe !!
#10
1. welches demoprogramm von 3S => Habe von 3S ein Beispielprogramm über TCPIP
2. was hat funktioniert ohne slaves ? => Der Verbindungsaufbau Client/Server, und das senden/empfangen von Befehlen über TCP/IP
3. was hat die tcp-verbindung mit den profibus-slaves zu tun => Eigentlich nichts, das ist ja das komische. Es ist nur so, dass wenn ich das Programm
im Büro ohne Hardware (Profibus Slaves) teste funktioniert die TCP/IP Kommunikation. Bin ich an der Anlage mit Hardware, stoppen und starten sich
die Profibus Slaves von alleine. Nehme ich den TCP/IP Baustein wieder aus dem Programm raus, funktioniert alles wie es soll.
#11
Hallo,
Danke für die schnelle Antwort.

Ich hatte zuerst das Demoprogramm von 3S heruntergeladen und getestet. Bei meinen test
hat alles super funktioniert, ohne Slaves. Als ich die Anlage dann in Betrieb genommen habe
hatte ich das Problem, dass sich meine Profibusslaves immer "abgemeldet" und dan wieder "angemeldet" haben.
Dieses Spiel ging ständig. Nach mehreren Aktionen, wie Programm neu übersetzten, neu laden
ging plötzlich alles wieder, warum auch immer. Jetzt habe ich wieder das Problem, und da wollte
ich nun die TCPIP Verbindung mit den OSCAT Funktionen testen.


und in deinem demo-programm kann ich mit folgenden zeilen nichts anfangen

IP_C1.C_STATE;
IP_C1.C_ENABLE;
IP_C1.C_IP:= IPServer_Adr;
IP_C1.C_MODE;
IP_C1.C_PORT:= 1000;
IP_C1.ERROR;
IP_C1.FIFO;
IP_C1.R_OBSERVE;
IP_C1.TIME_RESET;


War nur zur Ansicht für mich !

Werde einmal die Demoprogramme in der network_lib testen.
#12
Hallo,
ich habe ein Problem mit der TCPIP übertragung. Ich habe ein Programm dass mir
als Server dient. Mit meiner Steuerung möchte ich mich mit diesem Server
verbinden, und anmelden. Mit meinem Testprogramm funktioniert das auch teilweise.
Ich bekomme beim Serverprogramm angezeigt das ich mich als Client verbunden habe.
Die Meldung am Server als Client verbunden wird angezeigt, sobald ich die Schleife
"Login an Server senden" ausführe. Normalerweise sollte der Server mir anzeigen,
als Client verbunden und Login empfangen. Die Meldung Login empfangen bekomme ich
aber nicht. Leider kann ich vom Server auch nichts empfangen, absolute Funkstille.

Was ich an dem IP_CONTROL Baustein nicht verstehe ist das C_MODE. Muss ich
bei jedem senden C_MODE "belegen", oder bleibt C_MODE immer auf 0, in meinem Fall.
Der Server erwartet für den Login im 1.Byte=1, im 2.Byte=0 und im 3.Byte=0. Wie
"lege" ich diese Wertigkeiten in den SendeBuffer?

Da ich nicht genügend bewandert bin mit TCPIP, hoffe ich mir kann bei meinem Problem
jemand weiterhelfen.

CoDeSys 2.3.9.13; RTE 2.3.7.6; WinXp Professional V2002 SP3
___________________________________________________________________________________________________________
PROGRAM PLC_PRG
VAR
   IP_CONTROL1:IP_CONTROL;
   IP_C1:IP_C;
   S_BUF1: NETWORK_BUFFER;
   R_BUF1: NETWORK_BUFFER;
   IPServer_Adr:DWORD;
   IPClient_Adr:DWORD;
   gbyLogin_CS: ARRAY[1..3] OF BYTE:= 1,0,0;   (* Login Server *)
   gabyPing_CS_Echo: ARRAY[1..1] OF BYTE:= 6;   (* Echo Lifesign, Ping vom Server *)
   send : BOOL;
   xsendEcho: BOOL;
END_VAR


IPServer_Adr:=IP4_DECODE('192.168.001.11');
IPClient_Adr:=IP4_DECODE('192.168.001.10');

(* Login an Server senden *)
IF send THEN
   IP_C1.C_MODE := 0;
   IP_C1.C_ENABLE:= TRUE; (* Verbindungsaufbau freigeben *)
   IP_C1.R_OBSERVE:= TRUE; (* Datenempfang überwachen *)
   IP_C1.TIME_RESET:= TRUE;
   S_BUF1.BUFFER[0] := BYTE#16#01;
   S_BUF1.BUFFER[1] := BYTE#16#00;
   S_BUF1.BUFFER[2] := BYTE#16#00;
   S_BUF1.SIZE :=3;
   send := FALSE;
END_IF;

(* Lifesign an Server senden *)
IF xsendEcho THEN
   IP_C1.C_MODE := 0;
   IP_C1.C_ENABLE:= TRUE; (* Verbindungsaufbau freigeben *)
   IP_C1.R_OBSERVE:= TRUE; (* Datenempfang überwachen *)
   IP_C1.TIME_RESET:= TRUE;
   S_BUF1.BUFFER[0] := gabyPing_CS_Echo[1];
   S_BUF1.SIZE :=1;
   xsendEcho := FALSE;
END_IF;

IP_C1.C_STATE;
IP_C1.C_ENABLE;
IP_C1.C_IP:= IPServer_Adr;
IP_C1.C_MODE;
IP_C1.C_PORT:= 1000;
IP_C1.ERROR;
IP_C1.FIFO;
IP_C1.R_OBSERVE;
IP_C1.TIME_RESET;


IP_CONTROL1(IP:=IPClient_Adr ,PORT:=1000 ,TIME_OUT:=T#10s,IP_C:= IP_C1,S_BUF:=S_BUF1, R_BUF:=R_BUF1 );
IP_CONTROL1.c_enable;
#13
Hallo,
hat jemand eine Funktion, mit der ich abhängig von einem Bit den Rechner
aus den CoDeSys RTE runterfahren kann ?