<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to POUs for Implicit Checks in library</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5cc7d07e03/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5cc7d07e03/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/5cc7d07e03/</id><updated>2020-02-27T13:54:11.592000Z</updated><subtitle>Recent posts to POUs for Implicit Checks in library</subtitle><entry><title>POUs for Implicit Checks in library</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5cc7d07e03/?limit=25#f8ce" rel="alternate"/><published>2020-02-27T13:54:11.592000Z</published><updated>2020-02-27T13:54:11.592000Z</updated><author><name>kurvanov</name><uri>https://forge.codesys.com/u/kurvanov/</uri></author><id>https://forge.codesys.com58d3704db5b488e57acd7ae163bdd0d6e2fa4953</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Good morning, &lt;/p&gt;
&lt;p&gt;I'd like to use CheckBounds for improving reliability of my library. &lt;br/&gt;
I'm using Codesys V3.5SP10 Patch3 &lt;/p&gt;
&lt;p&gt;I have inserted the compiler define checks_in_libs in my main application.&lt;br/&gt;
The program aCheck of the attached library is supposed to cause the call to checkBounds function. &lt;/p&gt;
&lt;p&gt;I have set some breakpoints at line 3 &amp;amp; 5 of the generated CheckBounds function. &lt;br/&gt;
When I run my application, the PLC does not call the checkBounds function.&lt;/p&gt;
&lt;p&gt;I don't understand what I'm doing wrong. &lt;/p&gt;
&lt;p&gt;Although this is a very basic use case, I cannot attach library and project code because of limited file size. Herewith the code: &lt;br/&gt;
Checks.library&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;PROGRAM&lt;/span&gt; &lt;span class="nv"&gt;aChecks&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
    &lt;span class="nv"&gt;iIndex&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;astInst&lt;/span&gt;      :    &lt;span class="nv"&gt;ARRAY&lt;/span&gt; [&lt;span class="mi"&gt;1&lt;/span&gt;..&lt;span class="mi"&gt;5&lt;/span&gt;] &lt;span class="nv"&gt;OF&lt;/span&gt; &lt;span class="nv"&gt;INT&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; [&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;101&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_VAR&lt;/span&gt;
&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;iIndex&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;
   &lt;span class="nv"&gt;astInst&lt;/span&gt;[&lt;span class="nv"&gt;iIndex&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;234&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_FOR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;untitled1.project&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;PROGRAM&lt;/span&gt; &lt;span class="nv"&gt;PLC_PRG&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
    &lt;span class="nv"&gt;xActivate&lt;/span&gt;    :    &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;totot&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;define&lt;/span&gt; &lt;span class="nv"&gt;checks_in_libs&lt;/span&gt;}
{&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;defined&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;checks_in_libs&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; }
&lt;span class="nv"&gt;totot&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
{&lt;span class="k"&gt;ELSE&lt;/span&gt;}
&lt;span class="nv"&gt;totot&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;77&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
{&lt;span class="nv"&gt;END_IF&lt;/span&gt;}
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xActivate&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="nv"&gt;xActivate&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;AAA&lt;/span&gt;.&lt;span class="nv"&gt;aChecks&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;span class="nv"&gt;FUNCTION&lt;/span&gt; &lt;span class="nv"&gt;CheckBounds&lt;/span&gt; : &lt;span class="nv"&gt;DINT&lt;/span&gt;
&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt;
   &lt;span class="nv"&gt;index&lt;/span&gt;, &lt;span class="nv"&gt;lower&lt;/span&gt;, &lt;span class="nv"&gt;upper&lt;/span&gt;: &lt;span class="nv"&gt;DINT&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;Implicitly&lt;/span&gt; &lt;span class="nv"&gt;generated&lt;/span&gt; &lt;span class="nv"&gt;code&lt;/span&gt; : &lt;span class="nv"&gt;Only&lt;/span&gt; &lt;span class="nv"&gt;an&lt;/span&gt; &lt;span class="nv"&gt;Implementation&lt;/span&gt; &lt;span class="nv"&gt;suggestion&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt;  &lt;span class="nv"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;lower&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="nv"&gt;CheckBounds&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;lower&lt;/span&gt;&lt;span class="c1"&gt;;      // line 3&lt;/span&gt;
&lt;span class="nv"&gt;ELSIF&lt;/span&gt;  &lt;span class="nv"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;upper&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="nv"&gt;CheckBounds&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;upper&lt;/span&gt;&lt;span class="c1"&gt;;      // line 5&lt;/span&gt;
&lt;span class="k"&gt;ELSE&lt;/span&gt;  
   &lt;span class="nv"&gt;CheckBounds&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;index&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;p&gt;Any help will be appreciated.&lt;/p&gt;
&lt;p&gt;I.kurvanov&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>POUs for Implicit Checks in library</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5cc7d07e03/?limit=25#dbe5" rel="alternate"/><published>2020-02-27T13:54:11.407000Z</published><updated>2020-02-27T13:54:11.407000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.comc398db864d75d4e2c0ad63b82a527cc47306a861</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br/&gt;
you could only check libs in library format/source available &lt;strong&gt;not &lt;/strong&gt;compiled libs.&lt;br/&gt;
To do this you need to set the compiler define:&lt;br/&gt;
&lt;strong&gt;checks_in_libs&lt;/strong&gt; &lt;br/&gt;
in your application.&lt;/p&gt;
&lt;p&gt;BR&lt;br/&gt;
Edwin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>POUs for Implicit Checks in library</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/5cc7d07e03/?limit=25#e44d" rel="alternate"/><published>2020-02-27T13:54:11.221000Z</published><updated>2020-02-27T13:54:11.221000Z</updated><author><name>tvm</name><uri>https://forge.codesys.com/u/tvm/</uri></author><id>https://forge.codesys.com2ed26d2dc7bbcdb7eec531ea15dc0d385def7354</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I have a library which contains a function block with some math formulas in it.  I still get division by 0 exceptions, even though I have the "CheckDivReal" implicit check function installed.  CheckDivReal is called if I divide two numbers in a normal POU, but if it's within a function block from the library, it is not called.  I guess that makes sense because the library can't see the functions in my project, but it doesn't seem to be possible to install the implicit check function blocks in a library.  Is there a way to do this?&lt;/p&gt;
&lt;p&gt;thanks&lt;/p&gt;
&lt;p&gt;Tim&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>