{"id":1197,"date":"2017-12-30T10:00:47","date_gmt":"2017-12-30T09:00:47","guid":{"rendered":"http:\/\/ftl-auerbach.lima-city.de\/Hubo\/?page_id=1197"},"modified":"2018-04-27T08:52:38","modified_gmt":"2018-04-27T06:52:38","slug":"codesys-library","status":"publish","type":"page","link":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/hubo-programmierung\/codesys-library\/","title":{"rendered":"CODESYS Library"},"content":{"rendered":"<p>Die CODESYS Library &#8222;Hubo for CODESYS&#8220; stellt Funktionsbausteine zur Verf\u00fcgung, welche den Raspberry Pi in eine modulare Soft-SPS verwandelt. Dabei wird die komplette Palette aller Hubo Modelle unterst\u00fctzt, womit ein Ausbau auf bis zu 8 Module mit 64 digitalen Ein- und ebenso vielen Ausg\u00e4ngen realisiert werden kann.<\/p>\n<p>W\u00e4hrend die CODESYS Runtime bereits von Haus aus den 1Wire Bus unterst\u00fctzt, erlauben die Funktionsbausteine <em>HuboDigitalIO<\/em> und <em>HuboAnalogInput<\/em> den Zugriff auf die digitalen und analogen Schnittstellen. Sowohl die CODESYS Treiber, als auch deren Online-Hilfe finden Sie in der <a href=\"http:\/\/ftl-auerbach.lima-city.de\/Hubo\/download-pages\/codesys-package\/\" target=\"_blank\" rel=\"noopener\">Download Rubrik<\/a>.<\/p>\n<p>Anbei seien zwei kurze Code-Beispiele gegeben, die verdeutlichen, wie einfach sich der Zugriff auf die Hardware mittels der CODESYS Library realisieren l\u00e4\u00dft.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Einlesen der analogen Eing\u00e4nge des Hubo mittels der CODESYS Library<\/strong><\/p>\n<p>Das folgende Beispiel liest zyklisch die Rohwerte und Spannungen des AD Wandlers aus und speichert sie in den entsprechenden Variablen.<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\nPROGRAM PLC_PRG\r\nVAR\r\n\u00a0\u00a0 \u00a0myADC\u00a0 \u00a0\u00a0 :\u00a0\u00a0 \u00a0Hubo.HuboAnalogInput := (pSPIMaster := ADR(SPI_Master));\r\n\u00a0\u00a0 \u00a0adValue0 \u00a0:\u00a0\u00a0 \u00a0UINT;\r\n\u00a0\u00a0 \u00a0voltage0\u00a0 :\u00a0\u00a0 \u00a0REAL;\r\n\u00a0\u00a0 \u00a0bResult\u00a0\u00a0 :\u00a0\u00a0 \u00a0Hubo.ERROR\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 := Hubo.ERROR.NO_ERROR;\r\nEND_VAR\r\n\r\n\/\/ Einmalige Initialisierung und puffern der Werte des AD Wandlers. \r\nIF (myADC.Initialize() &lt;&gt; Hubo.ERROR.NO_ERROR) OR (myADC.ReadBuffer() &lt;&gt; Hubo.ERROR.NO_ERROR) THEN\r\n\u00a0\u00a0 \u00a0RETURN;\r\nEND_IF\r\n\r\n\/\/ Auf einzelne AD-Kan\u00e4le mittels GetChannel() zugreifen.\r\nbResult := myADC.GetChannel(adChannel:=0, digit =&gt; adValue0, voltage =&gt; voltage0);\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Einlesen und setzen der digitalen Ein- und Ausg\u00e4nge des Hubo mittels der CODESYS Library<\/strong><\/p>\n<p>Dieses Beispiel liest alle 8 digitalen Eing\u00e4nge des Hubo ein und gibt sie unmittelbar danach auf dessen 8 Digitalausg\u00e4ngen wieder aus.<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\nPROGRAM PLC_PRG\r\nVAR\r\n\u00a0\u00a0 \u00a0\/\/ Die Hubos arbeiten mit Pullup Widerst\u00e4nden an den Eing\u00e4ngen. Der einfacheren Logik wegen invertieren wir hier das Signal der Eing\u00e4nge.\r\n\u00a0\u00a0 \u00a0myMaster \u00a0\u00a0 \u00a0\u00a0 : \u00a0\u00a0 \u00a0Hubo.HuboDigitalIO := (i2cAddress := 16#20, pI2CMaster:=ADR(I2C_Master), inputInvertMask:=16#FF, outputInvertMask:=16#00);\r\n\u00a0\u00a0 \u00a0masterEingang  : \u00a0\u00a0 \u00a0BYTE               := 0;\r\n\u00a0\u00a0 \u00a0masterAusgang \u00a0: \u00a0\u00a0 \u00a0BYTE               := 0;\r\n\u00a0\u00a0 \u00a0bResult\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0: \u00a0\u00a0 \u00a0Hubo.ERROR         := Hubo.ERROR.NO_ERROR;\r\nEND_VAR\r\n\r\n\/\/ Einmalige Initialisierung und F\u00fcllen der MCP23017 Eingangs- und OLAT-Puffer. \r\nIF (myMaster.Initialize() &lt;&gt; Hubo.ERROR.NO_ERROR) OR (myMaster.ReadBuffer() &lt;&gt; Hubo.ERROR.NO_ERROR) THEN\r\n\u00a0\u00a0 \u00a0RETURN;\r\nEND_IF\r\n\r\n\/\/ Gepufferte Eingangswerte in der Variable &quot;masterEingang&quot; merken.\r\nbResult := myMaster.GetInputPortB(inputPortB =&gt; masterEingang);\r\n\r\n\/\/ Nun schleifen wir die digitalen Eing\u00e4nge 1:1 direkt auf die digitalen Ausg\u00e4nge durch... \r\nmasterAusgang := masterEingang; \r\n\u00a0\u00a0 \u00a0\r\n\/\/ ... und schreiben sie als neue digitale Ausgangswerte in den Ausgangspuffer.\r\nbResult := myMaster.SetOutputPortA(outputPortA := masterAusgang); \r\n\r\n\/\/ Alle Ausgangspuffer f\u00fcr diesen Zyklus auf den MCP23017 schreiben.\r\nIF myMaster.WriteBuffer() &lt;&gt; Hubo.ERROR.NO_ERROR THEN\r\n\u00a0\u00a0 \u00a0RETURN;\r\nEND_IF\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die CODESYS Library &#8222;Hubo for CODESYS&#8220; stellt Funktionsbausteine zur Verf\u00fcgung, welche den Raspberry Pi in eine modulare Soft-SPS verwandelt. Dabei wird die komplette Palette aller Hubo Modelle unterst\u00fctzt, womit ein Ausbau auf bis zu 8 Module mit 64 digitalen Ein- und ebenso vielen Ausg\u00e4ngen realisiert werden kann. W\u00e4hrend die CODESYS\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/hubo-programmierung\/codesys-library\/\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":130,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/1197"}],"collection":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/comments?post=1197"}],"version-history":[{"count":19,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/1197\/revisions"}],"predecessor-version":[{"id":1295,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/1197\/revisions\/1295"}],"up":[{"embeddable":true,"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/pages\/130"}],"wp:attachment":[{"href":"https:\/\/ftl-auerbach.lima-city.de\/Hubo\/wp-json\/wp\/v2\/media?parent=1197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}