Compiled 2019/05/10, Andreas Fessel

QUICK START / Troubleshooting Guide for ebm-papst MODBUS fans with
PLC systems
After testing of several PLC systems with MODBUS fans, ebm-papst has compiled a checklist, which should avoid the most common problems andshould allow a quick access to MODBUS control.
12345678910

Checkliste
Ventilator ans Netz anschließen.
Konfiguration PLC als MODBUS-RTU Master
Die Baudrate einstellen  19200 Bd
MODBUS Datenpaketaufbau: 8E+1 Frame 
1 x Start Bit
8 x Daten Bits
1 x Parity Bit, “Even” Parity (gerade Parität)
1 x Stop Bit
Timeout auf ca. 150ms setzen, da die max. Bearbeitungszeit /Reaktionszeit der ebm-papst Ventilatoren bei ca. 100ms liegt.
MODBUS Adresse vom Teilnehmer muss bekannt seinmit ECControl überprüfen. Adresse „1“ ist Fabrikvoreinstellung ebm-papst.
Achtung! Die MODBUS-Adresse darf nur einmal je RS-485 Subnet
vorkommen. Eine Doppelbelegung von Adressen führt zu Datenkollision. Die Adresse 1 ist gewöhnlich für Servicezwecke reserviert(Ventilator ersetzen).
2-Drahtbelegung für die RS-485-Schnittstelle nach ebm-papst Festlegung lässt sich der MODBUS Konvention wie folgt zuordnen:
RSA = D1
RSB = D0
Die Übertragung erfolgt bei RS-485-Schnittstelle halbduplex
 das Senden und Empfangen erfolgt über die gleiche Leitung.
RSA senden(TxD)
RSA zusammenfassen
RSA empfangen (RxD)
RSB senden(TxD)
RSB zusammenfassen
RSB empfangen (RxD)

Checklist/Troubleshooting GuideConnect fan to the power.
Configure PLC as MODBUS RTU MasterSet baud rate to 19200 Bd
MODBUS frame description: 8E+1 Frame 
1 x Start Bit
8 x Daten Bits
1 x Parity Bit, “Even” parity
1 x Stop Bit
Set timeout parameter on egiste. 150ms
Response time of ebm-papst fans is egiste. 100ms
Check MODBUS address of fan  use EC-Control.
ebm-papst factory setting is „1“Attention! Each device needs a unique MODBUS address per RS485subnet. Double assignment of addresses will cause data collision.
Common practise is to reserve address „1“ for maintenance purpose(replace a fan).
The 2-wire specification for the ebm-papst RS485 interface can betranslated into the MODBUS convention:
RSA = D1
RSB = D0
The data transmission mode over RS485 interface is semi-duplex
 sending and receiving of data over the same wire connection
RSA send(TxD)
RSA combined
RSA receive(RxD)
RSB send(TxD)
RSB combined
RSB receive(RxD)

Bei den MODBUS Befehlen und Werten muss auf die hexadezimale
Eingabe geachtet werden (hier mit Präfix „#“ gekennzeichnet).

MODBUS commands and values use hexadecimal data format(marked with prefix “#”” below):

Beispiele:
Befehl 06 (Write Single Register)Befehl 06 (Write Single Register)Befehl 03 (Read Holding Register)Befehl 04 (Read Input Register)Befehl 04 (Read Input Register)

Following some examples
command 06 (Write Single Register)  #D101 (source of set-value)command 06 (Write Single Register)  #D001 (set-value)command 03 (Read Holding Register)  #D119 (max. speed)command 04 (Read Input Register)  #D010 (actual speed)command 04 (Read Input Register)  #D011 (motor status)

 #D101 (Sollwert-Priorität) #D001 (Sollwert setzen)
 #D119 (max. Drehzahl)
 #D010 (Ist-Drehzahl)
 #D011 (Motor Status)

Nach allen Schreibbefehlen ins EEPROM (Register > #D100) mussder Befehl #D000=#02 (Parameter-Reset) gesetzt werden, um die
Parameteränderung zu aktivieren! Auch auf die richtige Reihenfolge
der Daten erst Low und dann High Byte muss geachtet werden (bzw.
auf die PLC Spezifikation achten).
Beispiel: Adresse #D001, wobei data_to_send=array [0…n] of Byte
…High Byte (MSB) data_to_send [0]=#D0…Low Byte (LSB) data_to_send [1]= #01

All write-commands to EEPROM-memory (registers above #D100),
require the reset command #D000=#02 (Parameter-Reset) in order toactivate the change of parameters! Obey the correct order of „low“ and„high“ byte (also refer to the specifications of your particular PLCsystem)
Example: address #D001, with data_to_send=array [0…n] of Byte
…High Byte (MSB) data_to_send [0]=#D0…Low Byte (LSB) data_to_send [1]=#01

Ventilator z.B. mit EC-Control für digitale Sollwertvorgabe programmieren. „Sollwertpriorität“ auf RS-485 / Bus umstellen (#D101=#01)
Achtung! Fabrikvoreinstellung ist 0-10V-Steuerung. Damit ist keine
Drehzahleinstellung über Bus möglich.
Achtung! Im Falle von #D101=#01 bitte auch gleichzeitig #D103=0„save set-value“ ausschalten. Damit wird verhindert, dass der Sollwert
ständig (bei jeder Sollwertänderung) ins EEPROM geschrieben wird.

Program the fan for Bus control / „source of set value“=RS 485
using f.e. EC-Control (#D101=#01)
Attention! Factory default setting is 0-10V PWM control, and in thismode the set value over MODBUS is ignored.
Attention! In case of #D101=#01, #D103 should also be 0, in order todeactivate the “save set-value” function. This will avoid that new setvalues are permanently stored in EEPROM (with every new set-value)

11
12
13

14

Die Werte aus den Registern müssen teilweise noch umgerechnet, sodass sie Sinn ergeben. Beispiel – Drehzahl in 1/min:Drehzahl = Ist-Drehzahl (#D010) / 64000 x max.Drehzahl (#D119)
Programm auf die PLC übertragen + „RUN“-Modus betätigen
Einige MODBUS Parameter sind Passwort-geschützt (Schreibschutz)
und benötigen ein OEM Passwort für Schreibzugriff.
Ohne diese Freigabe ist es nicht möglich, diese Parameter / Register
mit dem “write holding” Befehl (code #06) zu beschreiben.
(siehe Zugriffsrechte “Schreiben Kunde” in der Parameterübersicht
Kapitel 2.1 der ebm-papst MODBUS Beschreibung).

Some parameter values need further evaluation in order to makesense. For instance – speed in rpm:
Speed = actual speed (#D010) / 64000 x max.speed (#D119)
Transfer the program to the PLC and go in „RUN“ mode.
Some MODBUS parameters are password protected (write protection)and require a OEM password.
Otherwise you are not able to access these parameters / holding
registers by “write holding” command (code #06).
(see permission “write customer” in holding register overview,
chapter 2.1 of ebm-papst MODBUS parameter spec.).

D002-D004 für „OEM“ Schreibzugriff einstellen:

Set D002-D004 to enable write access:

OEM Passwort ASCII: epM EC (epM[Leerzeichen]EC)
OEM Passwort Hex-codiert: (MSB LSB) 65 70, 4D 20, 45 43
Register: D002, D003, D004

OEM password ASCII: epM EC (epM[blank]EC)
Hex-coded OEM password: (MSB LSB) 65 70, 4D 20, 45 43
Registers: D002, D003, D004

Die Anzahl dieser Aktivierungen ist unbegrenzt. Sobald der Ventilator
einmal für OEM Schreibrechte eingestellt ist, können Parameter mit
OEM-Rechten für die Dauer von ca. 4 Minuten geschrieben werden.
Nach ca. 4 Minuten muss das OEM Passwort noch einmal eingegebenwerden.

The number of changes is not limited.
Once “OEM”-write permission is accepted by the fan, write holding
command (code #06) on “OEM” MODBUS parameters are accepted
for about 4 minutes. After 4 minutes the password needs to be
renewed.

Viele MODBUS protocol handler oder PLC verwenden einen AdressOffset für die Kommunikation (typisch +1). In diesem Fall würde derVentilator einfach unsinnige Informationen liefern aber keinen Fehler.
Um zu kontrollieren, dass man mit dem richtigen Registerkommuniziert (also ohne Offset) empfehlen wir, den Analogeingang
des Ventilators zu lesen, eine veränderliches 0-10V Signal anzulegenund den gelesenen Wert zu kontrollieren 0…FFFF

Regrettably many MODBUS protocol handlers and PLC’s are using anoffset for addressing MODBUS devices (typical +1). In this case thefan will deliver non-reliable information, but no failure will be indicatedof course. To double check if you are properly connected (withoutoffset) we recommend to read the analogue port of the fan, apply
changing 0-10V signal there and watch the reading 0-FFFFBefehl 04 (Read Input Register)15

 #D023 (0-10V Eingang)command 04 (Read Input Register) #D023 (0-10V port)

Bei Verdacht auf Offset z.B. +1 sollte #D024 getestet werden!

Try reading #D024 if an offset +1 has to be assumed!

Beim ursprünglichen MODBUS Protokoll gibt es eine Konvention,
wonach für MODBUS-Speicherstrukturen festgelegte Speicherbereiche definiert sind:Some conventions govern how access to MODBUS entities arereferenced. This convention applies to native MODBUS as follows:coils
discrete inputs
input registerholding register 00001-09999
 10001-19999
 30001-39999
 40001-49999

Mit dem „extended referencing“ ist diese Restriktionen auf 9999
Adressen für jeden Speicherbereich aufgehoben worden.
Register gemäß ebm-papst Parameter-Spezifikation liegen imerweiterten Bereich z.B. hex. D000 – D1FF (dezimal 53248-53759) fürInput Register, also außerhalb der ursprünglichen Konvention.
Damit diese Register adressiert werden können, muss der MODBUS
Master das „extended referencing“ unterstützen.
Bei älteren SIMATIC SPS können Input Registern jenseits der 9999
dezimal nicht adressiert werden. Ein Zugriff auf Input Register imBereich 53248-53759 (dezimal) per MODBUS Befehl #04 (read inputregister) ist in diesem Fall nicht möglich.

coils
discrete inputs
input registerholding register 00001-09999
 10001-19999
 30001-39999
 40001-49999

These rules have been egister since „extended referencing“ wasintroduced. Since that point in time address space is no longer limited
to 9999 addresses only for each entity.
Ebm-papst parameters are located in the extended parameter range
f.e. hex. D000 – D1FF (decimal 53248-53759) for input registers, which
is beyond the original convention. In order to access these parameters,
the MODBUS Master must support the „extended referencing”.
With older SIMATIC PLC, input egister beyond 9999 decimal cannot
be addressed. In this case, there will be no access to input registers
53248-53759 (decimal) by MODBUS command #04 (read inputregister).

16

Initialisierung - Mindestanforderungen für den MODBUS Betrieb.
Parameter, die einmalig geschrieben bzw. gelesen werden müssen:

Initial setup required for MODBUS operation. Minimum requirements tobe programmed respectively read one-time:„topdown“, von der Steuerung zum Ventilator, MB Schreib-Befehl
cmd #06:#D101=#01 Sollwert über MODBUS (Bus/RS485 Priorität) wählen
#D103=#00 Sollwert nicht speichern, SPS muss den Ventilator starten#D104=#01 Umschalten Parametersatz = intern#D105=#00 P1 als aktiven Parametersatz einstellen#D106=#02 PWM Aussteuergrad (#D106=#00 Drehzahlregelung)#D000=#02 Parameter-Reset, um obige Änderungen zu aktivieren“topdown” – from controller to fan, to be written by MB cmd #06:
#D101=#01 set-values trough MODBUS (Bus/RS485 priority)#D103=#00 deactivates save set-value option, PLC has to start the fan#D104=#01 source for parameter switch = internal#D105=#00 activates parameter-set P1 as working parameters#D106=#02 OL-control (#D106=#00 for CL speed control)#D000=#02 send parameter reset to activate above changes„bottomup“, von Ventilator zur Steuerung, zu lesen mit MB cmd #03:
#D119 Maximaldrehzahl, Bezugswert für Soll- und Ist-Drehzahl“bottomup” – from fan to controller, to be read by MB cmd #03:
#D119 max. speed, reference for speed translation

Optional: Bezugswerte für die Leistungsrechnung, falls gewünscht mit
MB cmd #03#D1A0 Bezugswert Uz = [#D1A0] x 20mV
#D1A1 Bezugswert Iz = [#D1A1] x 2mA(aktuelle Leistungsaufnahme #D021 mit MB cmd #04,
Leistung in mW = [#D021] / 65535 x [#D1A0] x [#D1A1] x 0,04mVA)

Option: if power-calculation is intended read by MB cmd #03:
#D1A0 reference Uz = [#D1A0] x 20mV
#D1A1 reference Iz = [#D1A1] x 2mA(power reading #D021 by MB cmd #04,
power in mW = [#D021] / 65535 x [#D1A0] x [#D1A1] x 0,04mVA)

Optional: Vorzugslaufrichtung der Motor-Laufradkombination#D282 Werkseinstellung der Laufrichtung: links=0, rechts=1

Option: sense of rotation default setting for the motorized impeller#D282 factory preset: left=0, right=1

17

Problem - unerwartete Drehzahländerung im MODBUS-Betrieb:
MODBUS Antriebe besitzen eine Kabelbruch-Erkennung, die beiausbleibendem MODBUS-Traffic für den jeweiligen Slave eine
Drehzahländerung hervorruft. Sofern diese Funktion aktiviert ist, nimmt
der Motor im Fehlerfall (Kabelbruch RS485) diese Drehzahl nacheinstellbarer Zeit (bei MODBUS 5 maximal 25,5s) automatisch an.
Wenn nun eine GLT die Daten der angeschlossenen MODBUS
Teilnehmer alle 2 Minuten (Abfragezyklus >25,5s) abfragt, kann es zu
Drehzahländerungen kommen, die zwar erklärbar sind, häufig aber alsFehlverhalten wahrgenommen werden. Die Notlauffunktion muss indiesem Fall deaktiviert werden um diese ungewünschte Drehzahländerungen zu vermeiden.

Problem - unexpected change of speed during MODBUS
communication:
MODBUS motors provide a fail-save function, which will automatically
activate a fail-safe speed in case there is no MODBUS traffic for therelated slave. Once this feature is activated the motor will change
speed if no command is received during an adjustable time-lag(maximum 25,5s with MODBUS 5). If a BMS system is polling data
every 2 minutes (or any loop time > 25,5s), there might be speed
changes in the system, which can be explained easily by the fail-safe
function but might be received as undesired. In this case, the fail-safe
function must be deactivated in order to avoid these undesiredchanges of speed.

18Die Anzahl der zulässigen Schreibzyklen ist bei EEPROMSpeicherbausteinen begrenzt. Das Limit liegt gemäß Herstellerangabe
bei ca. 100.000 Schreibzyklen maximal. Ansonsten besteht die Gefahr,
dass der EEPROM Speicher dauerhaft zerstört wird.
Wenn mit MODBUS-Befehlen 0x06 oder 0x10 auf Registerbereiche
größer oder gleich 0xD100 zugegriffen wird, dann erfolgt ein
Schreibzugriff direkt in den EEPROM Speicher der Ventilator
Elektronik und dies reduziert die Lebensdauer des EEPROMs.
Gleiches gilt für das Schreiben von neuen Sollwerten auf 0xD001
wenn die „save set-value“ Funktion aktiviert ist. Diese Sollwerte
werden dann ebenfalls ins EEPROM gespiegelt.
Daraus ergibt sich die Anforderung an MODBUS-Master, dass1) die „save set-value“ Funktion (und damit der automatische Anlauf)abgeschaltet sein muss (0xD103=0!), wenn neue Sollwerte permanentgesendet werden.
2) die MODBUS-Parameter für die Gerätekonfiguration imSpeicherbereich größer oder gleich 0xD100 sollen im Grunde nur(einmalig) bei der Erstinbetriebnahme (mit cmd 0x06, 0x10) eingestellt
werden bzw. wenn der MODBUS-Master ein neues Gerät (neueSeriennummer) erkennt.

The number of write-accesses to EEPROM memory is limited. TheEEPROM can be write-accessed about max. 100.000-times according
to manufacturer’s data sheet. If this instruction is not observed there is
big risk of the EEPROM memory will be permanently destroyed.
Any time MODBUS commands 0x06, 0x10 are used to accessregisters above or equal to 0xD100 there will be a write access toEEPROM memory of the fan electronics and this will “affect” EEPROM
lifetime.
With writing new set-values to register 0xD001 it’s the same, provided
that the “save-set value” option is activated. New set-values will bemirrored into the EEPROM in this case.
Thus a MODBUS-master should meet the following requirements:
1) The “save set-value” option (automatic restart function) must be
deactivated (0xD103=0!) if new set-values are permanently written to
the set-value register 0xD001.
2) Write access to any EEPROM register above or equal holding
register 0xD100 (using MODBUS cmd 0x06, 0x10) for configuration
purposes should take place (once) during initial setup or any time thecontroller finds an unknown fan (new serial number).