CommandRoller.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using ProjectManagementSystem.Device.Core;
  2. using ProjectManagementSystem.Device.Extenions;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace ProjectManagementSystem.Device.Command
  9. {
  10. public class CommandRoller : IDeviceCommand
  11. {
  12. private byte[] buffer = new byte[40] { 0x50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x53 };
  13. public byte TargetID { get; set; }
  14. public byte Function { get; set; } = 0x11;
  15. public ushort Operate { get; set; } = 0x0150;
  16. public ushort ActionCode { get; set; }
  17. public byte[] Serialization()
  18. {
  19. var operateBytes = BitConverter.GetBytes(Operate);
  20. var actionBytes = BitConverter.GetBytes(ActionCode);
  21. buffer[0] = 0x50;
  22. buffer[1] = 0x01;//请求序号
  23. buffer[2] = 0x15;//本机ID
  24. buffer[3] = TargetID; //目标ID
  25. buffer[4] = Function;//功能码
  26. buffer[5] = 0x20;//数据长度
  27. buffer[6] = 0x00;//端口输出
  28. buffer[7] = 0x00;//端口输出
  29. buffer[8] = 0x00;//端口输出
  30. buffer[9] = 0x00;//端口输出
  31. buffer[10] = 0x00;//操作参数2
  32. buffer[11] = 0x00;//操作参数2
  33. buffer[12] = 0x00;//操作参数3
  34. buffer[13] = 0x00;//操作参数3
  35. buffer[14] = operateBytes[1];//操作码 高位
  36. buffer[15] = operateBytes[0];//操作码 低位
  37. buffer[16] = actionBytes[1];//操作内容 高位
  38. buffer[17] = actionBytes[0];//操作内容 低位
  39. buffer[18] = 0x01;//操作执行标志 0-停止 1-执行
  40. buffer[19] = 0x01;//操作中断标志 1-正常 2-暂停
  41. buffer[20] = 0x00;//备用
  42. buffer[21] = 0x00;//备用
  43. //buffer[22] = 0x75;//滚筒超时
  44. //buffer[23] = 0x30;//滚筒超时 1-30000单位0.1s (0对应PLC的默认值,>30000屏蔽)
  45. //buffer[24] = 0x00;//滚筒速度
  46. //buffer[25] = 0x32;//滚筒速度 0-不选择 全0则使用PLC默认值单位:r / min 0--60
  47. buffer[22] = 0x00;//滚筒超时
  48. buffer[23] = 0x00;//滚筒超时 1-30000单位0.1s (0对应PLC的默认值,>30000屏蔽)
  49. buffer[24] = 0x00;//滚筒速度
  50. buffer[25] = 0x00;//滚筒速度 0-不选择 全0则使用PLC默认值单位:r / min 0--60
  51. buffer[26] = 0x00;//备用
  52. buffer[27] = 0x00;//备用
  53. buffer[28] = 0x00;//备用
  54. buffer[29] = 0x00;//备用
  55. buffer[30] = 0x00;//备用
  56. buffer[31] = 0x00;//备用
  57. buffer[32] = 0x00;//备用
  58. buffer[33] = 0x00;//备用
  59. buffer[34] = 0x00;//备用
  60. buffer[35] = 0x00;//备用
  61. buffer[36] = 0x00;//备用
  62. buffer[37] = 0x00;//备用
  63. buffer[38] = buffer.XOR_Check(38);//异或
  64. return buffer;
  65. }
  66. }
  67. }