Also ich tue mich da jetzt etwas schwer weitere Tipps zu geben, wenn ich die Hardware noch nie gesehen habe.
Ich würde aber mal sagen, an deinem Code ist das Handling der Steuersignale falsch. Wie schon oben beschrieben, muss man ja bei diesem Shield zwischen Senden und Empfangen umschalten.
Wenn man da readHoldingRegisters macht, wird da ja wahrscheinlich was gesendet und gleich darauf empfangen. Da macht ein delay meiner Meinung nach gar keinen Sinn.