0
Under review

IQAN 7.02 Firmware logic evaluation issue:

Hard Amin 1 month ago in IQANdesign updated by Gustav Widén (System support) 3 weeks ago 9

There is an issue with IQAN7.02 Firmware where the blocking logic and Activating logic is not evaluated in same scan. It seems like activating logic is evaluated in the following scan after the blocking logic goes to false, which misses the flank detection in the activating logic. After running the same logic in older version of firmware, it was found that flank detection was not missed. 

Also, this was tested by using time delay of 100msec for activating logic and it worked fine which leads us to believing that both activating and blocking logic gets evaluated in different scan. FYI - I have 20msec as my application scan cycle time. 

+1

Hey Hard, we are sorry to hear about the issue you are dealing with right now. I know you had recently reached out through your local distributor about this. We have some follow up questions for you. If you do not want to answer on this forum, we ask that you respond through your distributor instead (i.e. Todd). 

Would you mind sharing what earlier version you were using that was tested against v7.02? 

Also if you could tell us what channels you were using that you noticed this delay in the flank position? 

- A copy of the project file or short exert of the function that you are trying to drive would be ideal here. (Please share with your distributor if it contains anything proprietary)

Hello Ryan, I have send the sample projects written in IQAN6.08 vs IQAN 7.02 to local distributor (Todd). You will find that state machine channel does not transition in IQAN7.02 while it does with IQAN6.02

Interesting note is that when you use the step through simulation option in 6.08 you get the same result as 7.02 the first time the Fwd Input DIN is pressed. When you step through the logic the state machine ignores the positive flank. After stepping through once the state machine begins to to see the positive flank and changes state as it does in normal simulation mode. 7.02 state machine ignores the positive flank each time. Not sure which scenario is best however the logic works differently in 7.02 than it did on 6.08. I've reviewed the release notes and there does not appear to be any notes. 

I looked at the files and now I think I understand the problem. 


Your file "IQAN Bug - IQAN6 working.idsx" shows a postiveflank object in the activating group of an SMC, and an object in the blocking object group that will always block when the input is false. 

Blocking is always calculated before Activating. 

When the blocking object group is True, Activating group in the SMC is Not evaluated. 

In version 6 this can be seen on the object group status (gray box on object group method), while the objects in activating just stay with the value and status they had when the channel was blocked. 

Image 4435

In your version 6 application you can have a strange effect from this if the input only stays on for exactly one cycle. Then the flank object will not be able to pick up the next flank.

Image 4436


Another somewhat inconsistent effect you have in the version 6 application is what you saw the first time after startup. When the SMC starts out with blocking being True, the objects in Activating will have status "Not evaluated". 

Image 4437

When the positive flank object change from object status Not evaluated, it is not considered to be a flank.  

Since version 7.01, the object status of SMC activating objects are set to Not evaluated when the channel is blocked. 

The effect is that flank objects gets the first cycle behavior. 

That explains why the upgraded version 6 application never picks up the flank. 

Regardless of what is best, this change should have been in release notes. 


It looks like you might already have found a way of modifying the application. The attached project file named "IQAN Bug - IQAN7 Not Working.idsx" actually looks like it has an application fix. It has a flank in an IDC where activating is always evaluated, and no flank in activating of the SMC. 

An alterative way of building the intended function could be with an FSM.

What was the rational to make this change? It does present as a bug since the IDC channel functionality did not change.

Hi Gustav,


The logic in the blocking function turns FALSE at the same time the activating function is turning TRUE.

IQAN 6

Image 4438

IQAN 7

Image 4439

Since the blocking function is now FALSE/OFF it should now evaluate the Activating function and see the rising edge?

Could the issue in IQAN 6 with it not picking up the first time the code is executed be because the internal variable which keeps track of the previous state of the FWD Req needs to be initialized which only occurs after the first time it is evaluated?

Sort of. It is not that the object isn't initialized. 


What you are seeing the effect of is that the flank operation is designed to become true only when its input was evaluated as False before becoming True. 

This works the same way if the flank is in an IDC and the input is on from the start. It is also the same when it is in a FG that is enabled in runtime. 


The tricky thing here i that the SMC channel is designed to not evaluate the Activating objects if Blocking is True. 


In version 6, the status of SMC activating objects are kept once they have been evaluated, but don't update while Blocking is True. 

 

From version 7.01, the status of SMC activating objects are set to not evaluated when blocking is True. So you always get back to the startup situation.