예제 #1
0
        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} )はワードデバイスではありません。");
        }
예제 #2
0
 private ZDevice GetZDevice(OperandResult operand)
 {
     if (operand is ZDeviceResult zDevice)
     {
         return(_plc.ZDevices[zDevice.ToString()]);
     }
     throw new InvalidOperationException($"( {operand} )はZデバイスではありません。");
 }
예제 #3
0
 private BitDevice GetBitDevice(OperandResult operand)
 {
     if (operand is BitDeviceResult bitDevice)
     {
         return(_plc.BitDevices[bitDevice.ToString()]);
     }
     throw new InvalidOperationException($"( {operand} )はリレーデバイスではありません。");
 }
예제 #4
0
 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} )はワードデバイスではありません。");
 }