Created: 2020-12-23 03:14 AM
I am encountering a problem inside clear SCADA while changing the template ID of group instances.
I have two different templates with Group instance of another template inside them. I have created a group instance (instance 1)of one of them. I have referenced variables from the instance into various ST programs. I have a use case where I have to dynamically change the template ID of the instance 1. I have chosen the names such that the tags in various ST programs are not affected by this change. but every time i change the template ID the ST programs pops an error " Object(s) that this program depends on no longer exists".But on recompiling the ST program the error disappears. can anybody clarify the reason behind this and possible solutions.
Thanks in Advance
Created: 2020-12-23 07:32 AM
Hi. Logic programs resolve references at compile time, so unfortunately 'pulling the rug' under points which are being (effectively) re-referenced is not going to work. A possible workaround is to use indirectly referenced point objects and a program which fires off the Logic passing string names of the points. Note that you can't expect indirect tags to cause Logic to run on change, so you'll need to consider that.
Created: 2020-12-23 07:58 AM
Thanks for the information @sbeadle .
So if i use indirect tags the variables won't get updated quickly. i s that you are referring with the last statement?
Created: 2020-12-24 04:59 PM
What Steve was meaning, I believe, is that if you use Indirect Tags, then 'On Input Processed' is no longer applicable.
Since the exact input property is not known at configure time, then the Logic Engine can't subscribe to the 'On Input Processed' event to know when it should execute.
Hence, if using Indirect Tags then you can only use 'On Interval' (or I guess more correctly, you can't use 'On Input Processed') as the trigger condition.
This may mean that the variables won't get updated as quickly, since On Input Processed is triggered on each (valid) input property change, and you would need to use On Interval which is at a fixed update rate instead.
It's probably worth you looking into a few other options to keep the fixed references. If your logic is in a Template then you could try a 'repair instance' to see if that patches up the logic references, although I'd definitely do this on an offline database first to make sure it doesn't have any unwanted side effects.
And you should probably log a case with your local Tech Support. When performing the Convert To... Instance of... action I would expect that all references to objects within the Template Instance should be 'patched' as required, which would make the logic valid (and re-register subscriptions as required). It's a bit of a niche situation obviously, and so unlikely to be high up the development fix priority list, but it does seem like undesired behaviour that should ideally be improved in the future (so that these negative side effects are reduced overall).
Created: 2021-01-19 07:37 AM
@BevanWeiss Thanks for the reply.
Unfortunately, FBD s where I want to use fixed references all are stand-alone ones, they are not part of a template. So the solution did not work for me.
I used another way around this problem. I used SQL queries to access and manipulate database objects instead of direct tags. This allowed me to continue using the logic even if the template IDs are changed. But this made the whole system behave in a funny way. Now even logic programs that use direct tags are not getting executed correctly. Does using SQL queries in St programs affect system performance.?
Created: 2021-01-19 01:37 PM
Yes SQL in ST can really slow down the system. When you have a lot of complex ST programs, especially if they are executing quickly, you get a bunch of things getting stuck in the queue wanting to be completed.
One thing that might help if you are not using it already is to use NOCACHE
Your Query code here
Created: 2021-01-19 09:36 PM
As @geoffpatton said, YES SQL in ST has serious performance impacts on your database.
I'd suggest that you just don't use it, have this as your rule.
If your FBDs aren't in templates, then you should only have a small number of them, so manually updating them alongside the other configuration change shouldn't be too much work.
Discuss challenges in energy and automation with 30,000+ experts and peers.
Find answers in 10,000+ support articles to help solve your product and business challenges.
Find peer based solutions to your questions. Provide answers for fellow community members!