diff --git a/Sharp7.Rx/Sharp7Plc.cs b/Sharp7.Rx/Sharp7Plc.cs index 974619d..0265a80 100644 --- a/Sharp7.Rx/Sharp7Plc.cs +++ b/Sharp7.Rx/Sharp7Plc.cs @@ -85,8 +85,14 @@ public class Sharp7Plc : IPlc var disposeableContainer = multiVariableSubscriptions.GetOrCreateObservable(variableName); disposeableContainer.AddDisposableTo(disposables); - var observable = disposeableContainer.Observable - .Select(bytes => S7ValueConverter.ConvertToType(bytes, address)); + var observable = + // Directly read variable first. + // This will propagate any errors due to reading from invalid addresses. + Observable.FromAsync(() => GetValue(variableName)) + .Concat( + disposeableContainer.Observable + .Select(bytes => S7ValueConverter.ConvertToType(bytes, address)) + ); if (transmissionMode == TransmissionMode.OnChange) observable = observable.DistinctUntilChanged();