ソースを参照

update kollmorgen axis

chenkui 7 時間 前
コミット
1cdd2160ec

+ 2 - 2
PunkHPX8_RT/Config/Devices/AxisProviderCfg.xml

@@ -33,14 +33,14 @@
     <!-- <Driver>Sim</Driver> -->
     <Units>deg</Units>
 	<!-- 5294 X 4 counts/rev * 1/360 rev/deg = 58.822222 counts/deg -->
-    <ScaleFactor>91</ScaleFactor>
+    <ScaleFactor>1</ScaleFactor>
     <JogLimit>5</JogLimit>
     <!--Units>rev</Units-->
 	<!-- 5294 X 4 counts/rev = 21176 counts/rev -->
     <!--ScaleFactor>21176</ScaleFactor-->
 	<MinMoveTime>0.5</MinMoveTime>
 	<MotorPositionRate>1</MotorPositionRate>
-	<VelocityRate>64</VelocityRate>
+	<VelocityRate>1</VelocityRate>
   </Axis> 
   <Axis Name="VPW2.Rotation">
     <Driver>Beckhoff</Driver>

+ 4 - 4
PunkHPX8_RT/Config/Devices/Beckhoffcfg - plctask.xml

@@ -75,7 +75,7 @@
 
 		<!--////////////////////////////////////////////////// ALL AXIS BEGIN //////////////////////////////////////////////////-->
 
-		<Axis Name="VPW1.Rotation" MotorType="Yaskawa" COEAddress="192.168.0.14.4.1" COEPort="1016" DebugLogging="false">
+		<Axis Name="VPW1.Rotation" MotorType="Kollmorgen" COEAddress="192.168.0.14.4.1" COEPort="1016" DebugLogging="false">
 			<Input Address="MAIN.VPW1RotationStatusWord" Type="StatusWord" DataType="uint"/>
 			<Input Address="MAIN.VPW1RotationDigitalInputs" Type="DigitalInputs" DataType="udint"/>
 			<Input Address="MAIN.VPW1RotationMotorPosition" Type="MotorPosition" DataType="dint"/>
@@ -140,9 +140,9 @@
 			<ReverseSoftwareLimit>-46180953</ReverseSoftwareLimit>
 			<!-- 13 degrees * 169161 = 2199093 -->
 			<ForwardSoftwareLimit>2706576</ForwardSoftwareLimit>
-			<Speed>15000000</Speed>
-			<Acceleration>10000000</Acceleration>
-			<Deceleration>10000000</Deceleration>
+			<Speed>360</Speed>
+			<Acceleration>1000</Acceleration>
+			<Deceleration>1000</Deceleration>
 			<Jerk>0</Jerk>
 			<FeedforwardVelocity>0</FeedforwardVelocity>
 			<FeedforwardAcceleration>0</FeedforwardAcceleration>

+ 1 - 1
PunkHPX8_RT/Config/Station/StationPositionsCfg_Simulator.xml

@@ -36,7 +36,7 @@
 			<ToleranceDefault>0.5</ToleranceDefault>
 			<Stations>
 				<Station Name="VPW1.Rotation.Home" Position="0" />
-				<Station Name="VPW1.Rotation.Center" Position="50" />
+				<Station Name="VPW1.Rotation.Center" Position="144000" />
 			</Stations>
 		</Axis>
 	</Module>

+ 3 - 1
PunkHPX8_RT/Devices/AXIS/BeckhoffCommonAxis.cs

@@ -24,7 +24,8 @@ namespace PunkHPX8_RT.Devices.AXIS
         protected const string PROFILE_VELOCITY = "ProfileVelocity";
         protected const string PROFILE_ACCEL = "ProfileAccel";
         protected const string PROFILE_DECEL = "ProfileDecel";
-        private const string TARGET_POSITION = "ReferencePosition"; 
+        private const string REFERENCE_POSITION = "ReferencePosition";
+        private const string TARGET_POSITION = "TargetPosition";
         private const string ACTUAL_VELOCITY = "Velocity";
         private const string ACTUAL_TORQUE = "ActualTorque";
         private const string POSITION_ERROR = "PositionError";
@@ -194,6 +195,7 @@ namespace PunkHPX8_RT.Devices.AXIS
             _axis.AxisSubscribeUpdateVariable(PROFILE_VELOCITY);
             _axis.AxisSubscribeUpdateVariable(PROFILE_ACCEL);
             _axis.AxisSubscribeUpdateVariable(PROFILE_DECEL);
+            _axis.AxisSubscribeUpdateVariable(REFERENCE_POSITION);
             _axis.AxisSubscribeUpdateVariable(TARGET_POSITION);
             _axis.AxisSubscribeUpdateVariable(MOTOR_POSITION);
             _axis.AxisSubscribeUpdateVariable(POSITION_ERROR);

+ 2 - 1
PunkHPX8_RT/Devices/AXIS/JetAxisBase.cs

@@ -39,7 +39,8 @@ namespace PunkHPX8_RT.Devices.AXIS
         protected const string PROFILE_VELOCITY = "ProfileVelocity";
         protected const string PROFILE_ACCEL = "ProfileAccel";
         protected const string PROFILE_DECEL = "ProfileDecel";
-        private const string TARGET_POSITION = "ReferencePosition";
+        private const string REFERENCE_POSITION = "ReferencePosition";
+        private const string TARGET_POSITION = "TargetPosition";
         private const string MOTOR_POSITION = "MotorPosition";
         private const string ACTUAL_VELOCITY = "Velocity";
         private const string ACTUAL_TORQUE = "ActualTorque";

+ 19 - 6
PunkHPX8_RT/Devices/AXIS/Kollmorgen/KollmorgenHomeRoutine.cs

@@ -16,6 +16,8 @@ namespace CyberX12_RT.Devices.AXIS.Kollmorgen
     {
         private enum HomeStep
         {
+            WriteOffline,
+            WriteOnline,
             WriteControlWord,
             HomeModeOfOperation,
             WriteHomeControlWord,
@@ -24,9 +26,14 @@ namespace CyberX12_RT.Devices.AXIS.Kollmorgen
             LastDelay,
             NoneModeOfOperation,
             EnableOperation,
+            WriteTargetPosition,
             End
         }
 
+        #region 常量
+        private const string TARGET_POSITION = "TargetPosition";
+        #endregion
+
         #region 内部变量
         private JetAxisBase _axis;
         private BeckhoffCommonAxis _beckhoffCommonAxis;
@@ -49,19 +56,18 @@ namespace CyberX12_RT.Devices.AXIS.Kollmorgen
 
         public RState Monitor()
         {
-            Runner.Run(HomeStep.WriteControlWord, () => { return _beckhoffCommonAxis.WriteControlWord(0x0F); }, () => { return CheckControlWord(0x0F); }, 1000)
+            Runner
+                .Run(HomeStep.WriteControlWord, () => { return _beckhoffCommonAxis.WriteControlWord(0x0F); }, () => { return CheckControlWord(0x0F); }, 1000)
                 .Run(HomeStep.HomeModeOfOperation, () => { return _beckhoffCommonAxis.WriteModeOfMode(AxisModeOfOperation.HomingMode); },
                 () => { return CheckModeOfOperation((byte)AxisModeOfOperation.HomingMode); }, 1000)
-                .Run(HomeStep.WriteHomeControlWord, () => {
-                    LOG.WriteLog(eEvent.INFO_AXIS, Module, $"StatusWord is {_axis.MotionData.StatusWord}");
-                    return _beckhoffCommonAxis.WriteControlWord(0x1F);
-                }, () => { return CheckControlWord(0x1F); }, 1000)
+                .Run(HomeStep.WriteHomeControlWord, () => { return _beckhoffCommonAxis.WriteControlWord(0x1F);}, () => { return CheckControlWord(0x1F); }, 1000)
                 .Delay(HomeStep.HomeDelay, 100)
                 .WaitWithStopCondition(HomeStep.CheckHome, CheckHome, CheckErrorOrWarning, _timeout, _isLogError)
                 .Delay(HomeStep.LastDelay, 1000)
                 .Run(HomeStep.NoneModeOfOperation, () => { return _beckhoffCommonAxis.WriteModeOfMode(AxisModeOfOperation.None); },
                 () => { return CheckModeOfOperation((byte)AxisModeOfOperation.None); }, 1000)
                 .Run(HomeStep.EnableOperation, () => { return _beckhoffCommonAxis.WriteControlWord(0x0F); }, () => { return CheckControlWord(0x0F); }, 1000)
+                .Run(HomeStep.WriteTargetPosition,WriteTargetPosition,_delay_1ms)
                 .End(HomeStep.End, NullFun, 100);
             return Runner.Status;
         }
@@ -75,7 +81,14 @@ namespace CyberX12_RT.Devices.AXIS.Kollmorgen
         {
             return _axis.ControlWord == controlWord;
         }
-
+        /// <summary>
+        /// 设置目标位置为当前位置
+        /// </summary>
+        /// <param name="targetPosition"></param>
+        private bool WriteTargetPosition()
+        {
+            return _beckhoffCommonAxis.WriteVariable(TARGET_POSITION, 0);
+        }
         private bool CheckHome()
         {
             LOG.WriteLog(eEvent.INFO_AXIS, Module, $"StatusWord is {_axis.MotionData.StatusWord}");

+ 134 - 135
PunkHPX8_RT/Devices/AXIS/Kollmorgen/KollmorgenStopPositionRoutine.cs

@@ -1,139 +1,138 @@
-using Aitex.Core.RT.Log;
-using Aitex.Core.RT.Routine;
-using PunkHPX8_Core;
-using MECF.Framework.Common.Beckhoff.AxisProvider;
-using MECF.Framework.Common.CommonData.PUF;
-using MECF.Framework.Common.Routine;
-using System;
-
-namespace PunkHPX8_RT.Devices.AXIS.Kollmorgen
-{
-    public class KollmorgenStopPositionRoutine : RoutineBase, IRoutine
-    {
-        private enum StopPositionStep
-        {
-            SetHaltControlWord,
-            CheckStop,
-            WriteTargePosition,
-            ResetHaltControlWord,
-            CheckRun,
-            NoneModeOfOperation,
-            EnableOperation,
-            End
-        }
-        #region 常量
-        private const string TARGET_POSITION = "TargetPosition";
-        #endregion
-
-        #region 内部变量
-        private JetAxisBase _axis;
-        private int _timeout = 5000;
-        private int _targetPosition;
-        /// <summary>
-        /// SRD rotation Provider对象
-        /// </summary>
-        private BeckhoffProviderAxis _rotationProviderAxis;
-        private BeckhoffCommonAxis _beckhoffCommonAxis;
-        #endregion
-
-        public KollmorgenStopPositionRoutine(string module, JetAxisBase axis, BeckhoffCommonAxis beckhoffCommonAxis) : base(module)
-        {
-            _axis = axis;
-            _beckhoffCommonAxis = beckhoffCommonAxis;
-        }
-
-        public void Abort()
-        {
-            Runner.Stop("Manual Abort");
-        }
-
-        public RState Monitor()
-        {
-            Runner.Run(StopPositionStep.SetHaltControlWord, () => { return _beckhoffCommonAxis.WriteControlWord(0X8F); }, () => { return CheckControlWord(0X8F); }, 1000)
-                .WaitWithStopCondition(StopPositionStep.CheckStop, CheckStop, CheckErrorOrWarning, _timeout)
-                .Run(StopPositionStep.WriteTargePosition, () => { return WriteTargetPosition(); }, NullFun, 100)
-                .Run(StopPositionStep.ResetHaltControlWord, () => { return _beckhoffCommonAxis.WriteControlWord(0x3F); }, () => { return CheckControlWord(0x3F); }, 1000)
-                .WaitWithStopCondition(StopPositionStep.CheckRun, CheckRunEnd, CheckRunStop, 5000)
-                .Run(StopPositionStep.NoneModeOfOperation, () => { return _beckhoffCommonAxis.WriteModeOfMode(AxisModeOfOperation.None); }, () => { return CheckModeOfOperation((byte)AxisModeOfOperation.None); }, 1000)
-                .Run(StopPositionStep.EnableOperation, () => { return _beckhoffCommonAxis.WriteControlWord(0x0F); }, () => { return CheckControlWord(0x0F); }, 1000)
-                .End(StopPositionStep.End, NullFun, 100);
-            return Runner.Status;
-        }
-
-        public bool CheckModeOfOperation(byte modeOfOperation)
-        {
-            return _axis.ModeOfOperation == modeOfOperation;
-        }
-
-        public bool CheckControlWord(ushort controlWord)
-        {
-            return _axis.ControlWord == controlWord;
-        }
-        /// <summary>
-        /// 设置目标位置为当前位置
-        /// </summary>
-        /// <param name="targetPosition"></param>
+using Aitex.Core.RT.Log;
+using Aitex.Core.RT.Routine;
+using PunkHPX8_Core;
+using MECF.Framework.Common.Beckhoff.AxisProvider;
+using MECF.Framework.Common.CommonData.PUF;
+using MECF.Framework.Common.Routine;
+using System;
+
+namespace PunkHPX8_RT.Devices.AXIS.Kollmorgen
+{
+    public class KollmorgenStopPositionRoutine : RoutineBase, IRoutine
+    {
+        private enum StopPositionStep
+        {
+            SetHaltControlWord,
+            CheckStop,
+            Delay,
+            WriteTargePosition,
+            NoneModeOfOperation,
+            EnableOperation,
+            End
+        }
+        #region 常量
+        private const string TARGET_POSITION = "TargetPosition";
+        #endregion
+
+        #region 内部变量
+        private JetAxisBase _axis;
+        private int _timeout = 5000;
+        private int _targetPosition;
+        /// <summary>
+        /// SRD rotation Provider对象
+        /// </summary>
+        private BeckhoffProviderAxis _rotationProviderAxis;
+        private BeckhoffCommonAxis _beckhoffCommonAxis;
+        #endregion
+
+        public KollmorgenStopPositionRoutine(string module, JetAxisBase axis, BeckhoffCommonAxis beckhoffCommonAxis) : base(module)
+        {
+            _axis = axis;
+            _beckhoffCommonAxis = beckhoffCommonAxis;
+        }
+
+        public void Abort()
+        {
+            Runner.Stop("Manual Abort");
+        }
+
+        public RState Monitor()
+        {
+            Runner.Run(StopPositionStep.SetHaltControlWord, () => { return _beckhoffCommonAxis.WriteControlWord(0X10F); }, () => { return CheckControlWord(0X10F); }, 1000)
+                .WaitWithStopCondition(StopPositionStep.CheckStop, CheckStop, CheckErrorOrWarning, _timeout)
+                .Delay(StopPositionStep.Delay,_delay_1s)
+                .Run(StopPositionStep.WriteTargePosition, () => { return WriteTargetPosition(); }, NullFun, 100)
+                .Run(StopPositionStep.NoneModeOfOperation, () => { return _beckhoffCommonAxis.WriteModeOfMode(AxisModeOfOperation.None); }, () => { return CheckModeOfOperation((byte)AxisModeOfOperation.None); }, 1000)
+                .Run(StopPositionStep.EnableOperation, () => { return _beckhoffCommonAxis.WriteControlWord(0x0F); }, () => { return CheckControlWord(0x0F); }, 1000)
+              
+                .End(StopPositionStep.End, NullFun, 100);
+            return Runner.Status;
+        }
+
+        public bool CheckModeOfOperation(byte modeOfOperation)
+        {
+            return _axis.ModeOfOperation == modeOfOperation;
+        }
+
+        public bool CheckControlWord(ushort controlWord)
+        {
+            return _axis.ControlWord == controlWord;
+        }
+        /// <summary>
+        /// 设置目标位置为当前位置
+        /// </summary>
+        /// <param name="targetPosition"></param>
         private bool WriteTargetPosition()
-        {
-            double scale = _rotationProviderAxis.ScaleFactor;
+        {
+            double scale = _rotationProviderAxis.ScaleFactor;
             _targetPosition = (int)Math.Ceiling(_axis.MotionData.MotorPosition * scale);
-            return _beckhoffCommonAxis.WriteVariable(TARGET_POSITION, _targetPosition);
-        }
-        /// <summary>
-        /// 检查是否运动完成
-        /// </summary>
-        /// <returns></returns>
-        private bool CheckRunEnd()
-        {
-            bool result = _axis.InTargetPosition && !_axis.IsRun;
-            return result;
-        }
-        /// <summary>
-        /// 检查是否运动完成
-        /// </summary>
-        /// <returns></returns>
-        private bool CheckRunStop()
-        {
-            //没有到达目标同时没有运动
-            bool isStop = !_axis.IsRun && !_axis.JudgeCurrentPositionIsInTargetPosition(_targetPosition);
-            if (isStop)
-            {
-                ErrorMsg = "position is stop";
-                return true;
-            }
-            return false;
-        }
-        /// <summary>
-        /// 检查Halt是否停下来
-        /// </summary>
-        /// <returns></returns>
-        private bool CheckStop()
-        {
-            return !_axis.IsRun;
+            return _beckhoffCommonAxis.WriteVariable(TARGET_POSITION, _targetPosition);
+        }
+        /// <summary>
+        /// 检查是否运动完成
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckRunEnd()
+        {
+            bool result = _axis.InTargetPosition && !_axis.IsRun;
+            return result;
+        }
+        /// <summary>
+        /// 检查是否运动完成
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckRunStop()
+        {
+            //没有到达目标同时没有运动
+            bool isStop = !_axis.IsRun && !_axis.JudgeCurrentPositionIsInTargetPosition(_targetPosition);
+            if (isStop)
+            {
+                ErrorMsg = "position is stop";
+                return true;
+            }
+            return false;
+        }
+        /// <summary>
+        /// 检查Halt是否停下来
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckStop()
+        {
+            return !_axis.IsRun;
+        }
+
+        /// 检验是否出错或告警
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckErrorOrWarning()
+        {
+            bool result = _axis.MotionData.Status.ToLower().Contains("error") || _axis.MotionData.Status.ToLower().Contains("warning");
+            if (result)
+            {
+                LOG.WriteLog(eEvent.ERR_AXIS, Module, $"axis stop occur error or warning");
+            }
+            return result;
+        }
+        public RState Start(params object[] objs)
+        {
+            _rotationProviderAxis = BeckhoffAxisProviderManager.Instance.GetAxisProvider($"{Module}");
+            if (_rotationProviderAxis == null)
+            {
+                LOG.WriteLog(eEvent.ERR_AXIS, Module, $"{Module} Axist Provider is not exist");
+                return RState.Failed;
+            }
+            return Runner.Start(Module, "Stop Position");
         }
+    }
+}
 
-        /// 检验是否出错或告警
-        /// </summary>
-        /// <returns></returns>
-        private bool CheckErrorOrWarning()
-        {
-            bool result = _axis.MotionData.Status.ToLower().Contains("error") || _axis.MotionData.Status.ToLower().Contains("warning");
-            if (result)
-            {
-                LOG.WriteLog(eEvent.ERR_AXIS, Module, $"axis stop occur error or warning");
-            }
-            return result;
-        }
-        public RState Start(params object[] objs)
-        {
-            _rotationProviderAxis = BeckhoffAxisProviderManager.Instance.GetAxisProvider($"{Module}");
-            if (_rotationProviderAxis == null)
-            {
-                LOG.WriteLog(eEvent.ERR_AXIS, Module, $"{Module} Axist Provider is not exist");
-                return RState.Failed;
-            }
-            return Runner.Start(Module, "Stop Position");
-        }
-    }
-}
-

+ 5 - 1
PunkHPX8_RT/Devices/AXIS/Kollmorgen/KollmorgenSwitchOnRoutine.cs

@@ -16,7 +16,9 @@ namespace PunkHPX8_RT.Devices.AXIS.Kollmorgen
         private enum SwitchOnStep
         {
             NoneModeOfOperation,
-            ClearError,
+            ClearError,
+            WriteOffline,
+            WriteOnline,
             CheckSwitchDisabled,
             WriteSwitchOnControlWord,
             SwitchOnDelay,
@@ -47,6 +49,8 @@ namespace PunkHPX8_RT.Devices.AXIS.Kollmorgen
             Runner.Run(SwitchOnStep.NoneModeOfOperation, () => { return _beckhoffCommonAxis.WriteModeOfMode(AxisModeOfOperation.None); },
                 () => { return CheckModeOfOperation((byte)AxisModeOfOperation.None); }, 1000)
                 .Run(SwitchOnStep.ClearError, ClearError, CheckError, 1000)
+                .Run(SwitchOnStep.WriteOffline, () => { return _beckhoffCommonAxis.WriteControlWord(0x06); }, () => { return CheckControlWord(0x06); }, 1000)
+                .Run(SwitchOnStep.WriteOnline, () => { return _beckhoffCommonAxis.WriteControlWord(0x07); }, () => { return CheckControlWord(0x07); }, 1000)
                 .Run(SwitchOnStep.CheckSwitchDisabled, CheckSwitchDisabled, CheckReadyToSwitchOn, _delay_2s)
                 .Run(SwitchOnStep.WriteSwitchOnControlWord, () => { return _beckhoffCommonAxis.WriteControlWord(0x0F); }, () => { return CheckControlWord(0x0F); }, 1000)
                 .Delay(SwitchOnStep.SwitchOnDelay, 100)

+ 3 - 3
PunkHPX8_RT/Devices/DeviceManager.cs

@@ -109,9 +109,6 @@ namespace PunkHPX8_RT.Instances
 
             foreach(string item in VpwCellItemManager.Instance.InstalledModules)
             {
-                VpwCellDevice vpwCellDevice= new VpwCellDevice(item);
-                AddCustomDevice(vpwCellDevice);
-
 
                 BeckhoffAxis rotationBeckhoffAxis = BeckhoffAxisManager.Instance.GetAxis($"{item}.Rotation");
                 if (rotationBeckhoffAxis != null)
@@ -121,6 +118,9 @@ namespace PunkHPX8_RT.Instances
                     rotationAxis.InterLock = new VpwRotationAxisInterLock(rotationAxis);
                     AxisManager.Instance.AddModuleAxis(item.ToString(), rotationAxis);
                 }
+                VpwCellDevice vpwCellDevice= new VpwCellDevice(item);
+                AddCustomDevice(vpwCellDevice);
+
             }
 
             VpDeviceTimer vpwDeviceTimer = new VpDeviceTimer();

+ 0 - 84
PunkHPX8_RT/Devices/VpwMain/VpDeviceTimer.cs

@@ -1,84 +0,0 @@
-using Aitex.Core.RT.Device;
-using Aitex.Core.Util;
-using MECF.Framework.Common.Equipment;
-using MECF.Framework.Common.ToolLayout;
-using PunkHPX8_RT.Devices.AXIS;
-using PunkHPX8_RT.Devices.SRD;
-using PunkHPX8_RT.Devices.VpwCell;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace PunkHPX8_RT.Devices.VpwMain
-{
-    public class VpDeviceTimer : BaseDevice, IDevice
-    {
-        #region 常量
-        private const string VPW = "Vpw";
-        #endregion
-
-        #region 内部变量
-        private PeriodicJob _periodicJob;
-        private VpwMainDevice _vpwMainDevice;
-        private VpwCellDevice[] _vpwCellDevices;
-
-        #endregion
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        public VpDeviceTimer() : base(VPW, VPW, VPW, VPW)
-        {
-            _periodicJob = new PeriodicJob(20, OnTimer, $"{VPW}.OnTimer", false);
-        }
-        /// <summary>
-        /// 初始化
-        /// </summary>
-        /// <returns></returns>
-        public bool Initialize()
-        {
-            if (ModuleHelper.IsInstalled(ModuleName.VPWMain1))
-            {
-                _vpwMainDevice=DEVICE.GetDevice<VpwMainDevice>(ModuleName.VPWMain1.ToString());
-            }
-            List<string> installedCells = VpwCellItemManager.Instance.InstalledModules;
-            _vpwCellDevices=new VpwCellDevice[installedCells.Count];
-            for (int i=0;i<_vpwCellDevices.Length;i++)
-            {
-                _vpwCellDevices[i] = DEVICE.GetDevice<VpwCellDevice>(installedCells[i]);
-            }
-            _periodicJob.Start();
-            return true;
-        }
-
-        public void Monitor()
-        {
-        }
-
-        public void Reset()
-        {
-        }
-
-        public void Terminate()
-        {
-            _periodicJob.Stop();
-        }
-        /// <summary>
-        /// 定时器执行
-        /// </summary>
-        /// <returns></returns>
-        private bool OnTimer()
-        {           
-            if (_vpwMainDevice != null)
-            {
-                _vpwMainDevice.OnTimer();
-            }
-            foreach(var item in _vpwCellDevices)
-            {
-                item.OnTimer();
-            }
-            return true;
-        }
-    }
-}

+ 1 - 1
PunkHPX8_RT/PunkHPX8_RT.csproj

@@ -241,7 +241,7 @@
     <Compile Include="Devices\SRD\SrdCommonLiftUpRoutine.cs" />
     <Compile Include="Devices\SRD\SRDDeviceTimer.cs" />
     <Compile Include="Devices\SRD\TotalSRDDevice.cs" />
-    <Compile Include="Devices\VpwCell\VpwCellDevice.cs" />
+    <Compile Include="Devices\VpwMain\VpDeviceTimer.cs" />
     <Compile Include="Devices\VpwCell\VpwRotationAxisInterLock.cs" />
     <Compile Include="Devices\VpwMain\VpwMainDevice.cs" />
     <Compile Include="Modules\EFEM\CycleRobotCycleNewRoutine.cs" />