22.10.1 D-Script/Global D-Script Restrictions

*1 The Communication Cycle Time is the time it takes from the point the display unit requests data until the display unit receives data from the device. It is stored in internal device LS2037 in Bin format. The unit is 10 milliseconds. There is an error of +/-10 ms.
When using multiple devices/PLCs, you can verify the communication cycle time of each device/PLC, with internal device addresses displayed in the [System Settings] - [Peripheral List] page's [List of Device/PLC Management Addresses].
5.4.14 System Settings [Peripheral List] Settings Guide

*2 Display Scan Time is the time required to process one screen. It is stored in internal device LS2036 in Bin format. The unit is in milliseconds. There is an error of +/-10 ms.

Trigger Condition Operation List When Using Memory Link and Other Devices

Depending on the devices specified for trigger conditions, the D-script operations activated by a trigger after the screen changes or the power is turned on are as follows:

O: Operation is performed immediately after the screen is changed, or the power is turned ON.

X: Operation is not performed immediately after the screen is changed, or the power is turned ON.

Restrictions Specific to Global D-Script

Restrictions for SIO Port Operations

Limitations on BCD Format Operations

If a value which cannot be converted into BCD format is found during operation, the program stops running.

These values include A to F in hexadecimal format.

If the program halts, bit 7 in the display unit's common relay information (LS2032) turns ON. This bit does not turn OFF until the display unit is turned OFF or enters offline mode.

Example:

[w:[PLC1]D0200]=([w:[PLC1]D0300]<<2)+80

If D300 is 3, shifting two bits to the left results in 0x000C, which cannot be converted into BCD format, and interrupts program execution.

[w:[PLC1]D0200]=[w:[PLC1]D0300]<<2

Unlike the above example, 0x000C is the result of the operation to be stored in the memory, and does not cause the program to stop.

Limitations of Zero Operations

If you divide by zero in division (/) and modulus (%) operations, execution will stop. Do not divide by zero.

If the program halts, bit 8 in the display unit's common relay information (LS2032) turns ON. This bit does not turn OFF until the display unit is turned OFF or enters offline mode.

Notes on Delay During Assign Operation

Using a device address in an assign operation may cause write delay because the display unit has to read the address data from the connected device. Consider the following:

Example:

[w:[PLC1]D0200]=[w:[PLC1]D0300]+1 // ...1
[w:[PLC1]D0201]=[w:[PLC1]D0200]+1 // ...2

Statement (1) assigns (D0300+1) into D0200. However, in statement (2), the result of statement (1) has not been assigned in D0200 because of time-consuming communication with the device/PLC. In such cases, program so that the result of statement (1) is stored in the LS area before it is executed, as shown below.

[w:[#INTERNAL]LS0100]=[w:[PLC1]D0300]+1
[w:[PLC1]D0200]=[w:[#INTERNAL]LS0100]
[w:[PLC1]D0201]=[w:[#INTERNAL]LS0100]+1

Notes on dealing with negative numbers

For functions where a negative number is entered for an argument that does not accept negative numbers*3, the entered number operates as unsigned*4.

*3 For example, "the number of bytes" of the _CF_read () argument cannot accept negative numbers because it defines the size of data to read.

*4 For example, [-1] is handled as 65535 for 16 bits, and 4294967295 for 32 bits.

What to Be Careful of When Reading the Same Device Address in the Same D-script

Even when the same device address is used in the same D-script/global D-script, values read from the device address may differ depending on the processing timing of D-script or global D-script.

To avoid this situation, please program scripts to temporarily store data in internal devices or temporary addresses.

Example:

When Using Internal Device (USR Area)

[w:[#INTERNAL]USR20000]=[w:[#MEMLINK]0100]
[w:[#INTERNAL]USR00000]=[w:[#INTERNAL]USR20000]
[w:[#INTERNAL]USR00001]=[w:[#INTERNAL]USR20000]

When Using Temporary Address

[t:0000]=[w:[#MEMLINK]0100]
[w:[#INTERNAL]USR00000]=[t:0000]
[w:[#INTERNAL]USR00001]=[t:0000]