private WordDevice[] GetWordDevices(OperandResult operand, int count) { if (operand is WordDeviceResult wordDevice) { return(Enumerable .Range(0, count) .Select(wordDevice.Advance) .Select(device => _plc.WordDevices[device.ToString()]) .ToArray()); } if (operand is ZDeviceResult zDevice) { return(Enumerable .Range(0, count) .Select(index => { var device = _plc.ZDevices[zDevice.Advance(index / 2).ToString()]; if (index % 2 == 0) { return device.ToLowWordDevice(); } return device.ToHighWordDevice(); }) .ToArray()); } throw new InvalidOperationException($"( {operand} )はワードデバイスではありません。"); }
private ZDevice GetZDevice(OperandResult operand) { if (operand is ZDeviceResult zDevice) { return(_plc.ZDevices[zDevice.ToString()]); } throw new InvalidOperationException($"( {operand} )はZデバイスではありません。"); }
private BitDevice GetBitDevice(OperandResult operand) { if (operand is BitDeviceResult bitDevice) { return(_plc.BitDevices[bitDevice.ToString()]); } throw new InvalidOperationException($"( {operand} )はリレーデバイスではありません。"); }
private WordDevice GetWordDevice(OperandResult operand) { if (operand is WordDeviceResult wordDevice) { return(_plc.WordDevices[wordDevice.ToString()]); } if (operand is ZDeviceResult zDevice) { return(_plc.ZDevices[zDevice.ToString()].ToLowWordDevice()); } throw new InvalidOperationException($"( {operand} )はワードデバイスではありません。"); }