Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Then, after opening the module and navigating to the table editor, the "ListenAddress" and "ListenPort" properties must be set. The IP should be set to the IPv4 address of the Ethernet Adapter that is used to connect to the PLC, while the port should be set to 18831884. The IPv4 address can be found by opening the windows command window and typing the command "ipconfig".

...

After adding either, the topic must be set.

CODESYS MQTT Setup

WAGO MQTT Setup

Setting up a WAGO PFC200 PLC requires some configuration.

  1. Open the PLC's web server by entering its IP in a web browser and log in.
  2. Press "Configuration" in the menu bar.
  3. In the left menu, press "Cloud Connectivity".
  4. Press "Connection 1".
  5. Check Enabled.
  6. Set "Cloud Platform" to "MQTT AnyCloud".
  7. Set "Hostname" to the CDPStudio MQTTBroker's IP Address
  8. Set "Port Number" to the chosen port (1883).
  9. Set "Client ID" to a recognizable name such as "Wago".
  10. Set "Data Protocol" to "Native MQTT".
  11. Press "Submit".
  12. Press "Reboot" in the top right corner

The Wago is now configured to send MQTT data to the broker correctly.

CODESYS Creating a Publisher

To use MQTT with CODESYS, the WagoAppCloud library must be imported to the project. This can be done by:

  1. Press "Library Manager" in the current project.
  2. Press "Add Library".
  3. Expand "Application".
  4. Select "WagoAppCloud"
  5. Press OK.

A function block can then be created to simplify the use of the library:
Image Removed

Code Source: https://www.youtube.com/watch?v=UnhG15JFjao&t=822s&ab_channel=JugaadTech

This block can simply be added in a program like this:
Image Removed

Whenever the trigger gets a rising edge, it will publish the message to the broker.

CODESYS Creating a Subscriber

MQTT Topic Overview


MQTT "/status" Topic Overview (1 topic)

TopicDatatypeTypical ValuesPublisherDescription

/status

bool1PLC

Should be published at the start of every update so CDP can detect loss of connection. Value should always be 1.

MQTT "/settings" Topic Overview (32 topics)

TopicDatatypeTypical ValuesPublisherDescription
/settings/system/flowtimefloat600-1320CDPStudioHow long the keep the system in flow state in hours.
/settings/system/ebbtimefloat60-240CDPStudioHow long the keep the system in ebb state inhours.
/settings/system/flowtimefloat600-1320CDPStudioHow long the keep the system in flow state in hours.
/settings/system/ebbtimefloat60-240CDPStudioHow long the keep the system in ebb state inhours.
/settings/ebbflow/autobool1 or 0CDPStudio

Whether ebb and flow is controlled automatically (1) or manually (0)

/settings/ph/targetfloat5.8-6.0CDPStudioTarget PH value
/settings/ph/maxfloat6.0-6.2CDPStudioMaximum allowed PH value before system regulates
/settings/ph/minfloat5.6-5.8CDPStudioMinimum allowed PH value before system regulates
/settings/ph/autobool0 or 1CDPStudioWhether PH is controlled automatically (1) or manually (0)
/settings/ec/targetfloat11-12CDPStudioTarget EC value
/settings/ec/maxfloat12-12.5CDPStudioMaximum allowed EC value before system regulates
/settings/ec/minfloat11.5-12CDPStudioMinimum allowed EC value before system regulates
/settings/ec/autobool0 or 1CDPStudioWhether EC is controlled automatically (1) or manually (0)
/settings/air/temp/targetfloat20.5-21.5CDPStudioTarget air temperature
/settings/air/temp/maxfloat21.5-22CDPStudioMaximum allowed air temperature system regulates
/settings/air/temp/minfloat20-20.5CDPStudioMinimum allowed air temperature before system regulates
/settings/air/temp/autobool0 or 1CDPStudioWhether air temperature is controlled automatically (1) or manually (0)
/settings/air/humidity/targetfloat65-75CDPStudioTarget humidity%
/settings/air/humidity/maxfloat75-80CDPStudioMaximum allowed humidity% before system regulates
/settings/air/humidity/minfloat60-65CDPStudioMinimum allowed humidity% before system regulates
/settings/air/humidity/autobool0 or 1CDPStudioWhether EC is controlled automatically (1) or manually (0)
/settings/air/co2/targetfloat1000-2000CDPStudioTarget CO2 ppm
/settings/air/co2/maxfloat2500-3000CDPStudioMaximum allowed CO2 ppm before system regulates
/settings/air/co2/minfloat500-1000CDPStudioMinimum allowed CO2 ppm before system regulates
/settings/air/co2/autobool0-1CDPStudioWhether air co2 ppm is controlled automatically (1) or manually (0)
/settings/light/light1/timeonstring960-1320CDPStudioHow long to keep light 1 on. Convert to time in CODESYS with STRING_TO_TIME()
/settings/light/light1/timeoffstring120-480CDPStudio

How long to keep light 1 off. Convert to time in CODESYS with STRING_TO_TIME()

/settings/light/light1/timeon

string


960-1320CDPStudioHow long to keep light 2 on. Convert to time in CODESYS with STRING_TO_TIME()
/settings/light/light1/timeoffstring120-480CDPStudio

How long to keep light 2 off. Convert to time in CODESYS with STRING_TO_TIME()

/settings/light/autobool0 or 1CDPStudio

Whether lights are controlled automatically (1) or manually (0)

/settings/valve/exercise/statebool0 or 1CDPStudio

Whether valves should be exercised to avoid debris buildup and relubricate (1) or not (0)

/settings/valve/exercise/timefloat0 or 1CDPStudio

Time interval of how often to exercise the valves given in hours


MQTT "/override" Topic Overview (13 topics)

TopicDatatypeTypical RangePublisherDescription
/override/valve/tank1/ebbint0, 1, 2CDPStudioOverrides the tank 1 drain/ebb valve. 0 = Off, 1 = On, 2 = Auto.
/override/valve/tank1/flowint0, 1, 2CDPStudioOverrides the tank 1 fill/flow valve. 0 = Off, 1 = On, 2 = Auto.
/override/valve/tank2/ebbint0, 1, 2CDPStudioOverrides the tank 2 drain/ebb valve. 0 = Off, 1 = On, 2 = Auto.
/override/valve/tank2/flowint0, 1, 2CDPStudioOverrides the tank 1 fill/flow valve. 0 = Off, 1 = On, 2 = Auto.
/override/valve/threewayint0, 1, 2CDPStudioOverrides the three-way valve. 0 = Off, 1 = On, 2 = Auto.
/override/light1int0, 1, 2CDPStudioOverrides the light 1. 0 = Off, 1 = On, 2 = Auto.
/override/light1int0, 1, 2CDPStudioOverrides the light 2. 0 = Off, 1 = On, 2 = Auto.
/override/tank1/startebbbool0, 1CDPStudioSends a pulse to initiate the ebb process for tank 1
/override/tank1/startflowbool0, 1CDPStudioSends a pulse to initiate the flow process for tank 1
/override/tank2/startebbbool0, 1CDPStudioSends a pulse to initiate the ebb process for tank 2
/override/tank2/startflowbool0, 1CDPStudioSends a pulse to initiate the flow process for tank 2
/override/startprocessbool0, 1CDPStudioSets the process state. Should not be a pulse.

/override/pump

int0, 1, 2 CDPStudioOverrides the pump. 0 = Off, 1 = On, 2 = Auto.

MQTT "/sensor" Topic Overview (6 topics)

TopicDatatypeTypical RangePublisherDescription
/sensor/water/ecfloat0-30PLCWater EC measurement.
/sensor/water/phfloat5-7PLCWater PH measurement.
/sensor/water/tempfloat10-40PLCWater temperature measurement.
/sensor/air/tempfloat?PLCAir temperature measurement.
/sensor/air/humidityfloat?PLCAir humidity measurement.
/sensor/air/co2float?PLCAir CO2 measurement.

PETERFORWIKI"/system" Topic Overview (8 topics)

TopicDatatypeTypical RangePublisherDescription
'/state/valve/tank1/ebb'bool0, 1, 2PLCTank 1 drain/ebb valve state. 0 = auto, 1 = off, 2 = on
'/state/valve/tank2/ebb'bool0, 1, 2PLCTank2 drain/ebb valve state. 0 = auto, 1 = off, 2 = on
'/state/valve/tank1/flow'bool0, 1, 2PLCTank1 fill/flow valve state. 0 = auto, 1 = off, 2 = on
'/state/valve/tank2/flow'bool0, 1, 2PLCTank2 fill/flow valve state. 0 = auto, 1 = off, 2 = on
'/state/valve/threeway'bool0, 1, 2PLCThree-way valve state. 0 = auto, 1 = to reservoir (stirring), 2 = to tank1/2
'/state/pump'bool0, 1, 2PLCPump state. 0 = auto, 1 = off, 2 = on

MQTT "/system" Topic Overview (8 topics)

TopicDatatypeTypical RangePublisherDescription
/system/light1/statebool0, 1PLCLight state, 0 = off, 1 = on.
/system/light2/statebool0, 1PLCLight state. 0 = off, 1 = on
/system/light1/timeRemainingfloat0-24PLCTime until light 1 toggles on or off, given in hours.
/system/light2/timeRemainingfloat0-24PLCTime until light 2 toggles on or off, given in hours.
/system/tank1/statebool0, 1PLC

Tank 1 current state. 0 = ebb, 1 = flow

/system/tank2/statebool0, 1PLC

Tank 2 current state. 0 = ebb, 1 = flow

/system/tank1/timeRemainingfloat0-24PLC

Time remaining of tank 1 state. Given in hours.

/system/tank2/timeRemainingfloat0-24PLC

Time remaining of tank 2 state. Given

TopicDatatypePublisherDescriptionstatusboolPLS

Should be published at the start of every update so CDP can detect loss of connection. Value should always be 1.

water_ecfloatPLSWater EC measurement.water_phfloatPLSWater PH measurement.water_tempfloatPLSWater temperature measurement.air_tempfloatPLSAir temperature measurement.air_humidityfloatPLSAir humidity measurement.air_co2floatPLSAir CO2 measurement.light_stateboolPLSLight state, 1 when on, 0 when off.light_timeRemainingfloatPLSTime until light toggles on or off, given

in hours.