ACS_COM_MOD_RTU Communication for ACS / DCS Drives via MODBUS RTU¶
Function Block ACS_COM_MOD_RTU controls the MODBUS RTU communication to an ACS / DCS drive and is used for the basic control of ACS / DCS drives with ABB Drives Profile.
Function Block Information
Available from PLC runtime system: | V1.3.2 |
Included in library: | ACSDrivesComModRTU_AC500_V20.lib |
Function Block | with historical values |
Function Block ACS_COM_MOD_RTU controls the MODBUS RTU communication to an ACS / DCS drive and is used for the basic control of ACS / DCS drives with ABB Drives Profile. Reading Status Information from Drive The Function Block continuously reads data from the drive starting at MODBUS register 40004. At least the Status Word (SW), Actual Value 1 (SPEED_REF), Actual Value 2 (ACT_VALUE2) are continuously read from the drive and written to the DRIVE_DATA variable.
With input NVAR_READ the Function Block can be configured to read in the same job between 0 .. 24 data more from the drive. These additional data is written to the array at the READ_VALUES output. These data have to be configured in the drive and are only accessible if the embedded MODBUS is used. See table below for detailed information.
The following table shows the performed MODBUS read job and the needed mapping in the drive as well as the area where the data is stored in the AC500.
MODBUS register address in drive *) | Mapping configuration in drive | Written to in AC500 | Condition at Function Block | |||||
---|---|---|---|---|---|---|---|---|
ACS3XX, ACX550 | ACS850, ACQ810 | ACS580 | ACS850, ACQ810, ACSM1, ACS880, | ACS800 | DCS550, DCS800 | |||
Communication module | embedded fieldbus | embedded fieldbus | embedded fieldbus | FSCA-01 | RMBA-01 | RMBA-01 | ||
40004 | Status Word (SW) | Status Word (SW) | Par.: 58.104 = 4 - Status Word (SW) | Status Word (SW) | Status Word (SW) | Par.: 92.01=801 Status Word (SW) | DRIVE_DATA.sw | EN = TRUE |
40005 | Par. 53.10 (e.g.101) | Actual Value1 | Par.: 58.105 = 5 – Actual Value1 | Actual Value 1 | Par.: 92.02 = Actual Value1 e.g. = 102 (Speed) | Par.: 92.02 = 104 Actual Value1 e.g. = 102 (Speed) | DRIVE_DATA.actValue1 | EN = TRUE |
40006 | Par. 53.11 (e.g.105) | Actual Value2 | Par.: 58.106 = 6 – Actual Value2 | Actual Value2 | Par.: 92.03 = Actual Value2 e.g. = 105 (Torque) **) | 92.03 = 209 Actual Value2 e.g. = 105 (Torque) **) | DRIVE_DATA.actValue2 | EN = TRUE |
40007 | Par. 53.12 | Par. 58.35 | Par.: 58.107 | READ_VALUES[1] | EN = TRUE and NVAR_READ >= 1 | |||
40008 | Par. 53.13 | Par. 58.36 | Par.: 58.108 | READ_VALUES[2] | EN = TRUE and NVAR_READ >= 2 | |||
40012 | Par. 53.17 | Par. 58.40 | Par.: 58.112 | READ_VALUES[6] | EN = TRUE and NVAR_READ >= 6 | |||
40014 | Par. 58.42 | Par.: 58.114 | READ_VALUES[8] | |||||
40030 | Par. 58.58 | READ_VALUES[24] | EN = TRUE and NVAR_READ = 24 | |||||
*) For ACS850, ACQ810 and external fieldbus adapters are having 6 digit MODBUS address. Eg; ACS3XX Status Word MODBUS address is 40004 and ACS850 MODBUS address is 400004. **) If 51.19 .. 51.22 (Output 1 .. 4) are set to the actual values the MODBUS response will be faster because those values are updated cyclically between RETA-01 and ACS800. |
Note
If a MODBUS job tries to access a register in the drive which has no valid mapping information the job is aborted with an error. Therefore in ACS3XX/ACX550 at least the Par. 53.10 and 53.11 have to be configured to the Actual Value1 and Actual Value2 e.g. 101 and 105.
If e.g. NVAR_READ = 5 the values from READ_VALUES[1 .. 5] are updated. Then all of the configured parameters Par. 53.12 … 53.16 in the ACS3XX/ACX550 or Par. 58.35 & 58.38 in ACS850/ACQ810 drive must contain valid mapping information (not zero).
The Function Block checks if there are changes of the Control Word (CW), Reference Value 1 (SPEED_REF) or Reference Value 2 (REF_VALUE2) on the DRIVE_DATA variable. If there is a change a write job is requested to send these 3 values to the ACS drive starting at MODBUS register 40001.
The following table shows the performed MODBUS write job and the needed mapping in the drive as well as the area where the data is stored in the AC500.
MODBUS register address in drive | Mapping configuration in drive | Taken form AC500 | Condition at Function Block | ||
---|---|---|---|---|---|
For all ACS drives | DCS 800 / DCS550 | ACS 580 | |||
40001 | Control Word (CW) | Par.: 90.01 = 701 – Control Word (CW) | Par.: 58.101 = 1 – Control Word (CW) | DRIVE_DATA.cw | EN = TRUE |
40002 | Reference Value1 | Par.: 90.02 = 2301 – Reference Value 1 | Par.: 58.102 = 2 – Referencec Value 1 | DRIVE_DATA.refValue1 | EN = TRUE |
40003 | Reference Value2 | Par.: 90.03 = 2501 – Reference Value 2 | Par.: 58.103 = 3 – Referencec Value 2 | DRIVE_DATA.refValue2 | EN = TRUE |
The requests to process other read or write MODBUS jobs is transferred via the DRIVE_DATA variable at the IN_OUT variable DRIVE_DATA which can be connected to several other ACS_MOD_READ_N_PRM or ACS_MOD_WRITE_N_PRM Function Blocks of this drive.
If several drives are used, for each drive a communication Function Block such as ACS_COM_MOD_RTU must be programmed. Also every other generic slave device on the same MODBUS RTU line must be programmed with it´s own ACS_COM_MOD_RTU_GEN Function Block. All those communication Function Blocks of one MODBUS RTU line must be linked together via one variable of type ACS_MOD_TOKEN_TYPE, connected to the IN_OUTPUTs LINE_TOKEN. Via this variable the MODBUS token is passed to the next drive / device, so only one drive / device at a time is communicating with the PLC.
Diagnosis
The output ERNO, which reflects an actual error number is only valid for one cycle if DONE and ERR output are set to TRUE.
To catch this error number an external function must be programmed.
However there are internal diagnosis variables available, which are not shown at any output, but can be accessed from the Function Block instance. This can be done in three ways:
- Opening the “+” sign of Function Block instance in the declaration part being online.
- Create an assignment in the code with <instance>.<diagnosis variable>
- Create a visualization element of the Function Block ACS_COM_MOD_RTU_VISU_PH.
The additional diagnosis variables are:
iWriteErrCnt: | number of errors in write jobs since EN = TRUE |
wLastWriteErno: | holds the error number of the last executed write job |
iReadErrCnt: | number of errors in read jobs since EN = TRUE |
wLastReadErno: | holds the error number of the last executed read job |
Preconditions
The Function Block is working with all ACS / DCS drives via MODBUS RTU communication.
The data transfer to other Function Blocks for this drive communication to the ACS /DCSdrive is realized via the IN_OUTPUT variable DRIVE_DATA, which must be connected to the ACS_COM_MOD_RTU even if no other Function Block is connected.
The MODBUS token is passed to other communication Function Blocks such as ACS_COM_MOD_RTU or ACS_COM_MOD_RTU_GEN via the IN_OUTPUT variable LINE_TOKEN which must be connected even if no other of those communication Function Blocks is used.
The following ACS drive parameters have to be set according the configuration for the MODBUS line and the inputs of the Function Block.
Setting according to AC500 configuration or Function Block input | ACS3XX, ACX550 | ACS850, ACQ810 | ACS580 | ACS850, ACQ810, ACSM1, | ACS880 | ACS800 |
---|---|---|---|---|---|---|
Communication module: | direct or FMBA-01 | embedded fieldbus | embedded fieldbus | FSCA-01 | FSCA-01 | RMBA-01 |
Fieldbus activation = STD MODBUS or MODBUS RS232 | 98.02 | 58.01 | 58.01 | 50.01 | 50.01 | 98.02 |
SLAVE number | 53.02 | 58.03 | 58.03 | 51.03 | 51.03 | 52.01 |
Baudrate = AC500 MODBUS configuration | 53.03 | 58.04 | 58.04 | 51.04 | 51.04 | 52.02 |
Parity, Data- and Stopbits = AC500 MODBUS configuration | 53.04 | 58.05 | 58.05 | 51.05 | 51.05 | 52.03 |
Control profile = ABB Drives (lim or full) but not ABB drives enhanced nor DCU profile | 53.05 | 58.06 | 58.25 | 51.02 | 51.02 | 98.07 |
Mapping of Control Word MODBUS register 40001 | Fix | Fix | 58.101 | Fix | ||
Mapping of Reference Value 1 MODBUS register 40002 | Fix | Fix | 58.102 | |||
Mapping of Reference Value 2 MODBUS register 40003 | Fix | Fix | 58.103 | Fix | ||
Mapping of Status Word MODBUS register 40004 | Fix | Fix | 58.104 | Fix | ||
Mapping of Actual Value1 MODBUS register 40005 | 53.10 e.g. 101 | Fix | 58.105 | Fix | Fix | Fix |
Mapping of Actual Value2 MODBUS register 40006 | 53.11 e.g. 105 | Fix | 58.106 | Fix | Fix | Fix |
Timeout mode = None(0) or Any message(1), but not Ctrl write(2) as theses values are only written after changes. | 58.08 | 58.15 | 51.07 | Timeout mode | Fix monitoring of Main and Auxiliary data sets. See Manual Par.30.18. | |
MODBUS timeout. Depending on Timeout mode. Value in 100ms. | 58.07 | 58.16 | 51.06 | MODBUS timeout | Fix | |
Refresh settings in drive | 58.10 | 58.06 | 51.27 | 51.27 |
For further settings, e.g. reaction of drive at communication error, please see related drive or fieldbus adapter manual.