using Bodk.Device.Storage.EventArgs; namespace Bodk.Device.Storage.Modules; public class CryogenicRackGripper1( Action alarmEventHandler, Action motionTimeoutAlarmEventHandler, Func writeCoilRegisterFunc, Func> readCoilRegisterFunc, Func> readHoldingRegistersFunc, Func writeHoldingRegistersFunc) : ModuleBase(alarmEventHandler, motionTimeoutAlarmEventHandler, writeCoilRegisterFunc, readCoilRegisterFunc, readHoldingRegistersFunc, writeHoldingRegistersFunc) { public override string Name => "CryogenicRackGripper1"; public override string Descirption => "冻存架夹爪1"; public override int Id => 2; internal override ushort? EnableAddress => 101; internal override ushort? ResetAddress => 121; internal override ushort? CleanAddress => 141; internal override ushort? GotoOriginAddress => 161; internal override ushort? ForwardAddress => 181; internal override ushort? BackwardAddress => 201; internal override ushort? RelativeMoveAddress => 221; internal override ushort? AbsoluteMoveAddress => 241; internal override ushort? MotionTimeoutAlarmAddress => 281; internal override ushort? AlarmAddress => 301; internal override ushort? IsEnabledAddress => 331; internal override ushort? OriginFlagAddress => 351; internal override ushort? MoveDistanceAddress => 102; internal override ushort? CurrentPositionAddress => 126; internal override ushort? ManualSpeedAddress => 1002; internal override ushort? AutoSpeedAddress => 1042; internal override ushort? AccDecAddress => 1082; internal override ushort? GotoOriginHighSpeedAddress => 1122; internal override ushort? GotoOriginLowSpeedAddress => 1146; internal ushort ReleasePositionAddress => 1370; internal ushort HoldingPositionAddress => 1372; /// /// 松开夹爪 /// /// public async Task Release() { var des = await ReadFloat(ReleasePositionAddress); await AbsoluteMoveAsync(des); } public async Task Holding() { var des = await ReadFloat(HoldingPositionAddress); await AbsoluteMoveAsync(des); } /// /// 松开位 /// public float ReleasePosition { get { _releasePosition ??= ReadFloat(ReleasePositionAddress).Result; return _releasePosition.Value; } set { _releasePosition = value; WriteFloat(ReleasePositionAddress, value); } } /// /// 夹紧位 /// public float HoldingPosition { get { _holdingPosition ??= ReadFloat(HoldingPositionAddress).Result; return _holdingPosition.Value; } set { _holdingPosition = value; WriteFloat(HoldingPositionAddress, value); } } private float? _releasePosition; private float? _holdingPosition; }