ModbusTcpMasterConfig.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. using Newtonsoft.Json;
  2. using Prism.Mvvm;
  3. namespace TeamAAS_VP.Models
  4. {
  5. /// <summary>
  6. /// 波形数据来源模式
  7. /// </summary>
  8. public enum WaveDataSourceMode
  9. {
  10. /// <summary>
  11. /// 锁付过程中轮询实时寄存器并累积曲线点(MDC V2 3300/3301 等)
  12. /// </summary>
  13. RealtimeAccumulate = 0,
  14. /// <summary>
  15. /// 从连续寄存器块批量读取波形(通用设备)
  16. /// </summary>
  17. RegisterBlock = 1
  18. }
  19. /// <summary>
  20. /// Modbus TCP 主站配置(连接 MDC V2 电批等从站设备)
  21. /// 默认地址参考 MDC V2 Appendix A,可在设置界面或 cfg 文件中修改
  22. /// </summary>
  23. public class ModbusTcpMasterConfig : BindableBase
  24. {
  25. #region 连接
  26. private string _IP = "192.168.1.100";
  27. /// <summary>目标从站 IP(MDC 出厂默认 192.168.1.100)</summary>
  28. public string IP
  29. {
  30. get { return _IP; }
  31. set { SetProperty(ref _IP, value); }
  32. }
  33. private int _Port = 5000;
  34. /// <summary>目标从站 Modbus TCP 端口(MDC V2 出厂默认 5000)</summary>
  35. public int Port
  36. {
  37. get { return _Port; }
  38. set { SetProperty(ref _Port, value); }
  39. }
  40. private byte _SlaveID = 1;
  41. public byte SlaveID
  42. {
  43. get { return _SlaveID; }
  44. set { SetProperty(ref _SlaveID, value); }
  45. }
  46. private bool _IsEnabled = false;
  47. public bool IsEnabled
  48. {
  49. get { return _IsEnabled; }
  50. set { SetProperty(ref _IsEnabled, value); }
  51. }
  52. private int _PollIntervalMs = 50;
  53. /// <summary>轮询间隔(毫秒)</summary>
  54. public int PollIntervalMs
  55. {
  56. get { return _PollIntervalMs; }
  57. set { SetProperty(ref _PollIntervalMs, value); }
  58. }
  59. private bool _UseInputRegisters = true;
  60. /// <summary>
  61. /// true=功能码 0x04 读输入寄存器(MDC 状态/实时数据区 3100+)
  62. /// false=功能码 0x03 读保持寄存器
  63. /// </summary>
  64. public bool UseInputRegisters
  65. {
  66. get { return _UseInputRegisters; }
  67. set { SetProperty(ref _UseInputRegisters, value); }
  68. }
  69. private WaveDataSourceMode _WaveDataMode = WaveDataSourceMode.RealtimeAccumulate;
  70. public WaveDataSourceMode WaveDataMode
  71. {
  72. get { return _WaveDataMode; }
  73. set { SetProperty(ref _WaveDataMode, value); }
  74. }
  75. private float _TorqueScaleFactor = 100f;
  76. /// <summary>扭矩寄存器缩放系数(MDC:Converted torque * x100)</summary>
  77. public float TorqueScaleFactor
  78. {
  79. get { return _TorqueScaleFactor; }
  80. set { SetProperty(ref _TorqueScaleFactor, value); }
  81. }
  82. #endregion
  83. #region 状态寄存器(MDC:3212 Status, 3307 Motor RUN)
  84. private ushort _LockInProgressAddress = 3307;
  85. /// <summary>锁付进行中地址(MDC:3307 Motor RUN,0=不检测)</summary>
  86. public ushort LockInProgressAddress
  87. {
  88. get { return _LockInProgressAddress; }
  89. set { SetProperty(ref _LockInProgressAddress, value); }
  90. }
  91. private ushort _LockInProgressActiveValue = 1;
  92. public ushort LockInProgressActiveValue
  93. {
  94. get { return _LockInProgressActiveValue; }
  95. set { SetProperty(ref _LockInProgressActiveValue, value); }
  96. }
  97. private ushort _FinishFlagAddress = 3212;
  98. /// <summary>锁付状态地址(MDC:3212,1=完成,2=NG)</summary>
  99. public ushort FinishFlagAddress
  100. {
  101. get { return _FinishFlagAddress; }
  102. set { SetProperty(ref _FinishFlagAddress, value); }
  103. }
  104. private ushort _FinishFlagCompleteValue = 1;
  105. /// <summary>锁付 OK 状态值(MDC:3212=1 Fastening complete)</summary>
  106. public ushort FinishFlagCompleteValue
  107. {
  108. get { return _FinishFlagCompleteValue; }
  109. set { SetProperty(ref _FinishFlagCompleteValue, value); }
  110. }
  111. private ushort _FinishFlagNgValue = 2;
  112. /// <summary>锁付 NG 状态值(MDC:3212=2 Fastening NG)</summary>
  113. public ushort FinishFlagNgValue
  114. {
  115. get { return _FinishFlagNgValue; }
  116. set { SetProperty(ref _FinishFlagNgValue, value); }
  117. }
  118. #endregion
  119. #region 锁付结果寄存器(MDC Event Data 3200+,功能码 0x04)
  120. private ushort _LockTurnsAddress = 3213;
  121. /// <summary>锁付圈数/角度源地址(MDC:3213 Snug torque angle,单位 degree,除以360得圈数)</summary>
  122. public ushort LockTurnsAddress
  123. {
  124. get { return _LockTurnsAddress; }
  125. set { SetProperty(ref _LockTurnsAddress, value); }
  126. }
  127. private float _TurnsScaleFactor = 360f;
  128. /// <summary>圈数换算除数(角度/360=圈数)</summary>
  129. public float TurnsScaleFactor
  130. {
  131. get { return _TurnsScaleFactor; }
  132. set { SetProperty(ref _TurnsScaleFactor, value); }
  133. }
  134. private ushort _LockTorqueAddress = 3204;
  135. /// <summary>锁付扭矩地址(MDC:3204 Converted torque * x100)</summary>
  136. public ushort LockTorqueAddress
  137. {
  138. get { return _LockTorqueAddress; }
  139. set { SetProperty(ref _LockTorqueAddress, value); }
  140. }
  141. private ushort _LockDurationAddress = 3201;
  142. /// <summary>锁付用时地址(MDC:3201 Fastening time ms)</summary>
  143. public ushort LockDurationAddress
  144. {
  145. get { return _LockDurationAddress; }
  146. set { SetProperty(ref _LockDurationAddress, value); }
  147. }
  148. private bool _LockDurationIsMilliseconds = true;
  149. /// <summary>锁付用时寄存器是否为毫秒(MDC 为 true)</summary>
  150. public bool LockDurationIsMilliseconds
  151. {
  152. get { return _LockDurationIsMilliseconds; }
  153. set { SetProperty(ref _LockDurationIsMilliseconds, value); }
  154. }
  155. private ushort _LockPassedAddress = 3305;
  156. /// <summary>
  157. /// 锁付 OK 实时位(MDC:3305,仅供参考;判定 OK/NG 以 3212 Status 为准)
  158. /// </summary>
  159. public ushort LockPassedAddress
  160. {
  161. get { return _LockPassedAddress; }
  162. set { SetProperty(ref _LockPassedAddress, value); }
  163. }
  164. private ushort _ProgramNumberAddress = 3202;
  165. /// <summary>程序号地址(MDC:3202 Preset no.)</summary>
  166. public ushort ProgramNumberAddress
  167. {
  168. get { return _ProgramNumberAddress; }
  169. set { SetProperty(ref _ProgramNumberAddress, value); }
  170. }
  171. #endregion
  172. #region 实时监控寄存器(MDC Realtime Data 3300+)
  173. private ushort _RealtimeTorqueAddress = 3300;
  174. /// <summary>实时扭矩(MDC:3300 Converted torque * x100)</summary>
  175. public ushort RealtimeTorqueAddress
  176. {
  177. get { return _RealtimeTorqueAddress; }
  178. set { SetProperty(ref _RealtimeTorqueAddress, value); }
  179. }
  180. private ushort _RealtimeSpeedAddress = 3301;
  181. /// <summary>实时转速(MDC:3301 Speed rpm)</summary>
  182. public ushort RealtimeSpeedAddress
  183. {
  184. get { return _RealtimeSpeedAddress; }
  185. set { SetProperty(ref _RealtimeSpeedAddress, value); }
  186. }
  187. #endregion
  188. #region 波形寄存器块(RegisterBlock 模式)
  189. private ushort _WaveDataCountAddress = 100;
  190. public ushort WaveDataCountAddress
  191. {
  192. get { return _WaveDataCountAddress; }
  193. set { SetProperty(ref _WaveDataCountAddress, value); }
  194. }
  195. private ushort _WaveDataStartAddress = 101;
  196. public ushort WaveDataStartAddress
  197. {
  198. get { return _WaveDataStartAddress; }
  199. set { SetProperty(ref _WaveDataStartAddress, value); }
  200. }
  201. private int _WavePointRegisterCount = 12;
  202. public int WavePointRegisterCount
  203. {
  204. get { return _WavePointRegisterCount; }
  205. set { SetProperty(ref _WavePointRegisterCount, value); }
  206. }
  207. private int _MaxWavePoints = 500;
  208. public int MaxWavePoints
  209. {
  210. get { return _MaxWavePoints; }
  211. set { SetProperty(ref _MaxWavePoints, value); }
  212. }
  213. #endregion
  214. #region 曲线上下限
  215. private float _TorqueUpperLimit = 1.0f;
  216. public float TorqueUpperLimit
  217. {
  218. get { return _TorqueUpperLimit; }
  219. set { SetProperty(ref _TorqueUpperLimit, value); }
  220. }
  221. private float _TorqueLowerLimit = 0.5f;
  222. public float TorqueLowerLimit
  223. {
  224. get { return _TorqueLowerLimit; }
  225. set { SetProperty(ref _TorqueLowerLimit, value); }
  226. }
  227. private string _LockCurveImageFolder = "..//LockCurve";
  228. public string LockCurveImageFolder
  229. {
  230. get { return _LockCurveImageFolder; }
  231. set { SetProperty(ref _LockCurveImageFolder, value); }
  232. }
  233. #endregion
  234. public ModbusTcpMasterConfig Clone()
  235. {
  236. return JsonConvert.DeserializeObject<ModbusTcpMasterConfig>(
  237. JsonConvert.SerializeObject(this));
  238. }
  239. }
  240. }