==============================================================================
PROFIBUS DP ADDRESS MAP
Pro-face SP5000 + PFXZCDEUPF1 (PROFIBUS DP Slave / MPI unit)
==============================================================================

Generated by make_profibus_csv.py. Do not edit by hand -- regenerate.

------------------------------------------------------------------------------
1. DEVICE AND NETWORK
------------------------------------------------------------------------------
  GSD file .............. PFE_08DF.gsd   (Ident_Number 0x08DF)
  Catalog path .......... PROFIBUS DP > Additional Field Devices >
                          MMI > Proface-PROFIBUS DPSlave
  Slave station address . must match the address set in the BLUE project
  Input size ............ 104 words / 208 bytes   (HMI -> PLC)
  Output size ........... 16 words / 32 bytes   (PLC -> HMI)
  Packet transfer ....... not used (Direct I/O only, no FB99 needed)
  Byte order ............ H/L, high byte first (big-endian).
                          Fixed by the driver, not configurable.

  The input and output sizes on the master MUST equal the sizes above.
  A mismatch produces 'RHxx147 Wrong configuration received from
  PROFIBUS master' on the panel and the slave never exchanges data.

  DIRECTION is always from the MASTER's point of view:
    INPUT   master reads   HMI -> PLC   panel writes it
    OUTPUT  master writes  PLC -> HMI   read-only in the panel
  Note AIRFLOW_INPUT is supplied by the PLC, so it lives in the
  OUTPUT area despite its name.

------------------------------------------------------------------------------
2. MODULES TO PLACE IN THE SLOT LIST
------------------------------------------------------------------------------
  Order matters. Byte offsets follow the order modules are placed into
  slots, and the GSD cannot enforce it. Placing these out of order
  silently shifts every value while the bus still looks healthy.

  slot  module name in the catalog          dir     words  bytes
  ----  ----------------------------------  ------  -----  -------
  1     "UE Sensor 1 IN (13W) b0-25"        input   13     0-25
  2     "UE Sensor 2 IN (13W) b26-51"       input   13     26-51
  3     "UE Sensor 3 IN (13W) b52-77"       input   13     52-77
  4     "UE Sensor 4 IN (13W) b78-103"      input   13     78-103
  5     "UE Sensor 5 IN (13W) b104-129"     input   13     104-129
  6     "UE Sensor 6 IN (13W) b130-155"     input   13     130-155
  7     "UE Sensor 7 IN (13W) b156-181"     input   13     156-181
  8     "UE Sensor 8 IN (13W) b182-207"     input   13     182-207
  9     "UE Sensor 1 OUT (2W) b0-3"         output  2      0-3
  10    "UE Sensor 2 OUT (2W) b4-7"         output  2      4-7
  11    "UE Sensor 3 OUT (2W) b8-11"        output  2      8-11
  12    "UE Sensor 4 OUT (2W) b12-15"       output  2      12-15
  13    "UE Sensor 5 OUT (2W) b16-19"       output  2      16-19
  14    "UE Sensor 6 OUT (2W) b20-23"       output  2      20-23
  15    "UE Sensor 7 OUT (2W) b24-27"       output  2      24-27
  16    "UE Sensor 8 OUT (2W) b28-31"       output  2      28-31

  16 of 16 module slots used (Max_Module in the GSD).
  This is exactly the device limit -- no room for further modules.
  To add datapoints later, group one direction into a single
  larger module instead of one module per sensor.

------------------------------------------------------------------------------
3. WHAT IS INSIDE ONE SENSOR BLOCK -- INPUT (HMI -> PLC)
------------------------------------------------------------------------------
  This is the part the GSD cannot express. PROFIBUS DP carries
  anonymous bytes: the master learns only the LENGTH of each
  module, never that four particular bytes are a REAL. The PLC
  program must interpret them according to this table.

  The pattern below repeats every 26 bytes, once per sensor.

  offset  size  datapoint             type  interpretation
  ------  ----  --------------------  ----  --------------------------
      +0     4  Sensor_N2O            REAL  32-bit IEEE-754 float
      +4     4  Temperature           REAL  32-bit IEEE-754 float
      +8     4  Rate_aerated          REAL  32-bit IEEE-754 float
     +12     4  Rate_non_aerated      REAL  32-bit IEEE-754 float
     +16     4  Emission_aerated      REAL  32-bit IEEE-754 float
     +20     4  Emission_non_aerated  REAL  32-bit IEEE-754 float
     +24     2  Status                WORD  16-bit unsigned integer
            26  TOTAL per sensor

------------------------------------------------------------------------------
4. WHAT IS INSIDE ONE SENSOR BLOCK -- OUTPUT (PLC -> HMI)
------------------------------------------------------------------------------
  The pattern below repeats every 4 bytes, once per sensor.

  offset  size  datapoint             type  interpretation
  ------  ----  --------------------  ----  --------------------------
      +0     4  AIRFLOW_INPUT         REAL  32-bit IEEE-754 float
             4  TOTAL per sensor

------------------------------------------------------------------------------
5. FULL ADDRESS TABLE
------------------------------------------------------------------------------
  'offset'   byte offset from the start of this slave's data area
  'PLC'      Siemens process-image address, assuming the master
             assigns start addresses of 256 (in) / 256 (out).
             Recompute as (your start address + offset). For direct
             peripheral access use %PID / %PQD instead of %ID / %QD.
  'BLUE'     device address inside the BLUE project (byte-offset based)
  'array'    BLUE array index of this sensor

  INPUT -- HMI -> PLC

  sensor  datapoint             type  offset  PLC        BLUE       array
  ------  --------------------  ----  ------  ---------- ---------- -----
  1       Sensor_N2O            REAL  0       %ID256     PID00000   [0]
  1       Temperature           REAL  4       %ID260     PID00004   [0]
  1       Rate_aerated          REAL  8       %ID264     PID00008   [0]
  1       Rate_non_aerated      REAL  12      %ID268     PID00012   [0]
  1       Emission_aerated      REAL  16      %ID272     PID00016   [0]
  1       Emission_non_aerated  REAL  20      %ID276     PID00020   [0]
  1       Status                WORD  24      %IW280     PIW00024   [0]

  2       Sensor_N2O            REAL  26      %ID282     PID00026   [1]
  2       Temperature           REAL  30      %ID286     PID00030   [1]
  2       Rate_aerated          REAL  34      %ID290     PID00034   [1]
  2       Rate_non_aerated      REAL  38      %ID294     PID00038   [1]
  2       Emission_aerated      REAL  42      %ID298     PID00042   [1]
  2       Emission_non_aerated  REAL  46      %ID302     PID00046   [1]
  2       Status                WORD  50      %IW306     PIW00050   [1]

  3       Sensor_N2O            REAL  52      %ID308     PID00052   [2]
  3       Temperature           REAL  56      %ID312     PID00056   [2]
  3       Rate_aerated          REAL  60      %ID316     PID00060   [2]
  3       Rate_non_aerated      REAL  64      %ID320     PID00064   [2]
  3       Emission_aerated      REAL  68      %ID324     PID00068   [2]
  3       Emission_non_aerated  REAL  72      %ID328     PID00072   [2]
  3       Status                WORD  76      %IW332     PIW00076   [2]

  4       Sensor_N2O            REAL  78      %ID334     PID00078   [3]
  4       Temperature           REAL  82      %ID338     PID00082   [3]
  4       Rate_aerated          REAL  86      %ID342     PID00086   [3]
  4       Rate_non_aerated      REAL  90      %ID346     PID00090   [3]
  4       Emission_aerated      REAL  94      %ID350     PID00094   [3]
  4       Emission_non_aerated  REAL  98      %ID354     PID00098   [3]
  4       Status                WORD  102     %IW358     PIW00102   [3]

  5       Sensor_N2O            REAL  104     %ID360     PID00104   [4]
  5       Temperature           REAL  108     %ID364     PID00108   [4]
  5       Rate_aerated          REAL  112     %ID368     PID00112   [4]
  5       Rate_non_aerated      REAL  116     %ID372     PID00116   [4]
  5       Emission_aerated      REAL  120     %ID376     PID00120   [4]
  5       Emission_non_aerated  REAL  124     %ID380     PID00124   [4]
  5       Status                WORD  128     %IW384     PIW00128   [4]

  6       Sensor_N2O            REAL  130     %ID386     PID00130   [5]
  6       Temperature           REAL  134     %ID390     PID00134   [5]
  6       Rate_aerated          REAL  138     %ID394     PID00138   [5]
  6       Rate_non_aerated      REAL  142     %ID398     PID00142   [5]
  6       Emission_aerated      REAL  146     %ID402     PID00146   [5]
  6       Emission_non_aerated  REAL  150     %ID406     PID00150   [5]
  6       Status                WORD  154     %IW410     PIW00154   [5]

  7       Sensor_N2O            REAL  156     %ID412     PID00156   [6]
  7       Temperature           REAL  160     %ID416     PID00160   [6]
  7       Rate_aerated          REAL  164     %ID420     PID00164   [6]
  7       Rate_non_aerated      REAL  168     %ID424     PID00168   [6]
  7       Emission_aerated      REAL  172     %ID428     PID00172   [6]
  7       Emission_non_aerated  REAL  176     %ID432     PID00176   [6]
  7       Status                WORD  180     %IW436     PIW00180   [6]

  8       Sensor_N2O            REAL  182     %ID438     PID00182   [7]
  8       Temperature           REAL  186     %ID442     PID00186   [7]
  8       Rate_aerated          REAL  190     %ID446     PID00190   [7]
  8       Rate_non_aerated      REAL  194     %ID450     PID00194   [7]
  8       Emission_aerated      REAL  198     %ID454     PID00198   [7]
  8       Emission_non_aerated  REAL  202     %ID458     PID00202   [7]
  8       Status                WORD  206     %IW462     PIW00206   [7]

  OUTPUT -- PLC -> HMI

  sensor  datapoint             type  offset  PLC        BLUE       array
  ------  --------------------  ----  ------  ---------- ---------- -----
  1       AIRFLOW_INPUT         REAL  0       %QD256     PQD00000   [0]
  2       AIRFLOW_INPUT         REAL  4       %QD260     PQD00004   [1]
  3       AIRFLOW_INPUT         REAL  8       %QD264     PQD00008   [2]
  4       AIRFLOW_INPUT         REAL  12      %QD268     PQD00012   [3]
  5       AIRFLOW_INPUT         REAL  16      %QD272     PQD00016   [4]
  6       AIRFLOW_INPUT         REAL  20      %QD276     PQD00020   [5]
  7       AIRFLOW_INPUT         REAL  24      %QD280     PQD00024   [6]
  8       AIRFLOW_INPUT         REAL  28      %QD284     PQD00028   [7]

------------------------------------------------------------------------------
6. UTILISATION
------------------------------------------------------------------------------
  INPUT
    8 sensors x 26 bytes  = 208 bytes used
    area size             = 224 bytes
    spare                 = 16 bytes
    highest PID  PID00202   limit PID00220
    highest PIW  PIW00206   limit PIW00222

  OUTPUT
    8 sensors x 4 bytes  = 32 bytes used
    area size             = 224 bytes
    spare                 = 192 bytes
    highest PQD  PQD00028   limit PQD00220

  Note: 'Total_emission' is deliberately not transmitted. Adding it as
  a 7th REAL would make the input stride 30 bytes and 8 sensors 240
  bytes, which overflows the 224-byte area by 16 bytes.

==============================================================================
