Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Nachrichten - shrimps

Seiten: 1 ... 3 4 [5]
61
Bestehende Module / Existing Modules / Re: Heat-temp
« am: 02. September 2015, 21:56:31 »
Hi,
bin zwar noch in Twincat V2 unterwegs, aber was sind das für Variablentypen am Ausgang ?
Fragst du dort Bit-Positionen ab ?
Dies wäre ggf. je nach Compilertyp nicht sinnvoll da du ggf. nicht weisst wie der Compiler ein Bool darstellt...

Ich kann das leider nicht auf deiner FUP erkennen.

Und wenn ich die Beschreibung des Boiler lese muss man ggf. deutlich mehr Parameter einstellen als du hier getan hast ?
Ich sehe nur deinen Temp-Fühler am Oberen-Eingang und den Rest unbeschaltet ?
Schon mal für Testzwecke die anderen Parameter beschaltet ?

LG
Shrimps


62
Bestehende Module / Existing Modules / Re: Heat-temp
« am: 02. September 2015, 03:14:41 »
Hi,
wäre prima wenn du uns einen Codeausschnitt posten könntest.

Ansonsten verstehe ich leider deine Frage nicht.

Der Baustein ist ja nicht alzu gross...

Welches System, welche Umgebung ?

LG
Shrimps

63
Bestehende Module / Existing Modules / Actuator_3P umgeschrieben
« am: 12. August 2015, 21:04:38 »
Hallo zusammen,
nachdem ich ziemlich lange mit dem Actuator_3p gekämpft hatte, habe ich ihn kurzerhand gekürzt und ein wenig für meine Belange umgeschrieben.

Ich habe einen 4-Wege-Mischer mit klassicher 3 Punkt-Ansteuerung (L,N,R) mit internen Endschaltern.
Ich habe mir 2 Magnetendschalter (SMC) mit einem Minimagneten im Drehknopf hinzugebaut und kann nun prima die beiden Positionen sauber abfangen.

Im wesentlichen habe ich nur noch eine Kalibrierung drin und nur noch zufahren, wenn nicht gebraucht.

Also sehr speziell für meinen Heizungsmischer.

Da ich viele gute Ideen hier im OSCAT gefunden habe, poste ich einfach mal meinen geänderten Code hier rein...
Vorsicht: Er nennt sich nun ACTUATOR_3PN, N=Neu
Ggf. findet der eine oder andere Gefallen und / oder Änderungen...
Ich habe versucht weitestgehend englisch zu kommentieren, bitte Nachsicht :)

LG
Shrimps
(* @NESTEDCOMMENTS := 'Yes' *)
(* @PATH := '\/Engineering\/control' *)
(* @OBJECTFLAGS := '0, 8' *)
(* @SYMFILEFLAGS := '2048' *)
FUNCTION_BLOCK ACTUATOR_3PN
VAR_INPUT
EN : BOOL; (* enable actuator *)
IN : BYTE; (* Signal Byte *)
END_CLOSE : BOOL; (* Terminating Close *)
END_OPEN : BOOL; (* Terminating Open *)
END_VAR
VAR_OUTPUT
OPEN : BOOL; (* Signal for open-Valve *)
CLOSE : BOOL; (* Signal for Closing-Valve *)
POS : BYTE; (* Virtual Position *)
STATUS : BYTE; (* STEPS: 100/230 is good *)
END_VAR
VAR
ramp : _RMP_NEXT; (* lookup for direction *)
tx : TIME; (* the exakt time() *)
next_cal : TIME; (* next calibration pending ? *)
start : TIME; (* Every time we need timedeltas *)
bShutDown : BOOL; (* when EN is off we close the Valve, this is our Memory *)
END_VAR
VAR CONSTANT
T_RUN : TIME := t#80s; (* maximimum runtime of Valve, longer then time for endswitch *)
T_CAL : TIME := t#6h; (* permanently make Calibration *)
t_LockOut : TIME := t#5s; (* Lock for changing Direction too fast *)
T_RELAY : TIME := t#1500ms; (* Locktime for smooth change of relay-Direction *)
END_VAR

(* Original:
version 2.0 28. jan 2010
programmer hugo
tested by oscat

actuator_3P is an interface for a 3 point actuator.
a 3P actuator is a motor with 2 directions that drives a valve or flap.
the position of the valve or flap is controlled by runtime of the motor foreward or backward.
the available inputs are:
IN specifies the position of the actuator, 0 = 0% and 255 = 100%.

30.07.2015 Shrimps:
Special Version for heating-Mixers with 2 external Position-Switches
renew most steps
Implemented security: When disable, run close first !
If no switch, all will be based on Timers like the original code
*)

(* @END_DECLARATION := '0' *)
tx := TIME(); (* read system timer *)

(* all steps will be done with these sequence *)
CASE status OF
0: (* Init, will start at Runup or called by Calibration *)
OPEN := FALSE; (* Power off *)
CLOSE := FALSE; (* Power off *)
ramp.TR := T_RUN; (* Fill ramp with default time rising *)
ramp.TF := T_RUN; (* Fill ramp with default time falling *)
start := tx; (* keep Time in mind *)
status := 5; (* do next step *)

5: (* Wait some time, better for Relay, perhaps comming from other direction *)
IF tx - start > T_RELAY THEN (* Wait *)
start := tx; (* keep Time in mind *)
status := 10; (* do next step *)
END_IF

10: (* Closing the valve until Timeout or Position reached *)
CLOSE := TRUE; (* give valve power *)
IF tx - start > T_RUN OR END_CLOSE THEN (* Timeout or final Switch reached ? *)
CLOSE := FALSE; (* Stop down *)
start := tx; (* keep Time in mind *)
status := 20; (* do the next step *)
END_IF

20: (* Wait some seconds to avoid damage of Motor or Relays *)
IF tx - start > T_RELAY THEN (* Wait for rewind, better for Relay *)
start := tx; (* keep Time in mind *)
status := 30; (* do the next step *)
END_IF

30: (* opening Valve *)
OPEN := TRUE;
IF tx - start > T_RUN OR END_OPEN THEN (* Timeout or Position reached ? *)
OPEN := FALSE; (* Off all Power *)
ramp.TR := tx - start; (* Uptime *)
ramp.IN := 255; (* set ramp pos to max value, we reached Openposition *)
start := tx; (* keep Time in mind *)
STATUS := 40; (* do the next step *)
END_IF

40: (* pause for some s its better for the relays instead to change direction immediately *)
IF tx - start > T_RELAY THEN (* Wait for rewind, better for Relay *)
start := tx; (* keep Time in mind *)
status := 50; (* do the next step *)
END_IF

50: (* now closing the valve *)
CLOSE := TRUE; (* Close valve *)
IF tx - start > T_RUN OR END_CLOSE THEN (* Timeout or Position reached ? *)
CLOSE := FALSE; (* Stop power *)
ramp.TF := tx - start; (* TF to be filled! *)
ramp.IN := 0; (* Ramp position set to zero *)
start := tx; (* keep Time in mind *)
STATUS := 60; (* do next step *)
END_IF

60: (* pause for some s its better for the relays instead to change direction immediately *)
IF tx - start > T_RELAY THEN (* Wait some s for rewind, better for Relay *)
next_CAL := tx + T_CAL; (* Update Calibration Time *)
start := tx; (* keep Time in mind *)
STATUS := 100; (* do next step *)
END_IF


100: (* normal operation *)
IF NOT en THEN (* case of power off this module *)
status := 200; (* close the valve ! *)
ELSE (* standard operation: *)
bShutDown := FALSE; (* clear the closing-flag *)
END_IF

(* check for auto calibration *)
(* no lookup for then nearest Position, because opening could make damage by heatings *)
IF tx > next_cal THEN (* we reached the next calibration-time *)
status := 0; (* full restart *)
END_IF

(* do the full job now: *)
(* set ramp generator to IN *)
ramp.IN := IN;
(* Postitioning the valve *)
OPEN := ramp.UP ;
CLOSE := ramp.DN ;

200: (* Shutdown until Close-Position *)
OPEN := FALSE;
status := 210; (* do the next step *)
start := tx; (* keep Time in mind *)

(* We closed the valve before ? *)
(* or is it closed ? *)
IF END_CLOSE OR bShutDown THEN
status := 230; (* wait for ENable *)
END_IF

210: (* Close valve *)
CLOSE := TRUE; (* Power on *)
IF tx - start > T_RUN OR END_CLOSE THEN (* Timeout or Position reached ? *)
CLOSE := FALSE; (* Stop down *)
start := tx; (* keep Time in mind *)
status := 220; (* do the next step *)
END_IF

220: (* Wait for relays *)
IF tx - start > T_RELAY THEN (* Wait some s for rewind, better for Relay *)
bShutDown := TRUE; (* we closed successfully *)
STATUS := 230; (* do next step *)
END_IF

230: (* Shutdown finished, waiting for restart *)
IF en THEN (* we want to enable this FB ? *)
status := 100; (* go to normal operating mode *)
END_IF

END_CASE;

(* internal flap simulation and output activation *)
ramp(OUT := POS, TL := t_LockOut);

(* adjust position if end switch is active *)
IF END_OPEN THEN
pos := 255;
ramp.IN := 255;
END_IF

IF END_CLOSE THEN
pos := 0;
ramp.IN := 0;
END_IF

END_FUNCTION_BLOCK


64
Hallo Andy_Scheck,
mittlerweile hatte ich es ans laufen bekommen.
Umgebung:
Twincat 2.x auf PC.

LG
Shrimps

65
oscat.lib fuer Step 7 / Re: ONTIME TIA V13 S7-1517F
« am: 02. Juli 2015, 14:13:06 »
Hello,
i am using Ontime in Twincat(Codesys) for about 3 Months and it works fine.

Sorry, no Siemens...

Regards
Shrimps

66
Codesys 2 / Re: Kommunikationsüberwachung
« am: 01. Juli 2015, 13:13:38 »
Hi,
bin mir nicht ganz sicher, aber ist SNMP in etwa was du suchst ?
https://de.wikipedia.org/wiki/Simple_Network_Management_Protocol

LG
Shrimps

67
Hi,
ich empfehle dir das sps-forum.de

Dort gibt es extrag WAGO und auch das Wago-Supportteam ist dort vertreten...
Wenn man dort recht moderat nach Hilfe ruft, wird es die wohl auch geben.
Gib in jedem Falls Details an: Maschine, Typ, Verbindungsdetails, DHCP etc.

LG
Shrimps

68
Hi cholopa,
in first time i had some problems understanding the software too...
My best way was to export the whole oscat-lib to an oscat.exp file and then everytime i was looking for something i openend in an standard editor and search for i.e. DELAY and found...
Then Cutn Paste

Hope that helps

Sorry for the "small" english

best regards
Shrimps

69
Hi,
deine Frage nach einem Baustein...
(Gf. liest du mal OSCAT_basic333.pdf komplett duch...)

Ansonsten ist das nun leicht:
In einer Schleife (For / Next) von -12 bis 3 zählen, Positiven Counter von 1-16 mitlaufen lassen
und wenn       min-Countergrenze < Ist-temperatur < max-Countergrenze dann ist der Counter dein 4 Bit-Wert
Das ganze 2 Mal
Fertig

LG
Shrimps

BTW: Kannst du überhaupt ST oder SCL?
Welche Steuerung ?

70
Hallöchen,
nachdem ich mir das mal aufgemalt hatte: -12=1, -11=2 etc. bin ich darauf gekommen, das du nur -12 bis + 19 Grad darstellen kannst...
Aber egal: Ich würde die -12 bis +3 (Relais 1-16 IC1) oder +4 bis +19 (Relais 1-16 IC2) in einem Byte darstellen, dann alles ein Bit nach links schieben und das erste Bit abhängig von +3 oder +4 Grad machen.

Fertig.

LG
Shrimps

71
Hi,
also wenn ich das richtig verstanden habe, könnte man es folgendermaßen angehen:
Alle "TRUE´s" in einem Array einsammeln und den zugehörigen Index(Eingang) merken.
Dann eine Zufallszahl von 1- ArrayAnzahl erzeugen und auf das Array zeigen !

Deutlich aufwendiger: Noch zusätzlich das Datum mitschleppen um eine Tageswiederholung zu vermeiden...

fertig.

LG
Shrimps
BTW: Im sps-forum.de bist du für allgemeine Fragen ggf. besser aufgehoben

72
oscat.lib fuer TwinCAT/CoDeSys / Google Kalender mit Twincat auslesen
« am: 16. Februar 2015, 23:23:11 »
Hallo zusammen,
ich habe durch Lernen aus eurer OSCAt den Yahoo-Weather zum laufen gebracht...

Nun würde es mich interessieren, wie man den Kalender von Google auslesen könnte ?

Wäre das nicht etwas brauchbares um sich eine komplexe Zeitschaltuhr zu ersparen und alles via Google Kalender einträgt mit einem Stichwort
und die SPS fragt das alles ab...

Wie müsste ich das angehen, bzw. hat da jemand schon mal was versucht ?

LG
Shrimps

73
Hallo GA_Home,
das ist super das du das so schnell geschafft hast.
Ich bin Einsteiger und hab es nicht ans laufen bekommen...

Könnte ich (oder alle hier) einen Ausschnitt deines Codes (möglichst ST) bekommen ?

Vielen Dank


Hallo!

Ich habe gestern die beiden Bausteine WORLD_WEATHER und YAHOO_WEATHER auf meiner Steuerung CX1020 (CE 6.0) getestet.
Ich habe das ohne große Probleme geschaft (DANKE OSCAT)

Wenn jemand probleme damit hat, kann ich vielleicht helfen.
Ich habe dann ca 30 Minuten Programmieraufwand gehabt.

74
BECKHOFF / Re: Kleines Problem mit der Mysql-Demo
« am: 10. Oktober 2014, 12:54:04 »
Hallo peewit,
besten Dank für die Infos.

Das mit dem Punkt und Komma habe ich mir auch so gedacht...

Einen Baustein zu entwickeln welcher nur einen Datensatz liest werde ich versuchen, aber als Neuling in Sachen Twincat / Codesys dauerts halt...

Man schreibt sich...

LG

75
BECKHOFF / Kleines Problem mit der Mysql-Demo
« am: 09. Oktober 2014, 08:23:05 »
Hallo liebe Forengemeinde,
ich bin hier neu und kurz zu mir:
Ich entwickle seit ca. 25 Jahren Software, die letzten Jahre schwerpunkt Mysql.

Nun bin ich in die Beckhoff Twincat Welt eingestiegen, erstmal V2.

Das von euch erstellte Beispiel mit Mysql habe ich nach ein paar kleineren Problemen ins laufen bekommen.
(Mein dümmster Fehler war nicht zu wissen, das man den tcp-Server benötigt, ich bekam keine Connection..)

Nun läufts.

Mein Anliegen:

Beim loggen eines Realwertes kam bei mir immer der Fehler DATA-truncated ???

Nach suchen fand ich heraus, das bei der Wandlung ein Komma als default herrscht.

Erst als ich vorher folgendes machte:

(* ACHTUNG: Wenn hier nicht auf Punkt umgeschaltet wird, übergibt die Routine _to_strf als Default ein Komma und Mysql mault bei "35,56", es werden "36.56" erwartet. *)
x2.D:='.';

lief das System.

Liegt dieses Verhalten an meinem Mysql-Server oder sehe ich hier was falsch.

Dann noch eine weitere Frage:

Hat schon jemand einen baustein entwickelt um einen Datensatz mit einer/mehreren Daten zu lesen und  einer Variablen zuzuweisen ?

Gibt es einen "einfacheren" Baustein als den Logger um einen einzelnen Befehl abzusetzen ?

Sorry für die vielen Fragen / Wünsche.

Ich hören gerne eure Meinung
LG

Im Anhang die Demo wie Sie bei mir lief...







[gelöscht durch Administrator]

Seiten: 1 ... 3 4 [5]