# Timer zeiten über Poti einstellen??



## wankeldriver (1 Februar 2007)

hallo
ich habe folgendes problem.
ich möchte über ein poti die zeiten an einem timer vorgeben. zb.1-10 s.
was für hardware brauche ich und wie sieht die programmierung aus?
evt. hat schon jemand ein fertiges programm für sowas.

ps: über suchen habe ich leider keine lösungen meines prob. gefunden.


----------



## eNDe (1 Februar 2007)

Hallo wankeldriver,
wenn es unbedingt ein Poti sein muss, dann kommst du um Analogwertverarbeitung nicht herum. Die Programmierung sähe dann so aus:
1. Analogwert lesen
2. In das gültige Zeitformat umwandeln und im Akku1 bereitstellen
3. Timer-Startanweisung (z.B. SE T 12)

Einfacher und billiger ist die Verwendung einer (einstelligen) BCD-Eingabe, denn diese kostet dich nur 4 binäre Eingänge. Ablauf hier:
1. Eingansbyte laden (z.B. L EB 0) und zum Gelesenen 1s addieren (weil du ja 1-10s haben willst)
2. Das Ganze in ein gültiges Zeitformat wandeln und im Akku1 bereitstellen
3. Timer-Startanweisung (z.B. SE T 12)


----------



## wankeldriver (1 Februar 2007)

thx für die antwort.
ich bekomme aber den analogwert nicht in das zeitformat.cpu geht auf stop.ab einem bestimmten analogen eingangswert.
hast du evt. ein beispielprogr. wie du die umwandlung meinst??


----------



## MSB (1 Februar 2007)

http://www.sps-forum.de/showthread.php?t=11300&highlight=variablen+Zeitwert


----------



## SPSKILLER (1 Februar 2007)

Hallo,

wenn du deine Zeiten im S5-Timerformat brauchst, könnte dir das da helfen:

FUNCTION "REAL[%]->S5TIME" : VOID
TITLE =Wandler REAL [%]-> S5TIME
AUTHOR : Micha
VERSION : 1.0

VAR_INPUT
Y : REAL ; //Reglerausgang [%]
T_MAX : REAL ; //Zeit 100% (max. 9990)
T_MIN : REAL ; //Zeit 0% 
END_VAR
VAR_OUTPUT
Q : WORD ; //Zeit im S5-Format
END_VAR
BEGIN
NETWORK
TITLE =Logik
//
//
L #T_MAX; 
L #T_MIN; 
ABS ; 
-R ; 
L 0; 
<R ; 
SPBN OK; 
T #Q; 
BEA ; 
OK: L #T_MAX; 
L 9.990000e+003; 
>R ; 
SPB ERR1; 
TAK ; 
ERR1: L #T_MIN; 
ABS ; 
-R ; 
L #Y; 
*R ; 
L 1.000000e+002; 
/R ; 
L #T_MIN; 
ABS ; 
+R ; 
L 9.990000e+003; 
>R ; 
SPB ERR2; 
TAK ; 
ERR2: L 9.990000e+002; 
>R ; 
TAK ; 
SPB _1; 
L 9.900000e+001; 
>R ; 
TAK ; 
SPB _2; 
L 9.900000e+000; 
>R ; 
TAK ; 
SPB _3; 
L 1.000000e+002; 
*R ; 
RND ; 
ITB ; 
SPA _4; 
_1: L 1.000000e+001; 
/R ; 
RND ; 
ITB ; 
OW W#16#3000; 
SPA _4; 
_2: RND ; 
ITB ; 
OW W#16#2000; 
SPA _4; 
_3: L 1.000000e+001; 
*R ; 
RND ; 
ITB ; 
OW W#16#1000; 
_4: T #Q; 
END_FUNCTION

Den Baustein hab ich mal eingesetzt um über einen Reglerausgang (0-100%) S5-Zeiten zu bilden.

Für deine Zwecke sollten folgende Schritte ausreichen:
-Analogwert auf 0-100% skalieren und an den Eingang Y verschalten.
-Zeit für 0% in s angeben
-Zeit für 100% in s angeben

Den Ausgang Q kannst an die S5 Timer verschalten
sieht im AWl etwa so aus:

u m 
l mw (Ausgang Q)
se t
u t 
= m

Viel Spaß


----------



## eNDe (1 Februar 2007)

Hallo wankeldriver,
sieht ganz so aus, als würdest du dich für die Poti-Variante entscheiden. Nun gut!
Um dir hierbei zu helfen, werden allerdings noch ein paar Informationen benötigt:
- S5 oder S7 (die eingelesenen Formate unterscheiden sich deutlich voneinander)
- eingelesenen Originalwert bei Potianschlag links (Hex-Darstellung reicht)
- eingelesenen Originalwert bei Potianschlag rechts (in Hex)
- Adresse des Analog-Einganges
- zu beeinflussende Timernummer

Ein fertiges Programm habe ich nicht, könnte dir aber bei der Entwicklung helfen.

Interessiert mich mal, weshalb keine BCD-Eingabe. Mit 2-stellig könnte man sogar in 10tel Sekunden arbeiten. Außerdem ist digital auch für den Bediener besser (denke ich jedenfalls)


----------



## Unregistrierter gast (1 Februar 2007)

eNDe schrieb:


> Interessiert mich mal, weshalb keine BCD-Eingabe. Mit 2-stellig könnte man sogar in 10tel Sekunden arbeiten. Außerdem ist digital auch für den Bediener besser (denke ich jedenfalls)



Es ist halt Wankelfahrer...

Aber im Ernst: die BCD - Schalter sind recht teuer und auch schwieriger in einer Frontplatte unterzubringen.

Für ein Poti genügt ein kleines Löchlein.

Hier trifft halt Theorie und Praxis zusammen...

Die Praxis kann man nicht an der Schulbank erfahren...


----------



## MSB (1 Februar 2007)

@UG
Für einen Möller BCD Schalter brauch ich auch nur ein 22,5er Loch,
was soll daran für einen Schaltschrankbauer schwierig sein ?


----------



## Unregistrierter gast (1 Februar 2007)

MSB schrieb:


> @UG
> Für einen Möller BCD Schalter brauch ich auch nur ein 22,5er Loch,
> was soll daran für einen Schaltschrankbauer schwierig sein ?



Für n Poti brauch ich nur ein 5er loch.

Und überhaupt, wer hat dich gefragt ! ?


----------



## Betriebselektriker28 (1 Februar 2007)

Außerdem kann man mit einem einstelligen-BCD Schalter keine Zwischenwerte(z.b. 4,5sek) einstellen.....vielleicht ist das ja gewünscht ;-) ?

Bezüglich Analogeingang: Ist das ein 0-10V oder 0-20ma Eingang ?

Weil wenn du bei einem 0-20ma Eingang ein Poti verwendest könnte ich mir vorstellen das die CPU wegen einer Überschreitung des oberen  Grenzwertes auf Stop geht !

Kann man glaub ich in der Hardwareconfig deaktivieren.....

Trotzdem mit Poti und 0-20ma wird das denk ich nix....oder lieg ich falsch ?


----------



## KalEl (1 Februar 2007)

wankeldriver schrieb:


> thx für die antwort.
> ich bekomme aber den analogwert nicht in das zeitformat.cpu geht auf stop.ab einem bestimmten analogen eingangswert.
> hast du evt. ein beispielprogr. wie du die umwandlung meinst??


logisch. falsches datenformat für eine zeit.

einstellbar von 0 - 10 mit einer nachkommastelle

```
L     PEW  256
      DTR   
      L     2.764800e+002
      /R                                //sekunden in zehntel
      TRUNC                             //in ganzzahl runden
      ITB   
      L     W#16#1000                   //zeitbasis 0.1 sek
      +I    
      T     MW    10                    //deine zeit
```
mehr ist das nicht


----------



## Unregistrierter gast (1 Februar 2007)

KalEl schrieb:


> logisch. falsches datenformat für eine zeit.
> 
> einstellbar von 0 - 10 mit einer nachkommastelle
> 
> ...



Und wenn ich von 0 .. 10 Sekunden einstellen will ?

Son Poti hat immerhin 320 Grad ... !


----------



## volker (1 Februar 2007)

so ganz einfach wird das einstellen nicht, wenn man z.b. genau 5 sek haben will.

man kann natürlich auch 10 fenster mit vergleichern programmieren. dann würden man vermutlich den gewünschten wert treffen.


----------



## kpeter (1 Februar 2007)

Die CPU geht auf stopp weil es keine küldige s5Time ist.


----------



## wankeldriver (1 Februar 2007)

KalEl schrieb:


> logisch. falsches datenformat für eine zeit.
> 
> einstellbar von 0 - 10 mit einer nachkommastelle
> 
> ...


 

juhu das klappt .
dachte es währe viel mehr programmierung nötig.
thx an alle

hier noch die änderung von 0 - 10 sekunden falls es noch wer braucht


> L PEW 20
> DTR
> L 6.500000e+002
> /R
> ...


​


----------



## mectron (1 Februar 2007)

Hallo,eine Alternative wäre da vielleicht so wie wir das machen. Ein Relais einschaltverzögert, bei dem die Zeit über einen Drehschalter eingestellt wird (RS-Components). Ein Ausgang schaltet das Relais, wenn dann die Zeit abgelaufen ist kommt ein Eingang in die SPS.Grußmectron


----------



## Sockenralf (1 Februar 2007)

Hallo,

haben wir auch schon gemacht an Maschinen, die keine Visualisierung haben, die Zeit aber trotzdem für den Benutzer einstellbar sein muß.


Obwohl, 
gibt´s sowas noch?  


MfG


----------



## wankeldriver (1 Februar 2007)

mectron schrieb:


> Hallo,eine Alternative wäre da vielleicht so wie wir das machen. Ein Relais einschaltverzögert, bei dem die Zeit über einen Drehschalter eingestellt wird (RS-Components). Ein Ausgang schaltet das Relais, wenn dann die Zeit abgelaufen ist kommt ein Eingang in die SPS.Grußmectron


 
daran hatte ich auch schon gedacht, aber ich will so wenig wie möglich zusätliche bauteile die nicht unbedingt sein müssen.
die anlage soll später klein und leicht sein da sie für wechselnde einsatzgebiete bestimmt ist.


----------



## SPSKILLER (2 Februar 2007)

Hallo,

ich halte die Lösung für bedenklich. Meiner Meinung nach kannst mit dem Programmcode



> L PEW 20
> DTR
> L 6.500000e+002
> /R
> ...


 
niemals auf eine Anlage losgehen. Probleme sind vorprogrammiert...
Was machst denn bei nem Drahtbruch?
Das Beispiel funktioniert auch nur sauber, wenn sich deine eingestellte Zeit immer innerhalb einer Zeitbasis befindet. Bei 0-20s z.B. hast schon n Problem.
Wenn du dann immer die Zeitbasis für deine "20mA" Zeit schreibst werden kleine Einstellungen sehr ungenau... Bei 0-1000s z.B. wird das Problem noch viel größer.



> dachte es währe viel mehr programmierung nötig.


 
-> Es ist mehr Programmierung nötig, ansonsten hast meiner Meinung nach nur ne billige Bastellösung.

Ich persönlich würde die Analogwerte getrennt einlesen mit korrekter Fehlerauswertung, ggfs. Ersatzwertaufschaltung usw.
und dann anhand des eingelesenen Wertes die optimale Zeitbasis in einem separaten Fc berechnen und von dort die Zeit ausgeben (siehe Seite 1) 

Schöne Grüße


----------



## KalEl (2 Februar 2007)

> Ich persönlich würde die Analogwerte getrennt einlesen mit korrekter Fehlerauswertung, ggfs. Ersatzwertaufschaltung usw.
> und dann anhand des eingelesenen Wertes die optimale Zeitbasis in einem separaten Fc berechnen und von dort die Zeit ausgeben


ich kann einen spatz mit einem luftgewehr oder einer atombombe töten.

die lösung mit dem poti entspricht einer zeiteinstellung wie bei einem konventionellem zeitrelais. da hab ich idr auch nur ein poti.

und wenns nicht sooo genau sein muss reicht das aus.


----------



## SPSKILLER (2 Februar 2007)

Hey,

das Ding soll verkauft werden, oder?
Und ein FC zum Einlesen von Analogwerten wird doch da sein. Es gibt doch sicher noch mehr Messungen als die Poti...
Ausserdem lassen sich die Probleme die ich oben geschildert habe doch nicht leugnen...
Wenn du durch nen Drahtbruch keinen gültigen Zeitwert im MW10 stehen hast, dann funktioniert das Programm doch schon nicht mehr richtig...


----------



## wankeldriver (2 Februar 2007)

SPSKILLER schrieb:


> Hallo,
> 
> ich halte die Lösung für bedenklich. Meiner Meinung nach kannst mit dem Programmcode
> 
> ...


 
hallo
bei einem drahtbruch bleibt der timer immer auf 10 sek. stehen ,was nicht weiter schlimm ist. ( wie willst du bei einem analogen wert eine drahtbruchsicherheit programmieren. hätte da gar keine idee ).

die zeit kann gar nicht ausserhalb der zeitbasis,weil sie auf max 10s begrenzt ist.

welches problem meinst du genau wenn ich von 0-20 sek einstelle ist dann genau das gleiche ausser das die zeit dann auf 20 sek. begrenzt ist.(vollanschlag poti )

bei der einstellung 0-1000 sek. gebe ich dir recht das wird ungenau.

ich werde die über den poti eingestellte zeit über eine anzeige ausgeben.damit müsste man dann die zeit (0-10sek.)genau einstellen können ,auch im ms.bereich.

werde deine lösug auch mal progr. und testen.

gruss


----------



## SPSKILLER (2 Februar 2007)

Wenn deine Zeit 20s sein soll kannst nicht mehr 
l w#16#1000
schreiben, weil das die Zeitbasis 0,1s ist.
-> 999 bcd *0,1 =9,99s max.

alles drüber braucht ne andere Zeitbasis.

je kleiner deine Zeitbasis, um so genauer ist dein Timer.
Deshalb ist es interessant, abhängig vom eingestellten Wert immer die kleinstmögliche Zeitbasis zu verwenden...

Zum Drahtbruch:
Natürlich kannst du Softwaretechnisch keinen Drahtbruch verhindern, aber erkennen und darauf reagieren, indem du z.B. einen Ersatzwert schreibst...

Für mein FC von Seite 1 musst nicht viel programmieren, ist ja ne fertige AWL-Quelle. Symbol für FC anlegen übersetzen, fertig...
Ist halt für einen Eingang von 0-100% geschrieben...

Warum nimmst eigentlich die Potis wenn du eh ne Visu hast?


----------



## SPSKILLER (2 Februar 2007)

sorry verrechnet. geht natürlich bis 99,9 s mit 0,1s Zeitbasis


----------



## wankeldriver (2 Februar 2007)

leider klappt deine programmierung nicht ohne weiteres.
die erste hälfe des potis geht nur bis 300 ms und dann macht es einen sprung auf über 5min und lauft wieder richtung o sek. runter. werde mich heute abend mal intensiver drum kümmern


----------



## eNDe (2 Februar 2007)

Hallo wankeldriver,
ich hatte dich zwar gebeten, mal ein paar Eckwerte zu posten, aber leider reagierst du nicht darauf, denn es ist nicht ganz so einfach, wie es bisher dargestellt wurde.
1. Wer garantiert, dass bei Linksanschlag der Analogeingang 0 liefert. Ich gehe mal davon aus, dass das nicht so ist und definiere diesen Wert mal mit Min.
2. Hat dein Poti Rechtsanschlag bedeutet das auch nicht 32768 am Analogeingang sondern einen kleineren Wert, ich nenne ihn mal Max.
3. Den aktuellen Wert nennen ich mal Xe.
Dann berechnet sich deine Zeit nach folgender Formel:
*t=900*(Xe-Min)/(Max-Min)+100*​Ergebnis in ms. Dieser Wert muss nun noch in ein gültiges Zeitformat umgerechnet werden.
Nachfolgend eine AWL mit angenommenen Werten (ist aus Zeitgründen aber noch nicht komplett getestet, vor allem wäre es besser, deine Werte zugrunde zu legen!)​ 
L 2.345600e+04 // Wert bei Rechtsanschlg
T #Max
L 1.234000e+03 // Wert bei Linksanschlag
T #Min
-R
T #Max_Min
// L PEW 20
L 2222 // Angenommer INT-Wert aus Analogbaugruppe
DTR
L #Min
-R
T #Xe_Min
L 9.000000e+02 // Beginn der Formelberechnung
L #Xe_Min
*R
L #Max_Min
/R
L 1.000000e+02
+R
T #Ergebnis_in_ms // Ende der Formelberechnung
L 9.995000e+02 // Wandeln in gültigen Zeitwert
<R // Kann Ergebnis in 1/100s gewandelt werden?
SPB Hund // <-- ja
L #Ergebnis_in_ms // wenn nicht, dann in 1/10s wandeln
RND
DTR
L 1.000000e+01
/R
RND
DTB
L W#16#1000 // Zehntel Sekunden
OW
T MW 10
BEA

Hund :L #Ergebnis_in_ms
RND
DTB
T MW 10


Probiers einfach mal und melde dich wieder, kostet ja nix!


----------



## wankeldriver (2 Februar 2007)

eNDe schrieb:


> L 2.345600e+04 // Wert bei Rechtsanschlg
> T #Max
> L 1.234000e+03 // Wert bei Linksanschlag
> T #Min
> ...


 
hi musste noch ein paar sachen einfügen.ich bekomme die zeit aber nicht auf 0-10 sek und bei dem sprung hund uberspringt das programm 2 sek.
links und rechtsanschlag habe ich schon eingetragen.
s7 cpu 300 er 
wenn du noch daten drauchst sag bitte welche



> L 5.617300e+004 // Wert bei Rechtsanschlg
> T #max
> L 1.040000e+003 // Wert bei Linksanschlag
> T #min
> ...


----------



## eNDe (3 Februar 2007)

Hallo wankeldriver,
Zunächst möchte ich einen Fehler korrigieren. Meine Formel berechnet die Zeit nicht in ms sondern in 1/100s. Das Programm stimmt aber!
Nun zum eigentlichen Problem:
1. Analoge Baugruppen belegen Bit 15 im PEW mit dem Vorzeichen. Das macht auch Sinn, weil ja ein Messbereich von +/-10V das Vorzeichen braucht. Dein Max-Wert liegt bei 56173. Das bedeutet, es handelt sich um eine negative Zahl. Mit dem Analogeingang kann also irgend etwas nicht stimmen. Gib einfach mal den Befehl L PEW20 ein und beobachte im Status Baustein den Inhalt von Akku1. Der Wert muss immer im positiven Bereich liegen (0...32767, gültiger Messbereich bei Widerstandsgeber 0...27648, größere positive Zahlen charakterisieren den Übersteuerungsbereich!, negative Werte sind gar nicht möglich). 
2. Der von dir hinzugefügte Code ist überflüssig, er tut effektiv nämlich nichts, ausser in die MD50 und 60 etwas zu schreiben. Ich habe mein Programm noch einmal getestet -> es funktioniert und rechnet richtig!
3. Ändere die letzten 7 Befehle
Original:
OW 
T MW 10
BEA 
Hund: L #ergebnis_in_ms
RND 
DTB 
T MW 10 

ab in:
OW 
T MW 10
SPA Ende 
Hund: L #ergebnis_in_ms
RND 
DTB 
T MW 10 
Ende: NOP 0
Vorteil: Jetzt kann der Programmcode weitergeführt werden, im MW10 steht der gültige Zeitwert im richtigen Format.


----------



## wankeldriver (3 Februar 2007)

das programm läuft jetzt.
der eindestellte messbereich ist 0- 10 v
die zusätlichen merker brauche ich um in das real zahl format zu wechseln.(eingang ist ja int. zur berechnung brauche ich real oder ??)
ohne diese umwandlung lief es gar nicht bei mir.

gruss und thx


----------



## eNDe (3 Februar 2007)

Hallo wankeldriver,
nochmal zur Klarstellung:
Das PEW 20 (und überhaupt jedes Wortformat) umfasst 16 Bit (Bit15 .. Bit0). Der Befehl L PEWxxx schreibt in den Akku1 einen Integerwert, d.h. eine Zahl mit Vorzeichen. Damit umfasst der Wertebereich die Zahlen -32768 .. +32767. Zahlen außerhalb dieses Bereiches sind nicht möglich! Deine Vorgabe +56173 kann also nicht stimmen!
Und hier mal eine ausführlichere Darstellung der Befehlsfolge:
L PEW20 // Akku1 enthält den Zahlenwert im INT-Format
DTR // wandelt im Akku1 das INT-Format in das Real-Format, dieses belegt jetzt 32 Bit
Man braucht also keinerlei Hilfsmerker.
Zum Abschluss nochmals das leicht veräderte Programm, wobei immer noch das Problem des Wertes bei Rechtsanschlag besteht.

L 2.345600e+04 // Wert bei Rechtsanschlg ????
T #Max
L 1.040000e+03 // Dein Wert bei Linksanschlag
T #Min
-R
T #Max_Min // Wert Max-Min
L PEW 20 // Eingelesener Analogwert im INT-Format
// L 32767 // Angenommer INT-Wert aus Analogbaugruppe
DTR // wandelt Analogwert in das Real-Format
L #Min
-R // Berechnet Xe-Min
T #Xe_Min // Wert Xe-Min
L 9.000000e+02 // Beginn der Formelberechnung
L #Xe_Min
*R
L #Max_Min
/R
L 1.000000e+02
+R
T #Ergebnis_in_hund // Ende der Formelberechnung
L 9.995000e+02 // Beginn der Wandlung in gültigen Zeitwert
<R // Kann Ergebnis in 1/100s ausgegeben werden?
SPB Hund // <-- ja
L #Ergebnis_in_hund // wenn nicht, dann in 1/10s wandeln
L 1.000000e+01 // 1. durch 10 dividieren
/R
L 1.000000e+03 // 1000 addieren, wegen Formatwandlung
+R
RND // wandeln in DINT-Format
DTB // Wandeln in BCD-Format
T MW 10 // Zeitwert in 1/10s (10,0..13,7s)
SPA Ende
Hund :L #Ergebnis_in_hund // Ausgabe in 1/100s
RND
DTB
T MW 10 // Zeitwert in 1/100s (0..9,99s)
Ende :NOP 0


----------



## Unregistrierter gast (3 Februar 2007)

eNDe schrieb:


> Und hier mal eine ausführlichere Darstellung der Befehlsfolge:
> L PEW20 // Akku1 enthält den Zahlenwert im INT-Format
> DTR // wandelt im Akku1 das INT-Format in das Real-Format, dieses belegt jetzt 32 Bit



Das ist leider wieder mal falsch.
Das mit dem Zahlenbereich stimm schon, aber wenn du eine Integerzahl, die ja negativ sein kann, in Real umwandeln willst, musst du vorher das VZ entsprechend in das Ganzzahlformat überführen, DTR wandelt nämlich (wie der Name ja ganz klar sagt) GANZZAHLEN (D, 32 Bit) in Realzahlen um, keine 
INTEGERZAHLEN (16 Bit)

Richtig ist also:


```
L PEW20
ITD                       // [B]16 bit Integer nach 32 Bit GANZZAHL wandeln, nur dann stimmt ein negatives Vorzeichen ![/B]
DTR
```
Ich glaub, du hast mal geschrieben, du wärst 65 Jahre alt und Lehrer...

Mein Tip: Setzt dich zur Ruhe und züchte Rosen.
Die Feinheiten der SPS - Programmierung scheinen dir nicht mehr vermittelbar.

Sorry.


----------



## eNDe (3 Februar 2007)

Hallo unbekannt,
schade, dass es in diesem Forum immer wieder unsachliche Kommentare gibt. Besser wäre die Klarstellung eines Fehlers, wenn denn einer da wäre:
L PEW20 // liesst eine 16 Bit INT-Zahl in den Akku1 und macht dabei die Bit 16..31 des Akku=0. Da es sich im vorliegenden Falle nur um pos. Zahlen handeln kann, steht im Bit 15 ebenfalls eine 0. Damit sieht die Codierung der eingelesenen Zahl im INT-Format genau so aus wie im DINT-Format. Das pos. VZ wird durch eine 0 repräsentiert und ob diese nun im Bit 15 oder 31 steht, ist egal. Ergo, der Befehl ITD kann weggelassen werden, denn er ist nutzlos.
DTR // wandelt die pos. INT-Zahl in eine Realzahl mit pos. VZ.
Was soll daran falsch sein? Falls möglich, bitte eine sachliche Antwort.
Im Übrigen, wieso funktioniert mein Programm eigentlich, wenn es doch angeblich falsch ist?
Auch hier bitte nur sachliche Antworten.
Und an wankeldriver: Lass dich nicht verunsichern, mein Programm ist RICHTIG und hilft dir hoffentlich!


----------



## Unregistrierter gast (3 Februar 2007)

eNDe schrieb:


> Ergo, der Befehl ITD kann weggelassen werden, denn er ist nutzlos.



Ich zitiere mich hier gerne selbst mit den Worten:



Unregistrierter gast schrieb:


> Die Feinheiten der SPS - Programmierung scheinen dir nicht mehr vermittelbar.



Wenn du deinen "Schülern" Halbwahrheiten und offensichtliche Fehler beibringst und nachher dich wie ein Wurm mit Scheinargumenten herauszuwinden suchst, warum soll ich da noch Zeit mit dir verschwenden ?

Ich weis lieber auf deine Fehler hin, so dass die Antwortsuchenden in diesem Forum nicht von dir in die Irre geführt werden.


----------



## volker (3 Februar 2007)

vom prinzip habt ihr beide recht.
wenn man es korrekt machen will ist das was ug schreibt richtiger.
für unerfahrene leute die das nicht wissen führt das evtl zum grossen *?* falls doch ein negativer wert im pew steht.


----------



## Unregistrierter gast (3 Februar 2007)

volker schrieb:


> vom prinzip habt ihr beide recht.
> wenn man es korrekt machen will ist das was ug schreibt richtiger.



Dinge richtig zu machen, kann schonmal nützlich sein...


----------



## eNDe (3 Februar 2007)

Hallo,
ich melde mich gerne nochmal.
So wie Volker argumentiert, tut es richtig gut. Das hat Niveau!
In diesem Forum gibt es aber leider Leute, die grundsätzlich ein Haar in der Suppe finden wollen. Hätte ich nun (nur bezogen auf die vorliegende Aufgabe versteht sich) die Befehlsfolge ITD, DTR verwendet, dann hätte garantiert jemand festgestellt, dass der ITD-Befehl überflüssig ist und dies angemeckert. 
Wenn man im Forum jemandem helfen will (kostenlos versteht sich), dann schreibt man ein Programm. Das ersetzt aber keine Unterrichtsstunde, in der man alle Besonderheiten ausführlich besprechen könnte. Falls der "Geholfene" dann noch Verständnisschwierigkeiten haben sollte, kann er das ja gerne posten. Dann würde ich ihm eine sachliche Erklärung nachliefern.
In einem Punkt habe ich leider keine Erfahrung nämlich:
Wenn ein externer Programmierer einem Auftraggeber ein Programm abliefert (Problem ist ja mit der vorliegenden Aufgabenstellung vergleichbar), inwieweit wird der Auftraggeber in die exakte Programmierstrategie (Befehl für Befehl) eingewiesen. Ich würde eher erwarten das gesagt wird:"Hier ist das Programm, es ist getestet, alles i.O. Die Aufgabe ist damit abgeschlossen".


----------



## Unregistrierter gast (3 Februar 2007)

eNDe schrieb:


> Hätte ich nun (nur bezogen auf die vorliegende Aufgabe versteht sich) die Befehlsfolge ITD, DTR verwendet, dann hätte garantiert jemand festgestellt, dass der ITD-Befehl überflüssig ist und dies angemeckert.



Naja, auch wenn es nix nutzt, Herr Oberleerer, hir nochmal kurz als nähere Erläuterung:

ERST schreibst du (richtig) das Integer +/- 32k darstellt.

DANN willst du eben dieses Integer direkt nach real wandeln und gehst mit keinem Wort darauf ein, dass dass eben nur mit POSITIVEN Integertzahlen funktionieren kann.

Aus deinem Kontext heraus muss es aber so erscheinen, dass das auch mit den von dir einen Satz zuvor erwähnten NEGATIVEN Zahlen auch geht.

Schon im Siemens - Kindergarten lernt man die Bedeutung des ITD vor einer DTR - Wandlung !

Deine Darstellung ist und bleibt grob Falsch.
Das ist kein "Haar" in der Suppe, sondern ne ganze Perrücke.

Wer hier den Lehrer raushängen lassen will, der muss auch schon in der Oberliga mitspielen können !

Du bietest nur 2-klassige Kreisliga.

So, diese Unterrichtstunde kostet dich die Kleinigkeit von 327 Euro Plus Abmahngebühr....


----------



## Ralle (3 Februar 2007)

@eNDe



> Hallo,
> ich melde mich gerne nochmal.
> So wie Volker argumentiert, tut es richtig gut. Das hat Niveau!
> In diesem Forum gibt es aber leider Leute, die grundsätzlich ein Haar in der Suppe finden wollen. Hätte ich nun (nur bezogen auf die vorliegende Aufgabe versteht sich) die Befehlsfolge ITD, DTR verwendet, dann hätte garantiert jemand festgestellt, dass der ITD-Befehl überflüssig ist und dies angemeckert.
> ...


Ich stimme dir zu, ich vesuche auch immer, es den Fragestellern korrekt darzulegen, gelingt natürlich nicht immer, ich wollte ja nie Lehrer werden, hab zu wenig Geduld dazu .

@ug
Sei nicht ungerecht, Fehler korrigieren ist ok, aber nicht persönlich werden (wenn schon, dann per pn oder bei uns im Chat (wo du ja nicht hinwillst/hintraust)) Ich persönlich bin über jeden froh, der helfen will und wenn er einen Fehler macht, kann ich glänzen, ist doch auch schick, oder?


----------



## Unregistrierter gast (3 Februar 2007)

Ralle schrieb:


> @ug
> Sei nicht ungerecht, Fehler korrigieren ist ok, aber nicht persönlich werden (wenn schon, dann per pn oder bei uns im Chat (wo du ja nicht hinwillst/hintraust))



Ich werd doch nicht persönlich ??
Aber wenn ich nen Dummkopf sehe, muss ich ihm das auch sagen ...  

Das mit dem Chat hatte ich dir doch per PM erklärt, oder ??



Ralle schrieb:


> Ich persönlich bin über jeden froh, der helfen will und wenn er einen Fehler macht, kann ich glänzen, ist doch auch schick, oder?



Klar !
Du bist einfach zu gut für diese Welt ...


----------



## volker (3 Februar 2007)

welcher chat ???


----------



## Ralle (3 Februar 2007)

@Volker
Stimmt, du warst ja urlauben

http://www.sps-forum.de/showthread.php?t=11268&highlight=Chat


----------



## Unregistrierter gast (3 Februar 2007)

Ralle schrieb:


> @Volker
> Stimmt, du warst ja urlauben
> 
> http://www.sps-forum.de/showthread.php?t=11268&highlight=Chat



Redet ihr da über mich ? :???:


----------



## zotos (3 Februar 2007)

Unregistrierter gast schrieb:


> Redet ihr da über mich ? :???:


Ja!
Und mehr als Dir lieb ist.


----------



## Unregistrierter gast (3 Februar 2007)

zotos schrieb:


> Ja!
> Und mehr als Dir lieb ist.



Wenn du mich hier verräppeln willst, sag ich das den andréren !


----------



## Question_mark (3 Februar 2007)

*Etwas richtiger ist meist mehr*

Hallo,



			
				Volker schrieb:
			
		

> wenn man es korrekt machen will ist das was ug schreibt richtiger.



Und was spricht dagegen, es gleich "richtiger" zu machen ? Alles andere wäre dann nämlich "falsch". Genau solche Dinge sind die Ursache für viele sporadische Fehler in der Praxis. Das kann man im Schulungsraum dem mit offenen Münder dasitzenden Auditorium vorführen. In der Praxis ist man dann drei Mal in der Woche an solchen Anlagen, weil man die noch etwas richtiger hätte programmieren können  

Gruss

Question


----------



## wankeldriver (4 Februar 2007)

hallo
ich habe es jetzt mit den umwandlungen programmiert und werde die 3 hier vorgeschlagenen programme mal in der praxis testen. mal schauen welches sich für mich am besten eignet.


thx für die hilfe


----------

