<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/</id><updated>2020-02-27T14:53:29.433000Z</updated><subtitle>Recent posts to Application slow to update values through script</subtitle><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#83ca" rel="alternate"/><published>2020-02-27T14:53:29.433000Z</published><updated>2020-02-27T14:53:29.433000Z</updated><author><name>mkeller</name><uri>https://forge.codesys.com/u/mkeller/</uri></author><id>https://forge.codesys.coma35b02d3b418aec4c18f6ccdc599eb18507449f2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi zhou.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;zhou hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
exactly, I don't know much about unittesting. I've just searched on internet for some code of unittesting and tried to modified it to my own use. &lt;br/&gt;
Maybe you could help me have a look at my script below.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Unit tests are normally written in the same programming language as the code you want to test. For CODESYS it would be IEC 61131-3. The unit tests used with the Test Manager are written in ST and use the CAA Behaviour Model (see CODESYS help). Our own QA use it to test our compilers and software stacks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;zhou hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Is a Test Manager Plugin for codesys necessary?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;No, the plug-in already exists. The &lt;a class="" href="http://store.codesys.com/codesys-test-manager.html" rel="nofollow"&gt;CODESYS Test Manager&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BR&lt;br/&gt;
Martin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#13b4" rel="alternate"/><published>2020-02-27T14:53:28.882000Z</published><updated>2020-02-27T14:53:28.882000Z</updated><author><name>zhou</name><uri>https://forge.codesys.com/u/zhou/</uri></author><id>https://forge.codesys.coma86589e8a34fc9a063b719acd2d1996ddcea1e23</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;hello Martin,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;M.Keller hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Are we talking about a table of all possible input values and expected output results? Why not use unit testing?! You can split the table into smaller chunks if you don't want to use only one unit test for the whole table.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;exactly, I don't know much about unittesting. I've just searched on internet for some code of unittesting and tried to modified it to my own use. &lt;br/&gt;
Maybe you could help me have a look at my script below.&lt;br/&gt;
Is a Test Manager Plugin for codesys necessary?&lt;/p&gt;
&lt;p&gt;thanks a lot&lt;br/&gt;
Zhou&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="https://forum.codesys.com//download/file.php?id=1054" rel="nofollow"&gt;testGetResource.py &lt;span&gt;&lt;span&gt;[4.89 KiB]&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#1e13" rel="alternate"/><published>2020-02-27T14:53:27.278000Z</published><updated>2020-02-27T14:53:27.278000Z</updated><author><name>mkeller</name><uri>https://forge.codesys.com/u/mkeller/</uri></author><id>https://forge.codesys.com487d5051649328c841ac8e057c177a98afb017f7</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi zhou.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;zhou hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Could you explain more about "The monitoring was developed for the debugging of IEC code"?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The values are collected and sent in the background to minimize the effect on the execution of the application(s). Also the debugging is done by humans which normally would not notice the delay. I had the same problems when implementing new stuff for the IEC Unit Test of the Test Manager.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;zhou hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
4. repeat 1-3 with different values of inputs (I have more than 200 testing inputs)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Are we talking about a table of all possible input values and expected output results? Why not use unit testing?! You can split the table into smaller chunks if you don't want to use only one unit test for the whole table.&lt;/p&gt;
&lt;p&gt;Are you using the python script for Continuous Integration?&lt;/p&gt;
&lt;p&gt;BR&lt;br/&gt;
Martin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#76d8" rel="alternate"/><published>2020-02-27T14:53:26.698000Z</published><updated>2020-02-27T14:53:26.698000Z</updated><author><name>zhou</name><uri>https://forge.codesys.com/u/zhou/</uri></author><id>https://forge.codesys.com7798b27aa3e33947ab98798890b4841323625791</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello Martin,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;M.Keller hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Yes, and it also depends on other factors. The data type of the variable(s), for example. The monitoring was developed for the debugging of IEC code. What do you want to accomplish with your script?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;the script above has been simplified to demonstrate the phenomenon. Actually I have a script for testing a function block in codesys (similar like unittest), the main function of this script is:&lt;br/&gt;
1. write values to the inputs of FB&lt;br/&gt;
2. read output values of FB as actual outputs&lt;br/&gt;
3. compare actual output with expected outputs (test pass or fail)&lt;br/&gt;
4. repeat 1-3 with different values of inputs (I have more than 200 testing inputs)&lt;/p&gt;
&lt;p&gt;After executing this script, I've found as you mentioned, a time delay between step 1 and 2 is necessary, and I was confused about how much should the time delay should be and its background.&lt;/p&gt;
&lt;p&gt;Question:&lt;br/&gt;
Could you explain more about "The monitoring was developed for the debugging of IEC code"?&lt;br/&gt;
Any suggestion about the application of my script? better ideal (solution)? &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;M.Keller hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
What do you mean with "without opening codesys"? Does your batch file execute CODESYS with the parameter for executing a python script?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;@&lt;span class="nv"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;off&lt;/span&gt;
&lt;span class="nv"&gt;SET&lt;/span&gt; &lt;span class="nv"&gt;PROJECT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt;:\&lt;span class="nv"&gt;Users&lt;/span&gt;\&lt;span class="nv"&gt;gong&lt;/span&gt;\&lt;span class="nv"&gt;Documents&lt;/span&gt;\&lt;span class="mi"&gt;01&lt;/span&gt; &lt;span class="nv"&gt;MeinArbeit&lt;/span&gt;\&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="nv"&gt;Aufgaben&lt;/span&gt;\&lt;span class="nv"&gt;Sequencer&lt;/span&gt;\&lt;span class="nv"&gt;LIB&lt;/span&gt;\&lt;span class="nv"&gt;Sequencer&lt;/span&gt;.&lt;span class="nv"&gt;library&lt;/span&gt;
&lt;span class="nv"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;Starting&lt;/span&gt; &lt;span class="nv"&gt;Codesys&lt;/span&gt; ....
&lt;span class="nv"&gt;start&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;wait&lt;/span&gt; &lt;span class="nv"&gt;CoDeSys&lt;/span&gt;.&lt;span class="nv"&gt;exe&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nv"&gt;Profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CODESYS V3.5 SP4 Patch1 pbF&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nv"&gt;noUI&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nv"&gt;runscript&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;C:\Users\gong\Documents\01 MeinArbeit\10 Aufgaben\Sequencer\TestScript\unittest\unittest.py&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;pause&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I've listed my batch file above. If I call the script from batch file I need to increase the delay time between step 1 and 2, as I run this script directly via "Tools-&amp;gt;scripting-&amp;gt;execute script file".&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#6c05" rel="alternate"/><published>2020-02-27T14:53:25.111000Z</published><updated>2020-02-27T14:53:25.111000Z</updated><author><name>mkeller</name><uri>https://forge.codesys.com/u/mkeller/</uri></author><id>https://forge.codesys.com4f3cce498944fb79e06bfeac025b9b895c8885d0</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi zhou.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;zhou hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
1. But if I wrote 3 variables and then read them, I had to increase system.delay() to 500 ms. Does it depend on quantity of variables?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes, and it also depends on other factors. The data type of the variable(s), for example. The monitoring was developed for the debugging of IEC code. What do you want to accomplish with your script?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;zhou hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
2. if I call this python script from a batch file (without opening codesys), this problem is more critical, the delay time needs to be set even higher, to 1000 ms, why?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What do you mean with "without opening codesys"? Does your batch file execute CODESYS with the parameter for executing a python script?&lt;/p&gt;
&lt;p&gt;BR&lt;br/&gt;
Martin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#51ea" rel="alternate"/><published>2020-02-27T14:53:24.433000Z</published><updated>2020-02-27T14:53:24.433000Z</updated><author><name>zhou</name><uri>https://forge.codesys.com/u/zhou/</uri></author><id>https://forge.codesys.com15f05821ad628863af78e4a566868684af1883f6</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I have the same issue, I've wrote a script to write a variable then read the it's value. And found if the time delay between write and read to small, the read value didn't changed after I've changed it.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;__future__&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;print_function&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
\&lt;span class="c1"&gt;# Read / Write Variable without opening codesys&lt;/span&gt;
\&lt;span class="c1"&gt;# this file will be called from a batch file.&lt;/span&gt;
\&lt;span class="c1"&gt;#&lt;/span&gt;
\&lt;span class="c1"&gt;# Project name will be set with batch and transfered via enviroment variable&lt;/span&gt;
\&lt;span class="c1"&gt;#######################&lt;/span&gt;
\&lt;span class="c1"&gt;# Open Codesys project&lt;/span&gt;
\&lt;span class="c1"&gt;#######################&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;openProject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PROJECT&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="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;" opening project: "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PROJECT&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;proj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PROJECT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
\&lt;span class="c1"&gt;##############################&lt;/span&gt;
\&lt;span class="c1"&gt;# creating online application&lt;/span&gt;
\&lt;span class="c1"&gt;##############################&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;createOnlineApp&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="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scriptName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;": creating online application ..."&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="c1"&gt;# onlineApp = online.create_online_application(proj.active_application)&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# if it is already online manually&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="k"&gt;global&lt;/span&gt; &lt;span class="n"&gt;onlineApp&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;onlineApp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;online&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create_online_application&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
\&lt;span class="c1"&gt;##############################&lt;/span&gt;
\&lt;span class="c1"&gt;# Lgoin&lt;/span&gt;
\&lt;span class="c1"&gt;##############################&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;login&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="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scriptName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;": login ..."&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="k"&gt;global&lt;/span&gt; &lt;span class="n"&gt;onlineApp&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;onlineApp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OnlineChangeOption&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Try&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;True&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="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;onlineApp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;application_state&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ApplicationState&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&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="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scriptName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;": Run Application"&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="n"&gt;onlineApp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;start&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="k"&gt;else&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="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scriptName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;": Application is already running"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Sequencer.iPythoncounter"&lt;/span&gt;
&lt;span class="n"&gt;iValue&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
\&lt;span class="c1"&gt;# scriptname&lt;/span&gt;
&lt;span class="n"&gt;scriptName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vm"&gt;__file__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ReadVar&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;Value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;onlineApp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_value&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&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="c1"&gt;# INT#5&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# print(" type of Value is:", type(Value))&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;#print("variables to read:",var)&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# print(" value of %s is: %s"% (var, Value))&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;" read: "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;WriteVar&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;ValueToWrite&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;iValue&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;onlineApp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_prepared_value&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Sequencer.iPythoncounter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ValueToWrite&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;onlineApp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write_prepared_values&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="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;'__main__'&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="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;: ####### script is running as main ##############"&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scriptName&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="k"&gt;global&lt;/span&gt; &lt;span class="n"&gt;onlineApp&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;createOnlineApp&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;login&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="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;11&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="n"&gt;iValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&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="c1"&gt;#write variables&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="n"&gt;WriteVar&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="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"written: "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;iValue&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="c1"&gt;# sleep 10 ms&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="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&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="c1"&gt;# Read variables&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="n"&gt;ReadVar&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="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;/pre&gt;&lt;/div&gt;


&lt;p&gt;In my script I've only changed a Int variable. It worked fine if I increase:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;delay&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;/pre&gt;&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;But if I wrote 3 variables and then read them, I had to increase system.delay() to 500 ms. Does it depend on quantity of variables?&lt;/li&gt;
&lt;li&gt;if I call this python script from a batch file (without opening codesys), this problem is more critical, the delay time needs to be set even higher, to 1000 ms, why?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="IMG: read_write.png" rel="nofollow" src="https://forum.codesys.com//download/file.php?id=1041"/&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#8c57" rel="alternate"/><published>2020-02-27T14:53:23.841000Z</published><updated>2020-02-27T14:53:23.841000Z</updated><author><name>mkeller</name><uri>https://forge.codesys.com/u/mkeller/</uri></author><id>https://forge.codesys.com764b3875296ee592a7d7966bc33285eeda778e22</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;williamc hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
However, when I perform the same action through script there is quite a delay (almost 3 seconds) before the variable becomes updated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The monitoring works through events which depend on the main message queue. While running a script the main message queue is mostly blocked. Some methods of the CODESYS script engine contain some code to process the main message queue.&lt;/p&gt;
&lt;p&gt;Sometimes that is not enough and you have to add one or more of ```&lt;/p&gt;
&lt;p&gt;system.delay(n)&lt;/p&gt;
&lt;p&gt;``` in your script. It processes the main message queue while waiting for the specified time to elapse. The time should be bigger then 200ms but it depends on the PLC, the amount and type of expressions which are monitored at that moment.&lt;/p&gt;
&lt;p&gt;Regards,&lt;br/&gt;
Martin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Application slow to update values through script</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/dd9ca66854/?limit=25#e1a6" rel="alternate"/><published>2020-02-27T14:53:22.154000Z</published><updated>2020-02-27T14:53:22.154000Z</updated><author><name>williamc</name><uri>https://forge.codesys.com/u/williamc/</uri></author><id>https://forge.codesys.com3bb34e0e2550d7be4c0eb9a66c1db7aac410c7eb</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I have a function block reading back a mapped IO variable. The function has an input which effectively changes which variable to return.&lt;/p&gt;
&lt;p&gt;When I look at this function running under CoDeSys it is very quick to change as I change the input value.&lt;/p&gt;
&lt;p&gt;However, when I perform the same action through script there is quite a delay (almost 3 seconds) before the variable becomes updated.&lt;/p&gt;
&lt;p&gt;Any suggestions as to why?&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>