IPLCConnect.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. namespace IPLCConnect
  2. {
  3. public enum PLCProtocol
  4. {
  5. Modbus,
  6. S7,
  7. }
  8. public sealed class PLCProtocolAttribute:Attribute
  9. {
  10. public PLCProtocolAttribute(PLCProtocol protocol = PLCProtocol.S7) => Protocol = protocol;
  11. public PLCProtocol Protocol { get; } = PLCProtocol.S7;
  12. }
  13. public interface IPLCConnect:IDisposable
  14. {
  15. public PLCProtocol Protocol { get; }
  16. /// <summary>
  17. /// 连接状态
  18. /// </summary>
  19. public bool IsConnected { get; }
  20. /// <summary>
  21. /// IP地址
  22. /// </summary>
  23. public string IP { get; }
  24. /// <summary>
  25. /// 端口
  26. /// </summary>
  27. public int Port { get; }
  28. /// <summary>
  29. /// 初始化
  30. /// </summary>
  31. /// <param name="ip">IP地址</param>
  32. /// <param name="port">端口号</param>
  33. public void Init(string ip, int port);
  34. /// <summary>
  35. /// 读寄存器
  36. /// </summary>
  37. /// <typeparam name="T">数据类型</typeparam>
  38. /// <param name="addr">地址</param>
  39. /// <returns></returns>
  40. public T Read<T>(string addr) where T : unmanaged;
  41. /// <summary>
  42. /// 读取bool
  43. /// </summary>
  44. /// <param name="addr">地址</param>
  45. /// <param name="bitindex">bit序号</param>
  46. /// <returns></returns>
  47. public bool ReadBit(string addr, byte bitindex);
  48. /// <summary>
  49. /// 写寄存器
  50. /// </summary>
  51. /// <typeparam name="T">数据类型</typeparam>
  52. /// <param name="addr">地址</param>
  53. /// <param name="value">需要写入的值</param>
  54. public void Write<T>(string addr, T value) where T : unmanaged;
  55. /// <summary>
  56. /// 写bool
  57. /// </summary>
  58. /// <param name="addr">地址</param>
  59. /// <param name="bitindex">bit序号</param>
  60. /// <param name="value">值</param>
  61. public void Writebit(string addr, byte bitindex, bool value);
  62. /// <summary>
  63. /// 连接
  64. /// </summary>
  65. public void Connect();
  66. /// <summary>
  67. /// 断开连接
  68. /// </summary>
  69. public void DisConnect();
  70. /// <summary>
  71. /// 连接状态改变
  72. /// </summary>
  73. public event EventHandler<bool> StatusChanged;
  74. }
  75. }