<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/</id><updated>2020-02-28T11:19:39.546000Z</updated><subtitle>Recent posts to bestimmen, ob eine Variable Input, Output oder Merker ist</subtitle><entry><title>bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/?limit=25#bfa6" rel="alternate"/><published>2020-02-28T11:19:39.546000Z</published><updated>2020-02-28T11:19:39.546000Z</updated><author><name>heiwil</name><uri>https://forge.codesys.com/u/heiwil/</uri></author><id>https://forge.codesys.com70f83147c84caf62ed2f22125dfe04fa52b3adb8</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Danke für die Info.&lt;/p&gt;
&lt;p&gt;Heiko&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/?limit=25#e4b5" rel="alternate"/><published>2020-02-28T11:19:37.059000Z</published><updated>2020-02-28T11:19:37.059000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com286a2f45abd8f98d71862205b77daeabfd4eb03c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Bernhard Werner&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;heiwil hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Idee 2 von Jochen:&lt;br/&gt;
Das geht!!!&lt;br/&gt;
Aber wie kommt man auf so etwas? Wäre mir nicht im Traum eingefallen, das zu versuchen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das geht nur bei BITs. Liegt eine Variablen als Byte im Adressraum (%MB0)&lt;/p&gt;
&lt;p&gt;dann ist die Länge auch 1. Hintergrund ist der, dass BOOL Variablen bei CoDeSys immer ein BYTE belegen, denn die Prozessoren können niemals auf einzelne Bits im Speicher zugreifen, sonst würde der Code ausgebremst.&lt;/p&gt;
&lt;p&gt;Um das jetzt unterscheiden zu können mit dem Operator Sizeof, wird bei Bits im I/O-Abbild die Länge 0 und bei BOOL im Programm die Länge 1 zurückgeliefert.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/?limit=25#721d" rel="alternate"/><published>2020-02-28T11:19:30.077000Z</published><updated>2020-02-28T11:19:30.077000Z</updated><author><name>heiwil</name><uri>https://forge.codesys.com/u/heiwil/</uri></author><id>https://forge.codesys.com6ec350d72833e09ff411bdab964f84765735a24f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;zuerst einmal Danke für die Hilfe!&lt;/p&gt;
&lt;p&gt;Idee 1 von Klaus:&lt;/p&gt;
&lt;p&gt;Klingt super und logisch geht aber leider so nicht. &lt;/p&gt;
&lt;p&gt;Der ADR Befehl funktioniert nicht mit Bitadressen (also mit per AT zugewiesenen Adressen auf Variablen) sagt der Compiler, hier muß der BITADR Befehl verwendet werden. &lt;/p&gt;
&lt;p&gt;Ich muß also schon VORHER wissen, mit welchem Befehl ich die Adresse des Bits erfahren will. Abgesehen davon liefert BITADR den Offset im Segment und nicht die absolute Adresse. &lt;/p&gt;
&lt;p&gt;Idee 2 von Jochen:&lt;/p&gt;
&lt;p&gt;Das geht!!!&lt;/p&gt;
&lt;p&gt;Aber wie kommt man auf so etwas? Wäre mir nicht im Traum eingefallen, das zu versuchen.&lt;/p&gt;
&lt;p&gt;Ich habe das Ergebnis der Tests angehängt.&lt;/p&gt;
&lt;p&gt;Noch mal Danke&lt;/p&gt;
&lt;p&gt;Heiko&lt;/p&gt;
&lt;p&gt;&lt;img alt="IMG: Adresse.jpg" rel="nofollow" src="https://forum-de.codesys.com//download/file.php?id=347"/&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/?limit=25#2356" rel="alternate"/><published>2020-02-28T11:19:27.623000Z</published><updated>2020-02-28T11:19:27.623000Z</updated><author><name>J Schohaus</name><uri>https://forge.codesys.com/u/j-schohaus/</uri></author><id>https://forge.codesys.coma2f81d79d3cedf13dabc7c2dee070539e207cbd7</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Heiko&lt;/p&gt;
&lt;p&gt;Eine einfache lösung ist die läge von der Variable zu testen.&lt;/p&gt;
&lt;p&gt;Bei ein Bit mit AT ergibt&lt;/p&gt;
&lt;p&gt;SIZEOF ( MyVariable ) &lt;/p&gt;
&lt;p&gt;als rückgabe 0&lt;/p&gt;
&lt;p&gt;Bei ein BOOL ergibt&lt;/p&gt;
&lt;p&gt;SIZEOF ( MyVariable ) &lt;/p&gt;
&lt;p&gt;als rückgabe eine wert von 1&lt;/p&gt;
&lt;p&gt;mfG Jochen&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/?limit=25#026c" rel="alternate"/><published>2020-02-28T11:19:20.661000Z</published><updated>2020-02-28T11:19:20.661000Z</updated><author><name>heiwil</name><uri>https://forge.codesys.com/u/heiwil/</uri></author><id>https://forge.codesys.com16e18ac910312add01b7e417551991f3da6dbea9</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Klaus,&lt;/p&gt;
&lt;p&gt;Danke! Ich werde es probieren. &lt;/p&gt;
&lt;p&gt;Heiko&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/?limit=25#9a34" rel="alternate"/><published>2020-02-28T11:19:18.123000Z</published><updated>2020-02-28T11:19:18.123000Z</updated><author><name>Softwerker59</name><uri>https://forge.codesys.com/u/softwerker59/</uri></author><id>https://forge.codesys.com0690876b2ad223e3ecb3e4a102328f140be6a475</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Heiko,&lt;/p&gt;
&lt;p&gt;falls Deine Steuerung die SysLibGetAddress.lib unterstützt, gibt es eine Möglichkeit. Du kannst mit Hilfe der Lib die Startadressen und Segmentlängen der einzelnen Bereiche (Input, Output, Merker usw.)ermitteln. &lt;/p&gt;
&lt;p&gt;Die Adresse der jeweiligen Variable bekommt man mit der ADR()-Funktion. Jetzt brauchst Du nur noch zu überprüfen, in welchem Bereich die Adresse der Variable liegt.&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Klaus&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>bestimmen, ob eine Variable Input, Output oder Merker ist</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/106842f810/?limit=25#e44e" rel="alternate"/><published>2020-02-28T11:19:15.609000Z</published><updated>2020-02-28T11:19:15.609000Z</updated><author><name>heiwil</name><uri>https://forge.codesys.com/u/heiwil/</uri></author><id>https://forge.codesys.com0c92bf7d2166bc74ab9964de74a092cbb492961c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Zusammen,&lt;/p&gt;
&lt;p&gt;Ich möchte zur Laufzeit in meiner Visualisierung Controls ein- bzw. ausblenden, abhängig davon, ob ein zugehöriger Ein- bzw. Ausgang physikalisch vorhanden ist.&lt;/p&gt;
&lt;p&gt;Dafür benötige ich eine Funktion, die bestimmt, ob eine Variable ein Input bzw. ein Output ist, sprich mit AT auf eine Input oder Output Adresse verdrahtet wurde oder nicht.&lt;/p&gt;
&lt;p&gt;Etwa so:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;VAR_GLOBAL&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bO_K60_1_2&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;AT&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;QX108&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Circular&lt;/span&gt; &lt;span class="n"&gt;Cooling&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;valve&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bO_K60_1_3&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;AT&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;QX108&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Circular&lt;/span&gt; &lt;span class="n"&gt;Cooling&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;lay&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;by&lt;/span&gt; &lt;span class="n"&gt;valve&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bI_F60_1_4&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Heating&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;switch&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;END_VAR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;bRet&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;isInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bO_K60_1_2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;bRet&lt;/span&gt; &lt;span class="n"&gt;sollte&lt;/span&gt; &lt;span class="k"&gt;TRUE&lt;/span&gt; &lt;span class="n"&gt;sein&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bRet&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;isInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bO_F60_1_4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;bRet&lt;/span&gt; &lt;span class="n"&gt;sollte&lt;/span&gt; &lt;span class="k"&gt;FALSE&lt;/span&gt; &lt;span class="n"&gt;sein&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ich habe die oscat.lib durchforstet und auch im Forum gesucht, beides erfolglos. &lt;/p&gt;
&lt;p&gt;Hat von Euch jemand eine Idee?&lt;/p&gt;
&lt;p&gt;Heiko&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>