Applies To:
  • CitectSCADA 1.00, 1.01, 1.10, 1.11, 1.20, 2.00, 2.01

Summary:
With a Citect network, you can recompile a project while Citect clients are using that project. Under some conditions this may cause General Protection Faults. This may occur if the Citect client changes to a page that has been recompiled after the client started, or it may occur if the Cicode libraries have been changed.

Editing a project that is running is not supported by Citect. However it is possible to do this with some restrictions. To explain the restrictions, it is best to explain how Citect accesses its databases.

At startup, Citect will load the following databases into memory, Cicode, users, groups, fonts, keyboard, parameter and units. This provides fast access to this data, and is one of the reasons why Citect has such high performance. If configured as the associated server, Citect will also load the alarm, trends, reports and IOServer databases.

Citect does not load the page animation databases into memory. This would consume too much memory, and as the data associated with each page is only required when that page is viewed. Citect will load the database associated with each page only when that page is displayed. This will cause a small delay on displaying the page.

As Citect does not load the page animation databases into memory, it is possible to edit the pages while Citect is running, and have Citect display your changes when that page is displayed.

However, this can cause Citect to fail because the page animation databases may call Cicode functions from the Cicode database. If you edit the Cicode library and change the order of the Cicode functions, or the number of arguments to a function (that is called from a page animation database), it may cause a General Protection Fault. This could occur as the running Citect is using its memory copy of the Cicode library. If you change this library and display a page that uses the new library, Citect will call the old Cicode library in memory. This could cause a fault.

If you don't edit the Cicode library it is safe to edit pages and recompile while Citect is running.

The Cicode functions in the Cicode database are accessed by a handle, so it is possible to edit the functions as long as the handle to the function is not effected, or the number and type of arguments are not changed.

For example, when the Citect compiler compiles the Cicode functions, it allocates handle 0 to the first function and 1 to the next function, etc. If you edit the first function to make it bigger, Citect will still call the second function correctly. However, if you insert a new function before the first function, the compiler will then allocate handle 0 to that function, and all other functions will be moved up one. This would cause a running Citect system to call the wrong Cicode function, which may cause a fault. It will be safe to edit pages at runtime, if you only edit existing functions - without changing their order, or appending new functions to the end of the Cicode database that are not called by these pages.

Note that any changes to the Cicode database will not be used by the Citect runtime until Citect is restarted. 


Solution:
 

Keywords:
 

Attachments