PageDisplay function not working after upgrade

We have upgraded the Citect from version 5.5 to 8.4 and we have had a number of issues (as would be expected) the latest one I am having is the old code called a PageDisplay() function after executing initialization code. PageDisplay() calls up an overview screen.

The problem we are having is the overview screen does not display properly and the splash screen remains visible, you can display the overview screen by clicking the mouse on the splash screen, and while this is OK for the developer it can cause the operator some problems.

I have looked in the cicode help and after it describes its function it says :

"Note: This function is not supported in the server process in a multiprocessor environment. Calling this function from the server process results in a hardware alarm being raised."

I have seen this type of note on other Cicode functions, but the obvious question is that if there is a problem using this function then what else do I use?

Parents
  • Hi Michael,

    It seems as part of your upgrade that you are moving from single process mode to multi-process mode which is a great move for performance and scalability going forward. It does mean however, that the upgrade is more complex as you need to think about where code needs to be running from.

    Essentially with PageDisplay, you need to be making sure that code is running in the client process. Have you confirmed that the code that is displaying the Overview page from a server process is absolutely necessary to be triggered from the server process? I have seen situations before where say the original startup function needed to be split up and re-organised across the processes. If it does it would be good to hear the reason why and then we can offer some approaches.


  • Thanks very much for your response. To be honest I am a bit confused about the whole multi-process mode. I can go through the code and see what should be running where. I can say that this is happening on both server machines as well as the control client.

  • Certainly coming from 5.50 there is a lot to learn with all the changes.

    How much work you have to do will come down to how neatly organised and segregated the original cicode was in the project.

    I would recommend starting with your "startup" function. Go through that and determine what needs to execute where, and then split it into separate files/functions. In multi-process mode each process type (Trend, Alarm Client etc) can have their own Startup and Shutdown function. - configured via SetupWizard.

    Most likely your server machines were also used as a client. That is no problem every citect node in multi-process mode contains a client process. Code related to putting things on the screen should only execute in the client process.

    Then, move through your cicode files and determine if they related to server oriented functionality (e.g. some advanced alarm processing, custom report logic etc). If they aren't already separate files, split them out. This is more for neatness then anything.

    Depending upon the use cases you find, you may find advancements like Local Variables and Calculated Variables to be quite useful in your upgrade.

  • Thanks, Bradley, this is quite a substantial Citect installation, back in the late 90's when it was commissioned it had the highest tag count in the world. So it could be a fair amount of work. If I just untick the multiprocess box on the computer startup will this rectify the issue? If so what would be the disadvantage of doing this?

  • Yes you can put it back to single process mode.

    It is possible you run into performance issues with single process model as the I/O (pub/sub) and alarm systems are quite a bit different.
    Don't know what your time/budget looks like... but in terms of production direction it is definitely multi-process mode, and ideally paired with running as a service.

  • Thanks very much, Bradley. I persevered with the multi-process mode with a much greater understanding thanks to your advice. This problem has been resolved. I will have to continue going through the other parts of the code to see what else may need segregating. It was great to converse with someone who knew what they were talking about - Thanks Again!

  • No problem! Great to hear. and good luck with the rest.

Reply Children
No Data