<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Cache data</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/51d4ac6e65/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/51d4ac6e65/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/51d4ac6e65/</id><updated>2020-12-22T11:06:49.697000Z</updated><subtitle>Recent posts to Cache data</subtitle><entry><title>Cache data</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/51d4ac6e65/?limit=25#b388" rel="alternate"/><published>2020-12-22T11:06:49.697000Z</published><updated>2020-12-22T11:06:49.697000Z</updated><author><name>i-campbell</name><uri>https://forge.codesys.com/u/i-campbell/</uri></author><id>https://forge.codesys.com2a7539929e6502d199ff9daa1e9e267cb6285966</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="nv"&gt;VAR_GLOBAL&lt;/span&gt; &lt;span class="nv"&gt;PERSISTENT&lt;/span&gt; &lt;span class="nv"&gt;RETAIN&lt;/span&gt;
    &lt;span class="nv"&gt;aAuthData&lt;/span&gt; : &lt;span class="nv"&gt;ARRAY&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;..&lt;span class="mi"&gt;300&lt;/span&gt;] &lt;span class="nv"&gt;OF&lt;/span&gt; &lt;span class="nv"&gt;AuthData&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;udiInsertIndex&lt;/span&gt; : &lt;span class="nv"&gt;UDINT&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;udiReadIndex&lt;/span&gt; : &lt;span class="nv"&gt;UDINT&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;processed&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;

&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;Adding&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;:
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xNewData&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
    &lt;span class="nv"&gt;udiInsertIndex&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;udiInsertIndex&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;MOD&lt;/span&gt; &lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;aAuthData&lt;/span&gt;[&lt;span class="nv"&gt;udiInsertIndex&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;newAuthData&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;xNewData&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;

&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;Checking&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;:
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;udiReadIndex&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;udiInsertIndex&lt;/span&gt; &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;processed&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
    &lt;span class="nv"&gt;udiReadIndex&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;udiReadIndex&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;MOD&lt;/span&gt; &lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;processed&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;

&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;Process&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;processed&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;Process&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;processed&lt;/span&gt; &lt;span class="nv"&gt;when&lt;/span&gt; &lt;span class="nv"&gt;finished&lt;/span&gt;
    &lt;span class="nv"&gt;DoSomethingWith&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;aAuthData&lt;/span&gt;[&lt;span class="nv"&gt;udiReadIndex&lt;/span&gt;], &lt;span class="nv"&gt;processed&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_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>Cache data</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/51d4ac6e65/?limit=25#41fb/fb05" rel="alternate"/><published>2020-12-22T10:36:54.617000Z</published><updated>2020-12-22T10:36:54.617000Z</updated><author><name>andras-mozes</name><uri>https://forge.codesys.com/u/andras-mozes/</uri></author><id>https://forge.codesys.comdddcc3d963cd7402700a349837727b4efb484c36</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="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="s1"&gt;'qualified_only'&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;VAR_GLOBAL&lt;/span&gt; &lt;span class="n"&gt;PERSISTENT&lt;/span&gt; &lt;span class="n"&gt;RETAIN&lt;/span&gt;
    &lt;span class="n"&gt;aAuthData&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;ARRAY&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;AuthData&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;p&gt;How could I set-up a circular array?&lt;br/&gt;
Would you mind showing some resources, examples? :)&lt;/p&gt;
&lt;p&gt;Thanks for your help in advance.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Cache data</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/51d4ac6e65/?limit=25#41fb" rel="alternate"/><published>2020-12-22T10:33:20.741000Z</published><updated>2020-12-22T10:33:20.741000Z</updated><author><name>i-campbell</name><uri>https://forge.codesys.com/u/i-campbell/</uri></author><id>https://forge.codesys.com6d5971f744e3c424ca3e3fd60cf37cac042a315b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;If the requirement is really not to lose &lt;em&gt;any&lt;/em&gt; then the file-based persistence manager may be too slow for you.&lt;br/&gt;
Use a controller with non-volatile ram setup for retain data. Then use a circular array stored in VAR PERSISTENT.  The array size should be as big as the maximum number of userids you intend to buffer.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Cache data</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/51d4ac6e65/?limit=25#75cb" rel="alternate"/><published>2020-12-17T20:23:01.405000Z</published><updated>2020-12-17T20:23:01.405000Z</updated><author><name>andras-mozes</name><uri>https://forge.codesys.com/u/andras-mozes/</uri></author><id>https://forge.codesys.com9f0fd80a4b138e8452b2d9d9817a8d4b75c2f4a3</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;strong&gt;Hello&lt;/strong&gt;,&lt;/p&gt;
&lt;p&gt;What would be an ideal solution to save data before processing them.&lt;/p&gt;
&lt;p&gt;I mean I am reading strUserID and I want to persist them before saving them to a MySQL database.&lt;/p&gt;
&lt;p&gt;Actually I would like to use 2 tasks. One collecting strUserID while another one handling MySQL connection and sending of them.&lt;/p&gt;
&lt;p&gt;The problem that I would like to save the strUserID before sending them thus in case of power outage, I didn't lose any strUserID.&lt;/p&gt;
&lt;p&gt;I don't know whether to use collections (persisted) or persistent manager (as txt) or var persistent?&lt;/p&gt;
&lt;p&gt;Thanks for your help in advance. &lt;/p&gt;
&lt;p&gt;BR!&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>