APPENDIX E Ladder diagram instructions (3/3)
E.51 BCD DIVIDE - Divides two values
Description |
Instruction divides the contents of location Dd with contents of location Dr. The result of division is stored in locations R and R+1. The first contains the rounded off result of division, while R+1 contains the fraction. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON if the contents of words Dd and Dr are not BCD. EQ flag changes state to ON if the result equals “0”. |
Example |
Upon fulfilling the condition on bit IR000.00, instruction divides the value of memory location IR216 by the value of memory location HR09. The result is stored into two sequential memory locations DM0017 and DDM0018. The result is stored so that DM0017 contains round number and DM0018 contains the fraction. |
E.52 DOUBLE BCD ADD - Adds two 32-bit words
Description |
Instruction adds values from addresses Au and Au+1 to values from addresses Ad, Ad+1 and carry bit CY. If the result exceeds 99999999 carry bit CY is set. |
Ladder symbol |
 |
Limitations |
Word DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON if the contents of words Au and Ad are not BCD. EQ flag changes state to ON if the result equals “0”. CY flag changes state to ON if there is a carry in the result. |
E.53 DOUBLE BCD SUBTRACT - Subtracts two 32-bit words
Description |
Instruction subtracts the contents of two words Su+1 and Su with carry bit CY added from the contents of words Mi+1 and Mi. The result is stored into memory locations R+1 and R. If the result is negative, carry bit CY is set and 10’complement of the result is stored into R. To get the real result, contents of R should be subtracted from zero. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON if the contents of words Mi, Mi+1, Su, Su+1 are not BCD. EQ flag changes state to ON if the result equals “0”. CY flag changes state to ON if the result is negative. |
E.54 DOUBLE BCD MULTIPLY - Multiplies two pairs of words
Description |
Instruction multiplies values of locations Md, Md+1 with the values of locations Mr, Mr+1. The result is stored into 4 locations: R, R+1, R+2 i R+3. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON if the contents of words Mr, Mr+1, Md and Md+1 are not BCD. EQ flag changes state to ON if the result equals “0”. CY flag changes state to ON if there is a carry in the result. |
E.55 DOUBLE BCD DIVIDE - Divides two pairs of words
Description |
Instruction divides the contents of locations Dd, Dd+1 by the contents of locations Dr i Dr+1. The result is stored into locations R and R+1 while locations R+2 and R+3 contain the fraction. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON in two cases, if the contents of words Dd, Dd+1, Dr and Dr+1 are not BCD or if the contents of locations Dr and Dr+1 equal zero. EQ flag changes state to ON if the result equals “0”. |
E.58 BINARY MULTIPLY - Binary multiplication
Description |
Instruction multiplies values of location Md by the value of location Mr. The result is stored in two memory locations R and R+1. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state u ON in case of error. EQ flag changes state u ON if the result equals “0”. |
E.59 BINARY DIVIDE - Binary division
Description |
Instruction divides the value of location Dd with the value of location Dr. The result is stored into location R, while the fraction is stored in R+1. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R and the instruction cannot be used for dividing signed numbers. |
Flag |
ER flag changes state to ON in case that Dr contains value “0”. EQ flag changes state to ON if the result equals “0”. |
E.60 BCD TO BINARY - Converts decimal number to a binary number
Description |
Instruction converts binary representation of decimal number from the word S to binary number in the word R. Contents of the word S remains unchanged. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON if the contents of the word S are not BCD. EQ flag changes state to ON if the result equals “0”. |
Example |
Upon fulfilling the condition on bit IR000.00, instruction changes the contents of memory location IR200 so that its numerical value remains unchanged; in other words, only the representation of the location’s contents changes. If the contents of the location IR200 is “164” decimal, this instruction would convert it to “0000000010100100”. One of the purposes of this instruction is preparing the contents of memory location for one of the binary operations. |
E.61 BINARY TO BCD - Converts binary number to a decimal number
Description |
Instruction converts binary represented number from the word S to a decimal number in the word R. Contents of the word S remains unchanged. |
Ladder symbol |
 |
Limitations |
Word DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON in case of error. EQ flag changes state to ON if the result equals “0”. |
Example |
Upon fulfilling the condition on bit IR000.00, instruction changes the contents of memory location IR200 so that its numerical value remains unchanged; in other words, only the representation of the location’s contents changes. If the contents of location IR200 is “000000101100100” binarny, this instruction would convert it to “740” decimaly. One of the purposes of this instruction is preparing the contents of memory location for one of BCD operations. |
E.62 4 TO 16 DECODER - 4 to 16 decoder
E.63 16 TO 4 ENCODER - 16 to 4 encoder
Description |
Instruction determines the highest set bit in SB and according to it, stores the 4-bit hexadecimal value to a certain place in the result word R. In the example below, bit 12 of the location on address SB is set, which would be “C” in a hexadecimal representation.

Precise place for storing the converted value in the word R is determined by a control word Di. The same word also determines the number of words to be converted, starting from the address of the word SB. For this example, the control word would be “0001”.

The first digit to be converted, as well as the number of digits to be converted, is determined in the control word Di. If the number of digits for conversion is greater than the number of digits remaining in the word S, then the missing digits are taken from the starting digit anew. The structure of the control word Di is shown on the picture above.
Some of the combinations of control word values along with their meaning are given below:

|
Ladder symbol |
 |
Limitations |
Two rightmost digits of the word Di have to be between 0 and 3. Words DM6144 - DM6655 cannot be used as operands R, SB and Di. |
Flag |
ER flag changes state to ON if (SB + number of digits) exceeds the range of a given memory block or if the word to be converted equals zero. |
Example |
Upon fulfilling the condition on bit IR000.00, first DMPX instruction converts two words, IR200 and IR201. The control word is “0010”, meaning that two words are converted (digit 1) and stored starting from the zero digit in the result (rightmost digit 0). After the first DMPX instruction, the second one is executed, converting two words from addresses LR10 and LR11 and storing them in the result word HR10, starting from the digit no.2. Therefore, the word HR10 contains four converted words in the following order: IR200, IR201, LR10, LR11. More detailed explanation of how the instruction works is given on the following picture.

Presuming that binary value is the one from locations IR200, IR201, LR10 and LR11, as in example, the result of conversion in the result word HR10 would be “5B7D”. |
E.64 ASCII CONVERT - Converts to ASCII code
Description |
Instruction converts digits from the word S to their ASCII equivalent and stores the result in the words starting from the address D. The control word Di determines the first converted digit, the number of digits to be converted and which half of the word D contains the first 8-bit ASCII converted code. IIf the number of digits for conversion is greater than the number of digits remaining in the word S, then the missing digits are taken from the starting digit anew from the word S. Digit with the highest position of the word Di has a role of parity bit and it can take values between 0 and 2 - not having parity, parity and non-parity. Parity bit is actually a highest bit of the 8-bit ASCII code. When the third digit of the word Di equals zero, this bit is always zero. If the third digit of the word Di equals one, then this bit represents parity, or simply put, this bit is set when the number of ones in the other 7 bits of ASCII is odd making the number of ones even. If the ASCII value equals “31” (binary “0011 0001”), even parity would change the highest bit to one, changing the ASCII number to “1011 0001” or “B1”. The status of parity bit does not affect the interpretation of ASCII code. Odd parity bit behaves in similar fashion, but with the opposite function. It’s purpose is to ensure that the number of ones in ASCII code is always odd. The following picture represents interpreting the value of word Di and the picture after that gives several versions of values of the word Di and how they affect the instruction.


|
Ladder symbol |
 |
Limitations |
Two lower digits of the words Di must have values betweenmoraju imati 0 and 3. Words DM6144 - DM6655 cannot be used as operand D. |
Flag |
ER flag changes state to ON if two rightmost digits of the word Di do not fall within the specified range (0-3) or the result word exceeds the boundaries of memory area. |
E.65 COMPLEMENT - Complements a word
Description |
Instruction executes the second complement of the word Wd and stores it into word Wd again. The second complement means that ones become zeros and vice versa. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand Wd. |
Flag |
ER flag changes state to ON in case of error. EQ flag changes state to ON if the result equals zero. |
E.66 LOGICAL AND - Operation logical "AND" on the contents of a word
Description |
Instruction executes the operation logical “AND” on words I1 and I2. The result of the operation is stored into word R. Operation logical “AND” puts one in the result only if the same position of words I1 and I2 also contain one. |
Ladder symbol |
 |
Limitations |
Words DM 6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON in case of error. EQ flag changes state to ON if the result equals zero. |
E.67 LOGICAL OR - Operation logical "OR" on the contents of a word
Description |
Instruction executes the operation logical “OR” on words I1 and I2. The result of the operation is stored into the word R. Operation logical “OR” puts the one in the result if at least one of the words I1 and I2 contains one on that position. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON in case of error. EQ flag changes state to ON if the result equals zero. |
E.68 EXCLUSIVE OR - Operation "EXCLUSIVE OR" on the contents of a word
Description |
Instruction executes operation “EXCLUSIVE OR” on the words I1 and I2. The result of the operation is stored into the word R. Operation exlusive “OR” puts one in the result only if the same position of the words I1 and I2 contains different values. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON in case of error. EQ flag changes state to ON if the result equals zero. |
E.69 EXCLUSIVE NOR - Operation "EXCLUSIVE NOR" on the contents of a word
Description |
Instruction executes operation “EXCLUSIVE OR” on the words I1 and I2. The result of the operation is stored into the word R. Operation exclusive “NOR” puts one in the result only if the same position of words I1 and I2 contains the same value, whether it is “0” or”1”. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. |
Flag |
ER flag changes state to ON in case of error. EQ flag changes state to ON if the result equals zero. |
E.70 BIT COUNTER - Counts the number of ones in a given word
Description |
Instruction counts the number of bits with the state “1” in words from address SB to SB+(N-1) and puts the result on the address of the word R. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand R. Word N cannot have zero value. |
Flag |
ER flag changes state to ON in case that N isn’t BCD number or in case that SB and SB+(N-1) don’t belong to the same memory area. EQ flag changes state to ON if the result equals zero. |
E.71 SUBROUTINE ENTRY - Enters the subroutine
Description |
Instruction changes the course of the main program towards subroutine, at the instruction line of the main program which contains the instruction SBS. Number of instructions N has to be in 000 - 049 range. When the instruction condition is fulfilled, all the instructions between SBN(92) and the first RET(92) instruction are executed. Upon processing the RET instruction, program returns to the line immediately following the instruction SBS which called the subroutine in the first place. The same subroutine may be called from several places in the program.

|
Ladder symbol |
 |
Limitations |
Number of subroutine has to be in 000 - 049 range. |
Flag |
ER flag changes state to ON when non-existing subroutine is called, when the subroutine calls itself or when the subroutine being executed at the moment is called. |
E.72 SUBROUTINE DEFINE - Beginning of a subroutine
Description |
Instruction marks the beginning of a subroutine. Each subroutine is defined with its number N. All subroutines have to be placed after the main program and instruction END has to follow the last RET instruction of the last subroutine SBN.

|
Ladder symbol |
 |
Limitations |
Number of the subroutine has to be in 000 - 049 range. Each number may be used only once. |
Flag |
It has no effect on any particular flag. |
E.73 SUBROUTINE RETURN - Return from a subroutine
Description |
Instruction executes the return from the subroutine to the main program. Each subroutine must contain the RET instruction. This instruction jas on number of its own, naturally assuming that it belongs to the previous SBN instruction.

|
Ladder symbol |
 |
Limitations |
Number of the subroutine has to be in 000 - 049 range. Each number may be used only once. |
Flag |
It has no effect on any particular flag. |
E.74 MACRO - Macro
Description |
Instruction MCRO enables one subroutine to substitiute several subroutines having the same structure, but different operands. Instruction has 4 input words SR232 to SR235 and 4 output words SR236 to SR239 used for sending or receiving the subroutine parameters. Upon fulfilling the condition, the instruction copies the contents of locations I1 - I3 to words SR232 - SR235. Upon execution of subroutine N, values of the words SR236 - SR239 are copied to words O1 - O3. |
Ladder symbol |
 |
Limitations |
Number of the subroutine has to be in 000 - 049 range. Each number may be used only once. |
Flag |
ER flag changes state to ON when non-existing subroutine is called, when the subroutine calls itself or when the subroutine, being executed at the moment, is called. |
Example |

Instruction MCRO calls the subroutine with the number 010. Contents of words DM0010 - DM0013 is copied to SR232 - SR235 and upon execution of the instruction, contents of words SR236 - SR239 is copied to the words DM0020 - DM0023. |
E.75 INTERRUPT CONTROL - Interrupt control
Description |
Instruction controls the interrupts and executes one of the seven functions presented in the table below, according to the value of the word C1.
C1 |
Function |
000 |
Mask/unmask interrupts |
001 |
Clear the interrupt input |
002 |
Read the current mask for interrupt inputs |
003 |
Reset decrement counter and unmask interrupts |
004 |
Reset increment counter and unmask interrupts |
100 |
Mask all interrupts |
200 |
Unmask all interrupts |
NOTE: Value of the word C1 004 refers to models CPM2A/CPM2C of PLC controller, so it will not be detailed here.
C1=000 Function is used for masking and unmasking the interrupt inputs 00003 - 00006. Masked interrupts are registered, but the part of the program assigned to them will not be executed until the mask is off. Upon unmasking interrupt input, interrupt routine will immediately take place (unless, in the meantime the bit corresponding to that interrupt input is reset with the instruction INT, parameter C1=001). The input being masked or unmasked is determined by parameter C2 according to the following scheme (bear in mind that we work with bits and not with digits of the word C2). Bits 4, 5, 6...15 should be set to zero. All interrupt inputs are masked upon starting the PLC controller.
C1=001 Function resets the registered interrupts, so that interrupt routine cannot take place upon unmasking the interrupt input. Bits 4, 5, 6...15 of the word C2 should be set to zero.

C1=002 Function reads the status of the mask for interrupt inputs 00003 - 00006 and stores the read state into the word C2. Interrupt input is masked if the state of the corresponding bit equals “1”. Bits 00 - 03 correspond to interrupt inputs 00003 - 00006.

C1=003 Function restarts the interrupt inputs in the counter mode. The current counter value (SR240 - SR243) is set to the starting state and the interrupt is unmasked. If C1=003, decremental counter is restarted, while in the case of C1=004 incremental counter is restarted. As CPM1A model of PLC does not feature incremental counter, this option should not be used. When using the options C1=003 or C1=004 differencial form of the instruction shoud be used @INT or else the current counter state (PV) will be reset to the starting state (SV) and the interrupt will never be generated. Writing the value “0000” to the starting counter state and executing the INT instruction with parameter C1=003 stops the counter and disables interrupts.
To start the counter again, non-zero value should be written to a starting value SV and the instruction INT executed. Interrupts in the counter mode can be masked by executing the instruction INT with parameter C1=000 and set corresponding bit in C2. If same is done, but with “0” for the appropriate position in the word C2 interrupt input will behave as a regular interrupt ulaz and not as counter interrupt input.

C1=100 Function masks all the interrupts including the interval timer interrupts and the high-speed counter interrupts. Masked interrupts are registered, but are not executed. This function is also called a global interrupt mask and it does not affect the masks of specific interrupts. This option should be used for temporary disabling all the interrupts. It is cmmonly used in pair, one function masks all the interrupts and the other one unmasks them. Function cannot be used within the interrupt routine.

C1=200 Function unmasks all the interrupts including the interval timer interrupts and the high-speed counter interrupts. If the specific interrupt is masked, global unmasking does not affect the state of the specific interrupt input state. Function cannot be used within the interrupt routine.

|
Ladder symbol |
 |
Flag |
ER flag changes state to ON if: C1 is not 000, 001, 002, 003, 004, 100 or 200. C2 is not in 0000 - 000F range. INT instruction is executed with C1=100 or 200 within the interrupt routine. INT instruction is executed with C1=100 when all inputs are already masked. INT instruction is executed with C1=200 when all inputs are already unmasked. |
E.76 INTERVAL TIMER - Interval timer
Description |
Instruction is used for controling the timer interrupt. Instruction mode is determined according to the value of the word C1.
C1 |
Function |
000 |
Start the interrupt timer with only one timer |
003 |
Start the timer with periodical interrupts |
006 |
Read the current timer value |
010 |
Stop the timer |
C1=001 or 003 C2 can be either a constant or an address of a word in PLC controller memory. C2=constant If C2 is a constant, then it represents the starting value of decremental counter in BCD format (form 0000 to 9999 which is equivalent to 0 - 9.999 ms) and C3 represents the number of the interrupt routine (from 000 to 049). C2=address of a word in memory If C2 is a word in PLC controller memory, then its contents is a starting value of decremental counter in BCD format. Cotents of the word C2+1 represents the measurement unit (BCD, 0005 - 0320) in 0.1s decrements. Interval is, in that case, 0.5 - 32ms. Starting value of the timer is calculated as C2 * (C2+1) * 0.1s. C3 represents the number of the interrupt routine. C1=006 Function reads the current timer state. Parameter C2 represents the memory address where the read timer state is stored, while C2+1 stores the measurement unit. Parameter C3 reresents the memory address where the data concerning the time passed since the last decrementation of timer in BCD format is stored in 0.1s units. C1=010 Function stops the timer. Parameters C2 and C3 are without function and should be set to “0000”. |
Ladder symbol |
 |
Flag |
ER flag changes state to ON if C1 is not 000, 003, 006 or 010 or in case that the number of interrupt routine is not within 0000 - 0049 range. |
E.78 I/O REFRESH - Premature writing to I/O table
Description |
Instruction checks the states of words from the address St to the address E and refreshes them according to the current state of the program. Instruction is used when we want to know the state of certain bit without waiting it to be refreshed in the course of regular cycle of refreshing the inputs and outputs of PLC controller (IR000 - IR019). |
Ladder symbol |
 |
Limitations |
Address of the word St has to be lower or equal to the address of the word E. |
Flag |
ER flag changes state to ON if words St and E do not belong to IR000 - IR019 range or in case that the address of the word St is greater than the address of the word E. |
E.79 MESSAGE - Displays message in the programming console
Description |
Instruction reads the contents of eight words from the address FM and displays them in the program console. Contents of the word has to be in ASCII format, with every word containing 2 ASCII characters. If not all the words are to be displayed in the console, displaying can be stopped if the string “OD” is put into following word. |
Ladder symbol |
 |
Limitations |
Words DM6144 - DM6655 cannot be used as operand FM. |
Flag |
ER flag changes state to ON in case of error. |
E.80 MODE CONTROL - Controls the high-speed counter or the pulse output
Description |
Instruction controls the high-speed counter. There are several functions depending on parameters P, C and P1. Parameter P defines if either high-speed counter or pulse output will be controlled with this instruction.
P |
Function |
000 |
Designates the input of PLC controller that will be used as high-speed counter (000.00, 000.01 and 000.02). Determines mono-phase signal of logical zero with no acceleration/deceleration (outputs 010.00 and 010.01)Determines mono-phase signal of logical zero with trapezoid acceleration/deceleration (output 010.00) |
010* |
Determines mono-phase signal "1" with no acceleration/deceleration (output 010.01) |
100* |
Designates interrupt input 0 in counter mode (input 000.03) |
101* |
Designates interrupt input 1 in counter mode (input 000.04) |
102* |
Designates interrupt input 2 in counter mode (input 000.05) |
103* |
Designates interrupt input 3 in counter mode (input 000.06) |
NOTE: * refers to CPM2A/CPM2C PLC controller models.
C |
P1 |
Function |
000 |
000 |
Starts comparing the current value with the values from comparison table (CTBL) |
001 |
000 |
Stops comparing the current value with the values from comparison table (CTBL) |
002 |
New value of the current state (PV) |
Changes the current value PV of high-speed counter or interrupt input in counter mode |
003 |
000 |
Stops the pulse output |
005* |
New value of the current state (PV) |
Changes the current state of pulse output |
006* |
000 |
Stops the synchronized pulse output |
NOTE: * refers to CPM2A/CPM2C PLC controller models.
C=000 or C=001 Function starts or stops comparing the current value of high-speed counter PV with the values from the comparison table created with instruction CTBL. If the comparison table wasn’t created ahead of executing the INI instruction, the error occurs. Generally, when INI instruction with C=000 is used, differential form @INI is recommended, because one set of starting comparisons is sufficient. C=002 Function changes value of the current state of the high-speed counter or the interrupt in the counter mode. Fast counter PV ( P=0 ) Function changes the contents of PV to 8-digit BCD number contained in the words P1 and P1+1. If differential-phase mode or ”up/down “ input mode is used, PV can have value between F838 8608 and 0838 8607, where “F” as the first digit is treated as a minus sign. PV can have value between 000 0000 and 1677 7215 in incremental mode. Interrupt counter input PV ( P=100, P=101, P=102, P=103) Function changes the contents of PV to 4-digit hexadecimal number from the word P1 (from 0000 to FFFF). C=003 Function stops the pulse output. C=004 Function changes the value of the current PV pulse output state to an 8-digit BCD value in the words P1 and P1+1. Change cannot be done while the pulse output is in function. New value can be from -16.777.215 to +16.777.215. Bit no.15 of the word P1+1 behaves like a sign: “0” stands for positive, “1” stands for negative number. C=003 Function stops the synchronized pulse output. |
Ladder symbol |
 |
Limitations |
If CPM1 or CPM1A PLC controller is used, parameter P has to be 000 and parameter C has to be 000, 001, 002 or 003. P1 has to be 000 if C is not 002 or 004. If an address from DM memory area is used as parameter P1, reading and writing to that location has to be enabled. |
Flag |
ER flag changes state to ON if comparison table exceeds one memory area. |
E.81 HIGH-SPEED COUNTER PV READ - Reads the current value of high-speed counter
Description |
Instruction controls the current state of high-speed counter, pulse output, interrupt input in counter mode or input frequency for synchronized input. There are several functions depending on parameters P, C and D.Parameter P defines if either high-speed counter or pulse output will be controlled with this instruction.
P |
Function |
000 |
Designates the input of PLC controller that will be used as high-speed counter (inputs 000.00, 000.01 and 000.02). Designates input frequency for synchronized pulse input (inputs 000.00, 000.01 and 000.02). Determines mono-phase signal of logical zero with no acceleration/deceleration (outputs 010.00 and 010.01)Determines mono-phase signal of logical zero with trapezoid acceleration/deceleration (output 010.00) |
010* |
Determines mono-phase signal "1" with no acceleration/deceleration (output 010.01) |
100* |
Designates interrupt input 0 in counter mode (input 000.03) |
101* |
Designates interrupt input 1 in counter mode (input 000.04) |
102* |
Designates interrupt input 2 in counter mode (input 000.05) |
103* |
Designates interrupt input 3 in counter mode (input 000.06) |
NOTE: * refers to CPM2A/CPM2C PLC controller models.
Control word determines the type of data to be accessed.
C |
Destination word |
Function |
000 |
D and D+1 |
Reads the current state of high-speed counter, of interrupt input in counter mode or input frequency of synchronized pulse control
|
001 |
D |
Reads the status of high-speed counter or pulse output |
002 |
D |
Reads the results of comparing with values from comparison table |
003 |
D and D+1 |
Reads the current value of pulse output |
NOTE: * refers to CPM2A/CPM2C PLC controller models.
C=000 Function reads the current value of PV of the specified high-speed counter or the interrupt input in counter mode. Fast counter PV or input frequency (P=000) When the output is used as the high-speed counter, instruction reads the current value of the specified fast counter and writes an 8-digit BCD value to D and D+1. If differential-phase mode or ”up/down “ input mode is used, PV can have value between F838 8608 and 0838 8607, where “F” as the first digit is treated as a minus sign. PV can have value between 000 0000 and 1677 7215 in incremental mode. When the input is used as synchronic pulse input, the instruction reads the input frequency and writes an 8-digit BCD value to D and D+1. Range of the input frequency is 0000 0000 - 0002 0000. Interrupt counter input PV ( P=100, P=101, P=102, P=103) Function changes the contents of PV to 4-digit hexadecimal number from the word D (from 0000 to FFFF). C=001 Function reads the status of the high-speed counter or the pulse input and stores the data into D. Status of the high-speed counter or the pulse input 0 (P=000) The table below shows the function of bits in the word D when P=000. Bits not mentioned are not used and are always zero.
For... |
Bit |
Function |
High-speed counter |
00 |
Status of comparing high-speed counter with values from comparison table (0: not compared, 1:compared) |
01 |
High-speed counter below/above the specified value (0: in range, 1:out of range) |
Pulse output |
05 |
Total number of pulses defined for pulse output 0 (0: number of pulses not defined, 1:number of pulses defined) |
06 |
Defined number of pulses on output 0 executed (0: not executed, 1:executed) |
07 |
Pulse output 0 state (0: stopped, 1:executing) |
08 |
Current state PV of pulse output (0: in range, 1:out of range) |
09 |
Rate on pulse output 0 (0: constant, 1:accelerates/decelerates) |
Status of the pulse output 1 (P=010) The table below shows the function of bits in the word D when P=010. Bits not mentioned are not used and are always zero.
Bit |
Function |
05 |
Total number of pulses defined for pulse output 1 (0: number of pulses not defined, 1:number of pulses defined) |
06 |
Defined number of pulses on output 1 executed (0: not executed, 1:executed) |
07 |
Pulse output 1 state (0: stopped, 1:executing) |
08 |
Current state PV of pulse output (0: in range, 1:out of range) |
09 |
Rate on pulse output 1 (0: constant, 1:accelerates/decelerates) |
C=002 Function reads the result of comparing the current value PV with 8 areas defined by instruction CTBL and stores data into D. Bits 0 to 7 contain the results of comparing with 8 ranges from the comparison table (0: not in range, 1: in range). C=003 Function reads the value of current state of PV pulse output and stores it to 8-digit BCD value in words D and D+1. PV can have value from -16.777.215 to +16.777.215. Bit no.15 of the word D+1 behaves like a sign: “0” stands for positive, “1” stands for negative number. |
Ladder symbol |
 |
Limitations |
If CPM1 or CPM1A PLC controller is used, parameter D has to be 000 and parameter C has to be 000, 001 or 002. If an address from DM memory area is used as parameter D, reading and writing to that location has to be enabled. D and D+1 have to belong to the same memory area. |
Flag |
ER flag changes state to ON if an error concerning the value of instruction operand occurred. |
E.82 COMPARISON TABLE LOAD - Defines a comparison table
Description |
Instruction forms the comparison table for working with high-speed counter. Depending on parameter C, comparison can be immediate or it can be called upon with instruction INI.
C |
Function |
000 |
Registers comparison table containing values and starts comparing |
001 |
Registers comparison table containing ranges and starts comparing |
002 |
Registers comparison table containing values. Comparing starts with INI instruction |
003 |
Registers comparison table containing ranges. Comparing starts with INI instruction |
When the current value of PV matches some of the specified table values or it belongs to one of the specified ranges, the appropriate subroutine is called. If the high-speed counter is not enabled in PC area (DM6642) instruction CTBL cannot be executed. Comparing with values Comparison table can have up to 16 values. Each of these values is assigned a number of subroutine that is called when the current value matches the table value. With CPM1 and CPM1A models, comparison is done one at a time in each cycle, while with models CPM2A and CPM2C comparison is done for all table values simultaneously. After comparing with the last table value, comparison starts from the first value again. The table below shows the structure of the comparison table containing values. Each value is assigned three words in the table. If the value “FFFF” is used as the number of subroutine, no subroutine will be executed in case of a match.
TB |
Number of values that current value is compared with (0001 to 0016, BCD) |
TB+1 |
Value no.1 (lower four digits in BCD format) |
TB+2 |
Value no.1 (higher four digits in BCD format) |
TB+3 |
Number of subroutine for matching the first value |
... |
|
Comparing with a range of values Comparison table with ranges contains 8 ranges, which the current value PV is compared with. Ranges can overlap, allowing that the current value PV falls into several of these; in this case, the subroutine of the first matching area is called. If the value “FFFF” is used as the number of subroutine, no subroutine will be executed in case of a match.
TB |
Lower value no.1 (lower four digits in BCD format) |
TB+1 |
Lower value no.1 (higher four digits in BCD format) |
TB+2 |
Higher value no.1 (lower four digits in BCD format) |
TB+3 |
Higher value no.1 (higher four digits in BCD format) |
TB+4 |
Number of subroutine in case that the current value PV is within range no.1 |
... |
|
TB+35 |
Lower value no.8 (lower four digits in BCD format) |
TB+36 |
Lower value no.8 (higher four digits in BCD format) |
TB+37 |
Higher value no.8 (lower four digits in BCD format) |
TB+38 |
Higher value no.8 (higher four digits in BCD format) |
TB+39 |
Number of subroutine in case that the current value PV is within range no.8 |
|
Ladder symbol |
 |
Limitations |
In each area lower border has to be lower than the upper border. Number of subroutine can be used for several ranges. Table has to belong to a single memory area. Parameter D has to be 000 and the parameter C has to be 000, 001, 002 or 003. |
Flag |
ER flag changes state to ON if an error concerning the value of instruction operand occurred. |
E.83 FAILURE ALARM AND RESET - Generates error code
Description |
Instruction generates the code of an error that took place, so that the programmer can use that information for debugging or program maintenance. Error code is stored in the first 8 bits of the word SR253 and has value between 01 and 99.

In case of multiple errors, only one code will be displayed. To display the other codes, it is necessary to reset bits 00-07 of the word SR253 via instruction FAL with parameter N=00. Upon each reset, new error code will be displayed (if there is more than one error). Error code remains in PLC controller memory after the power is off. When error occurs, besides the code, programmer will be notified with blinking diode on the casing of PLC controller. Instruction FAL with parameter N=0 may be used for resetting the message created with the instruction MSG. |
Ladder symbol |
 |
E.84 SEVERE FAILURE ALARM - Generates fatal error code
Description |
Instruction generates the code of an error that took place, so that the programmer can use that information for debugging or program maintenance. Error code is stored in the first 8 bits of the word SR253 and has value between 01 and 99. Upon occurence of fatal error, diode ALARM/ERROR turns on on the casing of PLC controller and the PLC stops operating.

PLC controller continues the program execution only when cause of error is removed. Error code remains written and may be read. |
Ladder symbol |
 |
E.85 SET CARRY - Sets carry bit
Description |
Instruction changes the state of carry bit CY to ON. Carry bit is an integral part of the word SR255, and its address is SR255.04. |
Ladder symbol |
 |
E.86 CLEAR CARRY - Resets carry bit
Description |
Instruction changes state of carry bit CY to OFF. Carry bit is an integral part of the word SR255, and its address is SR255.04. |
Ladder symbol |
 |