<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/d1ffb170a3/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/d1ffb170a3/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/CODESYS-V2/thread/d1ffb170a3/</id><updated>2020-02-27T23:18:23.389000Z</updated><subtitle>Recent posts to Function block with an array of unknown size as a VAR_IN_OUT</subtitle><entry><title>Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/d1ffb170a3/?limit=25#ad7c" rel="alternate"/><published>2020-02-27T23:18:23.389000Z</published><updated>2020-02-27T23:18:23.389000Z</updated><author><name>gabriele-eureka</name><uri>https://forge.codesys.com/u/gabriele-eureka/</uri></author><id>https://forge.codesys.comf07780abe8a538217501857e82ddac061f1ddbac</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;VAR_INPUT&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="nt"&gt;NewVal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_VAR&lt;/span&gt;
&lt;span class="nt"&gt;VAR_IN_OUT&lt;/span&gt; &lt;span class="nt"&gt;CONSTANT&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Ellements&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_VAR&lt;/span&gt;
&lt;span class="nt"&gt;VAR_IN_OUT&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="nt"&gt;History&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;ARRAY&lt;/span&gt; &lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="bp"&gt;..&lt;/span&gt;&lt;span class="nx nx-Member"&gt;Ellements&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt; &lt;span class="nt"&gt;OF&lt;/span&gt; &lt;span class="nt"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_VAR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/d1ffb170a3/?limit=25#e784" rel="alternate"/><published>2020-02-27T23:18:18.863000Z</published><updated>2020-02-27T23:18:18.863000Z</updated><author><name>hugo</name><uri>https://forge.codesys.com/u/hugo/</uri></author><id>https://forge.codesys.com64f41ff02581e800f4708e2b788b4fe106bec75f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;if you are interested you can find many array functions in the open source library OSCAT.&lt;br/&gt;
many of the array functions use pointer to operate on unknown size of arrays.&lt;br/&gt;
you can use our source code as sample to develop your own functions&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/d1ffb170a3/?limit=25#4e83" rel="alternate"/><published>2020-02-27T23:18:17.032000Z</published><updated>2020-02-27T23:18:17.032000Z</updated><author><name>Andreaz</name><uri>https://forge.codesys.com/u/andreaz/</uri></author><id>https://forge.codesys.come58d71594c6074a1fe9f2c341970c57563a897b1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;jason.the.adams hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
I've never thought to accomplish an array this way. Would you mind clearing up a few details?&lt;br/&gt;
1. What is the purpose of the input variable, History?&lt;br/&gt;
2. Where are you defining "temp" and is it another Pointer?&lt;br/&gt;
3. If you wouldn't mind briefly explaining what's going on in your example, that'd be very helpful; it'd be great to really understand what's going on here.&lt;br/&gt;
Thanks! &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;#1: It's the same as the history in your example, a input array of values, but instead of just writing History as the input you write Adr(History&lt;span&gt;[0]&lt;/span&gt;)&lt;br/&gt;
#2: My bad, all Temp should be Item&lt;br/&gt;
#3: Basically my example just fills the input history with the value;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt;
  &lt;span class="nv"&gt;Size&lt;/span&gt;:&lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;; (* Size of the array *)&lt;/span&gt;
  &lt;span class="nv"&gt;Value&lt;/span&gt;:&lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;; &lt;/span&gt;
  &lt;span class="nv"&gt;History&lt;/span&gt;: &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;; (* Same as History: ARRAY[0..Size-1] OF INT; *)&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
  &lt;span class="nv"&gt;Item&lt;/span&gt;: &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
...
&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;Just&lt;/span&gt; &lt;span class="nv"&gt;save&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;copy&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;History&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; 
&lt;span class="nv"&gt;Item&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;History&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;I&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;Size&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;History&lt;/span&gt;[&lt;span class="nv"&gt;I&lt;/span&gt;]:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Value&lt;/span&gt;&lt;span class="c1"&gt;; *)&lt;/span&gt;
  &lt;span class="nv"&gt;Item&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Value&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;Goto&lt;/span&gt; &lt;span class="nl"&gt;the&lt;/span&gt; &lt;span class="k"&gt;next&lt;/span&gt; &lt;span class="nv"&gt;item&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;array&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
  &lt;span class="nv"&gt;Item&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Item&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Temp&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_FOR&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/d1ffb170a3/?limit=25#de65" rel="alternate"/><published>2020-02-27T23:18:11.989000Z</published><updated>2020-02-27T23:18:11.989000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.comfbf8efed28129bb72e423e3d0b8be90bd966ff27</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; per@fluidtronic.com&lt;/p&gt;
&lt;p&gt;Hello&lt;br/&gt;
I've not tried the suggestion by Andreas yet, will do when time let me.&lt;/p&gt;
&lt;p&gt;The variable History is a set of samples of an input. I want to do some calculation on them&lt;br/&gt;
and treat the array as a FIFO. All this is not a problem.&lt;/p&gt;
&lt;p&gt;The question is related to how to declear an input as an array of unknown size at compile time.&lt;br/&gt;
All I've tried so far is not valid syntax&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/d1ffb170a3/?limit=25#fb48" rel="alternate"/><published>2020-02-27T23:18:10.183000Z</published><updated>2020-02-27T23:18:10.183000Z</updated><author><name>jason.the.adams</name><uri>https://forge.codesys.com/u/jason-the-adams/</uri></author><id>https://forge.codesys.com0fefe2dd7f4051dd011af1384ca3f9ab2f99b60b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I've never thought to accomplish an array this way. Would you mind clearing up a few details?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is the purpose of the input variable, History?&lt;/li&gt;
&lt;li&gt;Where are you defining "temp" and is it another Pointer?&lt;/li&gt;
&lt;li&gt;If you wouldn't mind briefly explaining what's going on in your example, that'd be very helpful; it'd be great to really understand what's going on here.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thanks! &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/d1ffb170a3/?limit=25#98bb" rel="alternate"/><published>2020-02-27T23:18:05.572000Z</published><updated>2020-02-27T23:18:05.572000Z</updated><author><name>Andreaz</name><uri>https://forge.codesys.com/u/andreaz/</uri></author><id>https://forge.codesys.com3f26f46400130aafda6f56924c8718906f0b9701</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;use a integer pointer as input;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt;
  &lt;span class="nv"&gt;Size&lt;/span&gt;:&lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;Value&lt;/span&gt;:&lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;History&lt;/span&gt;: &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
  &lt;span class="nv"&gt;Item&lt;/span&gt;: &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
...
&lt;span class="nv"&gt;Item&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Temp&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;I&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;Size&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="nv"&gt;Temp&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Value&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;Temp&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Temp&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Temp&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_FOR&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>Function block with an array of unknown size as a VAR_IN_OUT</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/d1ffb170a3/?limit=25#9d06" rel="alternate"/><published>2020-02-27T23:18:03.908000Z</published><updated>2020-02-27T23:18:03.908000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com14ee0a9455b8aa7b955cec5b5f6c89813ad04c27</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; per@fluidtronic.com&lt;/p&gt;
&lt;p&gt;Hello&lt;br/&gt;
I'm trying to write a function block (in ST) that shall do some operation on an array.&lt;br/&gt;
Preferbly the size of the array should be defined by a VAR_INPUT&lt;/p&gt;
&lt;p&gt;Currently the variable declarations are as follows.&lt;br/&gt;
VAR_INPUT&lt;br/&gt;
    Ellements:INT;&lt;br/&gt;
    NewVal:INT;&lt;br/&gt;
END_VAR&lt;br/&gt;
VAR_IN_OUT&lt;br/&gt;
    History: ARRAY &lt;span&gt;[1.. 10]&lt;/span&gt; OF INT;&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;p&gt;My intention is to replace the fixed size ARRAY&lt;span&gt;[1..10]&lt;/span&gt; to &lt;span&gt;[1..Ellements]&lt;/span&gt; e.g. a programatically&lt;br/&gt;
changeable number of ellements in the array.&lt;br/&gt;
Anyone ?&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>