0
Fixed

Timer Design/Simulate 5 Bug

Joe 6 years ago in IQANdesign updated by Gustav Widén (System support) 6 years ago 7

I am simulating a process and I commented out the 'QIncrease' line of a timer for the purposes of testing and replaced the text with 'QReset', but the timer still increases when the 'If' statement is true.  I restarted my PC for good measure, but the problem is persistent.  Any thoughts?


Image 1294


Make sure that you start the simulation from IQANdesign using Simulate > Run after you have made your change. Otherwise the application executed by IQANsimulate will not be updated with your change. When I did this it worked as expected. But when I did the change without actually updating the application in IQANsimulate I got the behavior that you describe. The measurement in IQANdesign then highlights the QReset when IQANsimulate actually is running QIncrease since they are running different versions of the application.

I should have been more specific.  The bug only occurs if the timer exists in an external function.  I edited the external function, saved it, updated the external function in the Design application, saved it, and started the simulation from Design.  I can send you a simple .idax file that shows the bug.

I was able to reproduce the issue. When updating the external function the change from QIncrease to QReset was not properly propagated to the instantiated function. The bug appears when the only Qcode change is a change from one command (QIncrease, QDecrease, QReset, QShow, QHide, QAdd, QSubtract, QReplace) to another. Changing other part of the expression such as math expressions or conditions propagates fine.


As a workaround you can clear the timer function in the external function, then update it in the main project. Finally add the code to the timer function again and update the main project. Now it should propagate the changes properly.

Fixed

Thanks for reporting the problem, this is now fixed in 5.04, the release notes describe it like this:

The bug appears when the only Qcode change is a change from one command (QIncrease, QDecrease, QReset, QShow, QHide, QAdd, QSubtract, QReplace) to another. Changing other part of the expression such as math expressions or conditions propagates fine. Fixed.

I upgraded to 5.04 and now I have errors in some external functions with "Invalid identifier".  This appears to be related to references of channels with the scope set to "Public".  Was this intentional?

Yes, see release notes case 

  47445Limit channel scope in external functions
 Channels with public scope in external functions are no longer available outside the external function. To expose channels outside the external function, function group output must be used.