| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- using Newtonsoft.Json;
- using Prism.Mvvm;
- namespace TeamAAS_VP.Models
- {
- /// <summary>
- /// 波形数据来源模式
- /// </summary>
- public enum WaveDataSourceMode
- {
- /// <summary>
- /// 锁付过程中轮询实时寄存器并累积曲线点(MDC V2 3300/3301 等)
- /// </summary>
- RealtimeAccumulate = 0,
- /// <summary>
- /// 从连续寄存器块批量读取波形(通用设备)
- /// </summary>
- RegisterBlock = 1
- }
- /// <summary>
- /// Modbus TCP 主站配置(连接 MDC V2 电批等从站设备)
- /// 默认地址参考 MDC V2 Appendix A,可在设置界面或 cfg 文件中修改
- /// </summary>
- public class ModbusTcpMasterConfig : BindableBase
- {
- #region 连接
- private string _IP = "192.168.1.100";
- /// <summary>目标从站 IP(MDC 出厂默认 192.168.1.100)</summary>
- public string IP
- {
- get { return _IP; }
- set { SetProperty(ref _IP, value); }
- }
- private int _Port = 5000;
- /// <summary>目标从站 Modbus TCP 端口(MDC V2 出厂默认 5000)</summary>
- public int Port
- {
- get { return _Port; }
- set { SetProperty(ref _Port, value); }
- }
- private byte _SlaveID = 1;
- public byte SlaveID
- {
- get { return _SlaveID; }
- set { SetProperty(ref _SlaveID, value); }
- }
- private bool _IsEnabled = false;
- public bool IsEnabled
- {
- get { return _IsEnabled; }
- set { SetProperty(ref _IsEnabled, value); }
- }
- private int _PollIntervalMs = 50;
- /// <summary>轮询间隔(毫秒)</summary>
- public int PollIntervalMs
- {
- get { return _PollIntervalMs; }
- set { SetProperty(ref _PollIntervalMs, value); }
- }
- private bool _UseInputRegisters = true;
- /// <summary>
- /// true=功能码 0x04 读输入寄存器(MDC 状态/实时数据区 3100+)
- /// false=功能码 0x03 读保持寄存器
- /// </summary>
- public bool UseInputRegisters
- {
- get { return _UseInputRegisters; }
- set { SetProperty(ref _UseInputRegisters, value); }
- }
- private WaveDataSourceMode _WaveDataMode = WaveDataSourceMode.RealtimeAccumulate;
- public WaveDataSourceMode WaveDataMode
- {
- get { return _WaveDataMode; }
- set { SetProperty(ref _WaveDataMode, value); }
- }
- private float _TorqueScaleFactor = 100f;
- /// <summary>扭矩寄存器缩放系数(MDC:Converted torque * x100)</summary>
- public float TorqueScaleFactor
- {
- get { return _TorqueScaleFactor; }
- set { SetProperty(ref _TorqueScaleFactor, value); }
- }
- #endregion
- #region 状态寄存器(MDC:3212 Status, 3307 Motor RUN)
- private ushort _LockInProgressAddress = 3307;
- /// <summary>锁付进行中地址(MDC:3307 Motor RUN,0=不检测)</summary>
- public ushort LockInProgressAddress
- {
- get { return _LockInProgressAddress; }
- set { SetProperty(ref _LockInProgressAddress, value); }
- }
- private ushort _LockInProgressActiveValue = 1;
- public ushort LockInProgressActiveValue
- {
- get { return _LockInProgressActiveValue; }
- set { SetProperty(ref _LockInProgressActiveValue, value); }
- }
- private ushort _FinishFlagAddress = 3212;
- /// <summary>锁付状态地址(MDC:3212,1=完成,2=NG)</summary>
- public ushort FinishFlagAddress
- {
- get { return _FinishFlagAddress; }
- set { SetProperty(ref _FinishFlagAddress, value); }
- }
- private ushort _FinishFlagCompleteValue = 1;
- /// <summary>锁付 OK 状态值(MDC:3212=1 Fastening complete)</summary>
- public ushort FinishFlagCompleteValue
- {
- get { return _FinishFlagCompleteValue; }
- set { SetProperty(ref _FinishFlagCompleteValue, value); }
- }
- private ushort _FinishFlagNgValue = 2;
- /// <summary>锁付 NG 状态值(MDC:3212=2 Fastening NG)</summary>
- public ushort FinishFlagNgValue
- {
- get { return _FinishFlagNgValue; }
- set { SetProperty(ref _FinishFlagNgValue, value); }
- }
- #endregion
- #region 锁付结果寄存器(MDC Event Data 3200+,功能码 0x04)
- private ushort _LockTurnsAddress = 3213;
- /// <summary>锁付圈数/角度源地址(MDC:3213 Snug torque angle,单位 degree,除以360得圈数)</summary>
- public ushort LockTurnsAddress
- {
- get { return _LockTurnsAddress; }
- set { SetProperty(ref _LockTurnsAddress, value); }
- }
- private float _TurnsScaleFactor = 360f;
- /// <summary>圈数换算除数(角度/360=圈数)</summary>
- public float TurnsScaleFactor
- {
- get { return _TurnsScaleFactor; }
- set { SetProperty(ref _TurnsScaleFactor, value); }
- }
- private ushort _LockTorqueAddress = 3204;
- /// <summary>锁付扭矩地址(MDC:3204 Converted torque * x100)</summary>
- public ushort LockTorqueAddress
- {
- get { return _LockTorqueAddress; }
- set { SetProperty(ref _LockTorqueAddress, value); }
- }
- private ushort _LockDurationAddress = 3201;
- /// <summary>锁付用时地址(MDC:3201 Fastening time ms)</summary>
- public ushort LockDurationAddress
- {
- get { return _LockDurationAddress; }
- set { SetProperty(ref _LockDurationAddress, value); }
- }
- private bool _LockDurationIsMilliseconds = true;
- /// <summary>锁付用时寄存器是否为毫秒(MDC 为 true)</summary>
- public bool LockDurationIsMilliseconds
- {
- get { return _LockDurationIsMilliseconds; }
- set { SetProperty(ref _LockDurationIsMilliseconds, value); }
- }
- private ushort _LockPassedAddress = 3305;
- /// <summary>
- /// 锁付 OK 实时位(MDC:3305,仅供参考;判定 OK/NG 以 3212 Status 为准)
- /// </summary>
- public ushort LockPassedAddress
- {
- get { return _LockPassedAddress; }
- set { SetProperty(ref _LockPassedAddress, value); }
- }
- private ushort _ProgramNumberAddress = 3202;
- /// <summary>程序号地址(MDC:3202 Preset no.)</summary>
- public ushort ProgramNumberAddress
- {
- get { return _ProgramNumberAddress; }
- set { SetProperty(ref _ProgramNumberAddress, value); }
- }
- #endregion
- #region 实时监控寄存器(MDC Realtime Data 3300+)
- private ushort _RealtimeTorqueAddress = 3300;
- /// <summary>实时扭矩(MDC:3300 Converted torque * x100)</summary>
- public ushort RealtimeTorqueAddress
- {
- get { return _RealtimeTorqueAddress; }
- set { SetProperty(ref _RealtimeTorqueAddress, value); }
- }
- private ushort _RealtimeSpeedAddress = 3301;
- /// <summary>实时转速(MDC:3301 Speed rpm)</summary>
- public ushort RealtimeSpeedAddress
- {
- get { return _RealtimeSpeedAddress; }
- set { SetProperty(ref _RealtimeSpeedAddress, value); }
- }
- #endregion
- #region 波形寄存器块(RegisterBlock 模式)
- private ushort _WaveDataCountAddress = 100;
- public ushort WaveDataCountAddress
- {
- get { return _WaveDataCountAddress; }
- set { SetProperty(ref _WaveDataCountAddress, value); }
- }
- private ushort _WaveDataStartAddress = 101;
- public ushort WaveDataStartAddress
- {
- get { return _WaveDataStartAddress; }
- set { SetProperty(ref _WaveDataStartAddress, value); }
- }
- private int _WavePointRegisterCount = 12;
- public int WavePointRegisterCount
- {
- get { return _WavePointRegisterCount; }
- set { SetProperty(ref _WavePointRegisterCount, value); }
- }
- private int _MaxWavePoints = 500;
- public int MaxWavePoints
- {
- get { return _MaxWavePoints; }
- set { SetProperty(ref _MaxWavePoints, value); }
- }
- #endregion
- #region 曲线上下限
- private float _TorqueUpperLimit = 1.0f;
- public float TorqueUpperLimit
- {
- get { return _TorqueUpperLimit; }
- set { SetProperty(ref _TorqueUpperLimit, value); }
- }
- private float _TorqueLowerLimit = 0.5f;
- public float TorqueLowerLimit
- {
- get { return _TorqueLowerLimit; }
- set { SetProperty(ref _TorqueLowerLimit, value); }
- }
- private string _LockCurveImageFolder = "..//LockCurve";
- public string LockCurveImageFolder
- {
- get { return _LockCurveImageFolder; }
- set { SetProperty(ref _LockCurveImageFolder, value); }
- }
- #endregion
- public ModbusTcpMasterConfig Clone()
- {
- return JsonConvert.DeserializeObject<ModbusTcpMasterConfig>(
- JsonConvert.SerializeObject(this));
- }
- }
- }
|