Software Tools

1. Program Naming

Can not give a Program the same name as any Function or Function Block. The immediate effect of doing this: the Function or Function Block by the same name will be missing from the list presented in the editor. An error will also be generated when the Making the application. (This is usually too late after an hour of frustration while editing a program with missing FB's!)

2. FB Technical Notes

Technical Notes for our custom Functions and Function Blocks do not appear at first when the Note button is selected from the "Select function block - Parameters" dialog.

Workaround:

From the "Technical Notes" dialog select the Function Block drop down menu on the right side of the dialog. Click the desired Function Bkock again from this drop down list. The correct Note will then be displayed.

3. Update Application

On-line editing is called "Update Application" on the ISaGRAF Debug window. A modified application can be downloaded to the controller without having to stop the application. The limitations on what may be modified are outlined in the ISaGRAF User's Manual.
Generally the manual says you may not modify anything in the Dictionary. Changes to the dictionary and certain changes made to programs will result in the application checksum being changed. If the checksum is different in the new version of the application, the Update Application feature will be prevented and a suitable error message is displayed.
Problem: If the user tries to make any of the changes listed below to the Dictionary or I/O Connection dialog, the checksum is not changed and the Update Application appears to download the updated application. These changes should modify the checksum so that Update Application is prevented. This has been registered as a bug with CJ International.

Immediate Effect:

The changes described below will not take effect after an Update Application download. Customers will believe they have updated their application correctly, but will in fact not be running the changed application at all. The Application must be restarted before the changes will take effect.

Workaround:

Do not use Update Application to download changes made to the Dictionary or the I/O Connection. Stop the application first and perform a normal download of the modified application.

Changes Not Detected by the Checksum Calculation:

Editing not detected by the Symbols Checksum and not present after an Update Application:

1. **Dictionary - can change the network address of any variable.

2. Dictionary - can change a variable from integer to real.

3. Dictionary - can change the variable conversion type (e.g. from none to a user-defined type).

4. Dictionary - can modify the data in a conversion table.

5. Dictionary - can change variable attribute from internal to constant.

6. Dictionary - can change internal variable initial value.

7. **I/O Connection - can change i/o board Module_address.

8. **I/O Connection - can change the i/o board type if same variables are assigned to its connections.

4. Outstanding Make Not Reported

If the application has been changed but not made yet, there is no warning message if you enter the debugger. Such a warning message has been registered with CJ for future development.
Immediate Effect: The debugger will display debug information based on the changed program displayed but based on the older application still running in the controller. There will not be a Version change warning message on entering Debug because the last made application still matches that application currently running in the controller.

Workaround:

Always remember to Make your application.

5. Sub-programs, Functions and FBs can't call FBs:

This is a limitation of ISaGRAF that will never be changed. This will be a major disappointment to certain customers. This limitation is clearly stated in the ISaGRAF manual so we don't need to provide any other warning
However for our own knowledge, and so we can suggest workarounds here are the details:

• Memory for the internal static data used by each FB used in a LD or FBD program is automatically instanced. This is only done for programs not for the FBs used inside user-written IEC Functions or FBs.
FBs can't call FBs:

• ISaGRAF will give an error message if you try and include a FB inside an IEC FB.
Functions and Sub-programs can call FBs (with limitations):

• ISaGRAF will not give an error message if you try and include a FB inside an IEC function or sub-program. Here the Function of sub-program is like a Subroutine. However, FBs used inside this Subroutine act on the same instance of FB data.

• For example, if a Timer FB is used inside an IEC Function "myFunc", each call to myFunc will execute a Timer FB that checks the same timer value.
Workaround:

• Write the IEC Function or FB in ST language and declare instances of all used FB's in the Dictionary. The ST Function is programmed with a switch statement, and depending on the index passed to this Function, the instance of FBs for this index are used. The advantage of the ST Function is that the common algorithm is only written once.

• Note that you can only pass data to Functions by value. So, a pointer to an I/O variable can not be passed to a Function, only the current value of the I/O variable.

Category:ISaGRAF