diff --git a/Admin.NET.Web.Entry/Admin.NET.db b/Admin.NET.Web.Entry/Admin.NET.db index 3530dac..ecc44f8 100644 Binary files a/Admin.NET.Web.Entry/Admin.NET.db and b/Admin.NET.Web.Entry/Admin.NET.db differ diff --git a/Bodk.Device.Storage/M9Storage.cs b/Bodk.Device.Storage/M9Storage.cs index fd0e962..bc91b67 100644 --- a/Bodk.Device.Storage/M9Storage.cs +++ b/Bodk.Device.Storage/M9Storage.cs @@ -35,6 +35,10 @@ public class M9Storage : IStorage _modbusWrapper.WriteCoilsAsync, _modbusWrapper.ReadCoilsAsync, _modbusWrapper.ReadHoldingRegistersAsync, _modbusWrapper.WriteHoldingRegistersAsync)); + _modules.Add(new GantryY(alarmEventHandler, motionTimeoutAlarmEventHandler, + _modbusWrapper.WriteCoilsAsync, + _modbusWrapper.ReadCoilsAsync, _modbusWrapper.ReadHoldingRegistersAsync, + _modbusWrapper.WriteHoldingRegistersAsync)); } public async Task Start() diff --git a/Bodk.Device.Storage/Modules/GantryX.cs b/Bodk.Device.Storage/Modules/GantryX.cs new file mode 100644 index 0000000..e41d602 --- /dev/null +++ b/Bodk.Device.Storage/Modules/GantryX.cs @@ -0,0 +1,174 @@ +using Bodk.Device.Storage.EventArgs; + +namespace Bodk.Device.Storage.Modules; +/// +/// 龙门X +/// +/// +/// +/// +/// +/// +/// +public class GantryX( + Action alarmEventHandler, + Action motionTimeoutAlarmEventHandler, + Func writeCoilRegisterFunc, + Func> readCoilRegisterFunc, + Func> readHoldingRegistersFunc, + Func writeHoldingRegistersFunc) + : ModuleBase(alarmEventHandler, motionTimeoutAlarmEventHandler, writeCoilRegisterFunc, readCoilRegisterFunc, + readHoldingRegistersFunc, writeHoldingRegistersFunc) +{ + public override string Name => "GantryX"; + public override string Descirption => "龙门X轴"; + public override int Id => 5; + + + internal override ushort? EnableAddress => 104; + + internal override ushort? ResetAddress => 124; + + internal override ushort? CleanAddress => 144; + + internal override ushort? GotoOriginAddress => 164; + + internal override ushort? ForwardAddress => 184; + + internal override ushort? BackwardAddress => 204; + + internal override ushort? RelativeMoveAddress => 224; + + internal override ushort? AbsoluteMoveAddress => 244; + + internal override ushort? MotionTimeoutAlarmAddress => 284; + + internal override ushort? AlarmAddress => 304; + + internal override ushort? IsEnabledAddress => 334; + + internal override ushort? OriginFlagAddress => 354; + + internal override ushort? MoveDistanceAddress => 108; + + internal override ushort? CurrentPositionAddress => 132; + + internal override ushort? ManualSpeedAddress => 1008; + + internal override ushort? AutoSpeedAddress => 1048; + + internal override ushort? AccDecAddress => 1088; + + internal override ushort? GotoOriginHighSpeedAddress => 1128; + + internal override ushort? GotoOriginLowSpeedAddress => 1152; + + internal ushort StandbyAddress => 1420; + + internal ushort GraspFoamLidAddress => 1422; + + internal ushort PlaceFoamLidAddress => 1424; + + internal ushort BipolarModuleAAddress => 1384; + + internal ushort BipolarModuleBAddress => 1386; + + internal ushort BipolarModuleCAddress => 1388; + + internal ushort UnipolarModuleAAddress => 1390; + + internal ushort UnipolarModuleBAddress => 1392; + + internal ushort UnipolarModuleCAddress => 1394; + + /// + /// 移动到待机位 + /// + public async Task MoveToStandbyPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(StandbyAddress)); + } + + /// + /// 移动到抓取泡沫盖位 + /// + public async Task MoveToGraspFoamLidPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(GraspFoamLidAddress)); + } + + /// + /// 移动到放泡沫盖位 + /// + public async Task MoveToPlaceFoamLidPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(PlaceFoamLidAddress)); + } + + /// + /// 移动到双极模组A位 + /// + public async Task MoveToBipolarModuleAPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(BipolarModuleAAddress)); + } + + /// + /// 移动到双极模组B位 + /// + public async Task MoveToBipolarModuleBPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(BipolarModuleBAddress)); + } + + /// + /// 移动到双极模组C位 + /// + public async Task MoveToBipolarModuleCPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(BipolarModuleCAddress)); + } + + /// + /// 移动到单极模组A位 + /// + public async Task MoveToUnipolarModuleAPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(UnipolarModuleAAddress)); + } + + /// + /// 移动到单极模组B位 + /// + public async Task MoveToUnipolarModuleBPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(UnipolarModuleBAddress)); + } + + /// + /// 移动到单极模组C位 + /// + public async Task MoveToUnipolarModuleCPositionAsync() + { + await AbsoluteMoveAsync(await ReadFloat(UnipolarModuleCAddress)); + } + + /// + /// 待机位 + /// + public float StandbyPosition + { + get + { + _standbyPosition ??= ReadFloat(StandbyAddress).Result; + return _standbyPosition.Value; + } + set + { + _standbyPosition = value; + WriteFloat(StandbyAddress, value); + } + } + + private float? _standbyPosition; +} \ No newline at end of file diff --git a/Bodk.Device.Storage/Modules/GantryY.cs b/Bodk.Device.Storage/Modules/GantryY.cs index 4cff1f4..739a4de 100644 --- a/Bodk.Device.Storage/Modules/GantryY.cs +++ b/Bodk.Device.Storage/Modules/GantryY.cs @@ -1,7 +1,15 @@ using Bodk.Device.Storage.EventArgs; namespace Bodk.Device.Storage.Modules; - +/// +/// 龙门Y +/// +/// +/// +/// +/// +/// +/// public class GantryY( Action alarmEventHandler, Action motionTimeoutAlarmEventHandler,