9. Appendix C: Practical Example (RSLogix 500)

9.3.Sub-Program for Reading a Parameter in all TeSys U Motor Starters: “LAD 4 - RD_PAR”

The role of this sub-program is to read the value of a single parameter on all TeSys U motor starters. As they are read, the results are placed into an array starting at N7:4 (motor starter no. 1) and ending at N7:11 (motor starter no. 8). Index N7:2 is used to access these various addresses. The processes carried out on this sub-program are described below, in the order in which they are run:

If the user changes the number (or address) of the parameter to be read (N7:1) this causes the data used by the sub-program to be reinitialized, but only if the previous reading process is finished (B3:0/0 = 0). The comparison between N7:1 (new address) and O:1.11 (address in the last command used) is made through a scratch variable, N9:0, in which the LSB and the MSB of the new address are swapped. The initializations are summarised below:

ƒB3:0/0 = 1 .................... A parameter is read on all TeSys U motor starters: In progress.

ƒReset (C5:0) ................ The number of motor starters polled counter is reinitialized.

ƒReset (T4:0)................. The timer associated with the timeout for a parameter’s read response is reinitialized.

ƒN7:2 = 4....................... Index in the array of results → No. of the 1st element in the array = N7:4.

ƒN7:3 = 1....................... Address of the Modbus slave polled → Address of the first TeSys U motor starter, that is to say 1.

ƒN7:[4..11] = 0............... The contents of the array of results is reset.

ƒB3:0/5 = 0 .................... Enables the update of the “trigger byte” that will trigger the emission of the query.

The output data corresponding to the read query is updated (O:1.10 to O:1.12) and the N7:36 counter (“trigger byte”) is increased by one. This update is only done once (bit B3:0/5 used for this pupose). Reminder: In the LUFP9 gateway’s default configuration, this output data corresponds to the personalized Modbus command “Transactions 1” of the “TeSys U n°1” node. The query frame for this personalized command is sent when the “trigger byte” located in bits 0-7 of O:1.16 is changed (“Update mode” = “Change of state on trigger”). As a result, increasing the N7:36 counter, then updating O:1.16 using N7:36 (in “LAD 2 – MAIN_LUFP9”), causes this query to be sent. On the other hand, the output data O:1.10 to O:1.12 must be valid so that the content of the Modbus query remains coherent!

The data from the Modbus response which corresponds to this read command is checked. The values of inputs I:1.10 and I:1.11 are compared to those of output O:1.10 and the value 16#02xx (AND mask set to 16#FF00) in order to determine whether the response to the command has arrived or not. If the slave number and the function number correspond to those of the query (see above) and the number of bytes of data received is correct, bit B3:0/1 is activated in order to tell the rest of the sub-program that the response has arrived and that it is correct. The N9:0 scratch variable is used to compare the inputs and the outputs in the same format.

The value of the read parameter is copied into the array of results. So the value of I:1.12 is transferred to the location reserved for the result of the motor starter currently being polled (use of index N7:2). This transfer only takes place if the response has arrived and its content is correct (bit B3:0/1 is active). The LSB and the MSB for this value are then swapped in this array so as to restore the value of the read parameter. The timer for the response timeout (T4:0) is reinitialized to allow the process of reading the same parameter on the next motor starter.

Management of the response timeout (TON block on variable T4:0). Until the response arrives or if its content is incorrect (bit B3:0/1 = 0), a 3-second timer is set. When this timeout (T4:0/DN = 1) is triggered, the related timer is reinitialized and a result set to –1 is placed in the array of results, at the location normally reserved for the motor starter being polled.

On receipt of the response, or after the timeout has been triggered, the internal data used by this sub-program is updated to allow the same parameter to be read on the next motor starter, up to the last of the 8 motor starters (addresses 1 to 8). Counter C5:0 is used to count the number of motor starters which have been polled so far.

When the reading of the 8th motor starter is finished (counter C5:0 reaching its preset value), the reading process is halted (bit B3:0/0 is reset). However, until the reading of the parameter for the 8th motor starter has finished, the sub-program restarts the next PLC cycle from the beginning (moving onto the next motor starter or continuing to wait for a response for the motor starter currently being polled).

89

Page 89
Image 89
Schneider Electric LUFP9 user manual Appendix C Practical Example RSLogix