ACS_COM_MOD_RTU Communication for ACS / DCS Drives via MODBUS RTU

../_images/b95f3df548bee8080a33139000a5d3cf

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.

Reading Status Information from Drive
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.