Your comments

I have to report a similar issue.  Unit built in 2017.  Just started commissioning in late 2018. Project in development not installed in field.  Was working well one day did not start the next day.  Sent unit for repair.  Replaced by vendor  but no feedback on cause.  This is the first of the unit we have used to fail. 

It was not the Screen  as we did not have Ethernet communication either.


I just upgraded to IQan5.04 and I like the Zoom feature but we still have issues with the Property inspection box.  Below are some Samples:

In fact the Value box relative position and size varies depending on the line the value is on.

The first one is OK in position and size.  The second one is Ok in Size but if way off in position:

The third line and the subsequent one are almost align correctly but the box is 1/2 the size it needs to be on the High side:

Thanks Johan

It works. Great!!!

Had to overcome the fear of answering "No" when asked to go to the store after being told the existing license is to old.  The assumption being that answering No will trigger a call from the NSA:)


Too bad,  This is what is really missing in Iqan at this stage.

I was reflecting this morning on the future of the platform we use for our system.  We currently have 3 different type of hardware in each of our system.

Early on we used Iqan as the primary processor/Display in our systems and still do for smaller application for single drive systems.  The choice to introduced a new hardware was mainly because back then multi master was not supported and software maintenance was very difficult with a very weak compare functionality.  But also the lack of software functionality.  Qcode and Iqan 5.04 as well as the improvement in hardware capability with the new MD4 series system really made us wonder if Going to an all Iqan platform would be the option.  So far here are the key elements we are missing to make the move:

  • Lack of Higher end processing like the For/to/Next loop.  You can deal with it but you have to really write a lot of code to do it.  try to copy one array into another for example....  or the Do/Until...  We have very flexible configurations with multiple unit attached so being able to handle those in loops to process the info is critical.  Ability to use structured data
  • Manageability/traceability of the code.  Improvement in 5.04 are welcome. The compare function is still very weak and difficult to use.  correlating the text to the actual graphic takes hours or may be I do not know how to use it efficiently.  I would like to have the following: ability to filter what the Diff function search for for example I can careless that the source of the edit is different.     Relative change of position is also very not critical.  However Change in actual code or parameter value is what is important.  Better would be side by side compare of the Graphic representation.
  • Limitation in Canbus Function.   We mostly deal with Raw can because our subVendor use all kind of different format.  Support for CanOpen and  NMEA2000 would be great as long as they are compatible to use the same port. I read today that I can attached an 11 bit bus and a 29 Bit bus to a single port.  I did not know that, not sure when this was introduced.  But very good. This was one biggy.  To this day I use two different physical port attached to the same Canbus thus limiting the number of physical bus I can use.  But still have problem when Dealing with system sending the information in burst(faster than the scan rate). For most we can usually deal with it with the use of the page filter (NMEA Fast Packet) but we have cases where we need more than 2 bytes to filter and we get stuck.  data get lost.  So ability to catch an array of messages with the same CanId in a single Scan is key to our process. Any plan to upgrade to CAN FD?
  • Data Exchange in Multi master: as pointed out in many tread the Channel exchange method is Very safe but not very efficient.  So we are back to keeping a separate spreadsheet  and a lots of code to exchange data between master via Generic Canbus.  Which means one more set of cables.  It would be much easier if there was another type of data exchange using a protocol like the Fast packet to broadcast data.  Implementation would be easier if the definition of the packet was global and shareable by all masters. 
  • Ethernet Based Multi master system support.  Currently for our high end product,  we developed the Iqan application to be mostly a Display function.  We specifically designed it that every unit have exactly the same code so we only have one code to maintain.  We can have has many stations as we want.  2 is typical, 3 exist.  The non Iqan Master has been designed to handle up to 5 but easily upgradeable to as many as we need by just changing one parameter (use of the For/To/Next and Structured data).  For maintenance we connect all the unit to a Simple Ethernet Router and with a Wifi connection I can access the unit through a local based License and remote software.  The G11 could be a better option for remote maintenance.  However, our configuration exclude the use of a multimaster system because the code is machine ID specific  and to install a G11 on a single Diagnostic Bus would require different machine ID with or at least this is my understanding.   So Remote access via the Ethernet port would be so much easier.  As far I I understand IQanConnect this only work through the G11 interface correct?

Going to a Subscription model is fair as you do a good job developing this product and I do not mind supporting the effort.  However, with the old license, I could install it on my two machines: one for development in the office and one I use in the field.  The rule being that only of the one being active being enforced by cross checking license number on the net.

The new model apparently will not allow that.  This is s shame.

Now that I have installed 5.04 on the wrong machine, how do I transfer the license?  Can I unsubscribe?

currently using 5.03 on this unit as I cannot upgrade to 5.04.


the main purpose of the idea would be to clean-up code thus making it more readable if implemented properly.  For example, we are working in the marine environment.  We have a throttle module with Twin axis.  Each Axis includes an Analog value for the command and a machine State for each axis.  Those element are generated in a specific Calibration and scaling Function block.  This information is used both for Display and for control of the motors.  Total of 8 data point to move up and down the tree structure.  It has become a bit easier now that we can declare variables as global.

To keep the code clean, we like to put the variable for the screen in a separate function block from the block used for control.  the ability to pass the data block as one group would make it cleaner(less lines) on the screen and more efficient in terms of coding only one Variable to create instead of multiple variables.

The other practical use would be for example for managing display of multiple similar items.  We used banks of batteries(up to 16).  Too much information to display on a single screen.  So currently to select info for one of 16 battery we have pages of "Switches", one for for each bit of information displayed, to feed the detail page.  Every time we make an edit we need to make sure we do not have a copy paste error.  If we could concatenate the variable into one structure and assuming the structure is retained at a global level, we should be able to use a single "switch" driven by a state. 

If I understand correctly the initial idea of this post. what was asked was more like a script that when run, would modify some parameters other than the direct output.  This sounds like another thread about initializing variable for different projects and using IqanRun and/or Scripts to properly initialize value was suggested as an answer.  another method in today's environment this can be implemented either via the Qcode or for  parameter using the Reset function.  a single channel can trigger the appropriate code in each variable that need to be modified. We use this today to have a screens that can be adapted to the different configuration of our system and we do not need an external laptop to set-up the system at the customer place and /or we can have the customer do the configuration on is own.  As a matter of personal choice, I prefer that approach because during troubleshooting, for each variable I can directly see the code that will trigger the calculation.

Combining the two ideas:  our set-up allows for different types of motors for example.  We have a Function block in which a single State parameter is used to automatically select all the key elements for the motor being used (Max Speed, Max Torque, MIn and Max Voltage min and max Current, etc) now each of those single element has to be transmitted to each and every module that uses it. and we can handle up to 3 motors..  A lots of wire and input/output making each function block large on the screen making it difficult sometimes to understand the architecture.

So this is really a functionality for the programmer and the person doing the testing/commissioning.  It adds nothing to what the system does today.

Here is another example of the issue.  Look at the property tab.  Value box for the font size looks the right size but it is way off position with the label:

I would really agree that the Tool bar of V5.x is very confusing.  Color or not, is not my major problem.  The fact that the Run button very much look likes the Measure button has and still is the source of a lots of swearing on my part. Likewise the Send/Get button visual is very close to the Forward/backward buttons and I have to wait to see the hint in order to remember which one is which.

Curious about the implementation of such block.  As I understand the software A channel we have on a page is basically a variable, not a piece of Code.  The embedded Code (Qcode or Object list) is what will change the value of of that variable and nothing else.  To me this is the essence of good coding.

There is nothing more difficult to troubleshoot than a code were any variable can be modified by any number of routines.  You never know where the problem is coming from.  So I am not in favor of changing external values within a channel.

In the current version up to 5.03 for me, The only option to have multiple values within a channel is the array.  I just wished there was more functionality for the array such as copy, inputs to function blocks and the like to work with it but this is already part of another request.

If the Idea is to implement the notion of data structure where you can mismatch type and assign names to subelements to a channel like having a digital to validate an analog result grouped as one for example then I can agree this would be very helpful. It also would be good as we could allow us to clean-up code appearance if we could group data as a single outputof a function block to be sent as a single Input to another module.

Long time ago, when z8088 where the top of the line, I used to work with a graphical software that used that concept.  We called them pipes.  We would attach a data to a pipe then connect upper level module with the pipe and within other submodule we could access any items of the pipe.  And yes the rule inforced by the compiler was that a pipe element could only have one source (only one write or assignment).