Shun 2 лет назад
Родитель
Сommit
69ed7ff56a
30 измененных файлов с 476 добавлено и 117 удалено
  1. 34 12
      README.md
  2. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Beckhoff.Param.json
  3. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Beckhoff.ParamDetails.json
  4. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Can.Param.json
  5. 2 2
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Can.ParamDetails.json
  6. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.DB.Param.json
  7. 2 2
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.DB.ParamDetails.json
  8. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Kafka.Param.json
  9. 14 0
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Mitsubishi.Param.json
  10. 97 0
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Mitsubishi.ParamDetails.json
  11. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Modbus.Param.json
  12. 2 2
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Modbus.ParamDetails.json
  13. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Mqtt.Param.json
  14. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Netty.Param.json
  15. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Netty.ParamDetails.json
  16. 17 0
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Omron.Param.json
  17. 134 0
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.Omron.ParamDetails.json
  18. 2 2
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDa.Param.json
  19. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDa.ParamDetails.json
  20. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDaHttp.Param.json
  21. 2 2
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDaHttp.ParamDetails.json
  22. 4 4
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcUa.Param.json
  23. 2 2
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcUa.ParamDetails.json
  24. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.RabbitMQ.Param.json
  25. 1 1
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.S7.Param.json
  26. 2 2
      src/YSAI.DAQ/YSAI.Manage/param/YSAI.S7.ParamDetails.json
  27. 2 2
      src/YSAI.DAQ/YSAI.Omron/OmronData.cs
  28. 2 2
      src/YSAI.DAQ/YSAI.Omron/OmronOperate.cs
  29. 106 31
      src/YSAI.DAQ/YSAI.Test.All/Program.cs
  30. 39 39
      src/YSAI.DAQ/YSAI.Test.Console/Program.cs

+ 34 - 12
README.md

@@ -42,8 +42,9 @@
 5. DB(数据库)	[SqlServer、MySql、Oracle、SQLite]   
 6. Modbus	[Rtu、Ascii、Tcp、Udp]
 7. S7(西门子)	[S7200、Logo0BA8、S7200Smart、S7300、S7400、S71200、S71500]
-8. Beckhoff(倍福)
-9. Mitsubishi(三菱)
+8. Beckhoff(倍福)	[ADS]
+9. Mitsubishi(三菱)	[A1E、QNA3E]
+10. Omron(欧姆龙)	[FINS]
 
 ```sharp
 namespace YSAI.Core.@interface
@@ -80,42 +81,63 @@ namespace YSAI.Core.@interface
 3.应用代码如下
 4.协议包内还有内部公共方法,请自行研究使用
 
-
 ------------------------------------------------------
 
 //实例创建的几种方式
 
 //第一种方式
 BeckhoffOperate beckhoffOperate1 = new BeckhoffOperate();
+
 //第二种方式(单例模式)
 BeckhoffOperate? beckhoffOperate2 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
+
 //第三种方式(单例模式)
 BeckhoffOperate beckhoffOperate3 = BeckhoffOperate.Instance(new BeckhoffData.Basics());
 
-//第一种的应用场景是获取库参数信息时当这个对象已经实例化了,但是实际功能无法使用,就可以直接使用 CreateInstance 创建一个单例模式
-//先获取参数
-beckhoffOperate1.GetParam();
-//在生成单例后赋值,这样当前实例就已经可以使用所有功能,并且是单例的存在
-beckhoffOperate1 = beckhoffOperate1.CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
+//第四种方式
+IDaq daq1 = new BeckhoffOperate(new BeckhoffData.Basics());
 
-//第二种与第三种就是直接创建单例模式,但第二种是为了在反射的情况下使用单例模式,第二种也是为第一种情况而产生
+//第五种方式
+IDaq daq2 = BeckhoffOperate.Instance(new BeckhoffData.Basics());
 
-//第种方式
+//第种方式
 using (BeckhoffOperate beckhoffOperate4 = new BeckhoffOperate())
 {
     //使用完直接释放
 }
-//第五种方式
+
+//第七种方式
 using (BeckhoffOperate beckhoffOperate5 = BeckhoffOperate.Instance(new BeckhoffData.Basics()))
 {
     //使用完直接释放这个单例
 }
-//第六种方式
+
+//第八种方式
 using (BeckhoffOperate? beckhoffOperate6 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>())
 {
     //使用完直接释放这个单例
 }
 
+//第九种方式
+using (IDaq daq3 = new BeckhoffOperate(new BeckhoffData.Basics()))
+{
+    //使用完直接释放这个单例
+}
+
+//第十种方式
+using (IDaq daq4 = BeckhoffOperate.Instance(new BeckhoffData.Basics()))
+{
+    //使用完直接释放这个单例
+}
+
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
+//第一种的应用场景是获取库参数信息时当这个对象已经实例化了,但是实际功能无法使用,就可以直接使用 CreateInstance 创建一个单例模式
+//先获取参数
+beckhoffOperate1.GetParam();
+//在生成单例后赋值,这样当前实例就已经可以使用所有功能,并且是单例的存在
+beckhoffOperate1 = beckhoffOperate1.CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
+//第二种与第三种就是直接创建单例模式,但第二种是为了在反射的情况下使用单例模式,第二种也是为第一种情况而产生
+
 ------------------------------------------------------
 
 //采集协议

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Beckhoff.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "407620F40D714E72A2D7F80259A4F465",
+    "SN": "5613CD5D815449FA8D86F77CA4727C68",
     "AmsNetID": "192.168.66.130.1.1",
     "Port": 851,
     "TaskNumber": 5,

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Beckhoff.ParamDetails.json

@@ -29,7 +29,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Can.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "0D71CCD29D404B7A9BE32EF364EB8868",
+    "SN": "51F6B6D32E034A46B5F90F5621777D16",
     "BaudRate": 0,
     "CanChannel": 0,
     "HandleInterval": 1000,

+ 2 - 2
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Can.ParamDetails.json

@@ -103,7 +103,7 @@
     },
     {
         "Name": "HandleInterval",
-        "Describe": "处理间隔(毫秒)",
+        "Describe": "处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null
@@ -131,7 +131,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.DB.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "4B42DEB8D4FE4C48960719614D11D55B",
+    "SN": "711D5EAC37394A1F8B15FCFD675DFD0A",
     "ConnectStr": null,
     "DBType": "SqlServer",
     "HandleInterval": 1000,

+ 2 - 2
src/YSAI.DAQ/YSAI.Manage/param/YSAI.DB.ParamDetails.json

@@ -43,7 +43,7 @@
     },
     {
         "Name": "HandleInterval",
-        "Describe": "处理间隔(毫秒)",
+        "Describe": "处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null
@@ -71,7 +71,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Kafka.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "3DB09D41C3F54AAA9AAA74D32B91F842",
+    "SN": "DB3DA14DD1FE4461ADEE7416BB378F26",
     "BootstrapServers": null,
     "WaitTime": 1000,
     "SecurityProtocol": "Plaintext",

+ 14 - 0
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Mitsubishi.Param.json

@@ -0,0 +1,14 @@
+{
+    "SN": "03A06B5FF78340B79E146FCBC1541B2E",
+    "Ip": "127.0.0.1",
+    "Port": 6688,
+    "InterruptReconnection": true,
+    "ReconnectionInterval": 2000,
+    "Timeout": 1000,
+    "PType": "A1E",
+    "HandleInterval": 1000,
+    "ChangeOut": true,
+    "AllOut": false,
+    "TaskNumber": 5,
+    "TaskHandleInterval": 100
+}

+ 97 - 0
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Mitsubishi.ParamDetails.json

@@ -0,0 +1,97 @@
+[
+    {
+        "Name": "SN",
+        "Describe": "唯一标识符",
+        "ParamType": "String",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "Ip",
+        "Describe": "IP",
+        "ParamType": "String",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "Port",
+        "Describe": "端口",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "InterruptReconnection",
+        "Describe": "是否需要断开重新连接",
+        "ParamType": "Boolean",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "ReconnectionInterval",
+        "Describe": "重连间隔",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "Timeout",
+        "Describe": "超时时间",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "PType",
+        "Describe": "协议类型",
+        "ParamType": "Enum",
+        "EnumArray": [
+            {
+                "Value": 0,
+                "Name": "A1E",
+                "Describe": "三菱MC.A1E帧"
+            },
+            {
+                "Value": 1,
+                "Name": "QNA3E",
+                "Describe": "三菱MC.QNA3E帧"
+            }
+        ],
+        "ObjArray": null
+    },
+    {
+        "Name": "HandleInterval",
+        "Describe": "处理间隔",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "ChangeOut",
+        "Describe": "变化抛出",
+        "ParamType": "Boolean",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "AllOut",
+        "Describe": "未变项与变化项一同抛出",
+        "ParamType": "Boolean",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "TaskNumber",
+        "Describe": "任务数量",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "TaskHandleInterval",
+        "Describe": "任务处理间隔",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    }
+]

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Modbus.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "A834768D27DC495DB7BF79C2D0F7B821",
+    "SN": "ACA40825B5FE44E7A76DCC06D495933A",
     "SlaveAddress": 1,
     "ProtocolType": "Tcp",
     "ReadTimeOut": 2000,

+ 2 - 2
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Modbus.ParamDetails.json

@@ -291,7 +291,7 @@
     },
     {
         "Name": "HandleInterval",
-        "Describe": "处理间隔(毫秒)",
+        "Describe": "处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null
@@ -319,7 +319,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Mqtt.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "1E84CB58E61D45B4A5B4A7037F3B5987",
+    "SN": "92337887C0D744E89EF5CE04F3AF13C0",
     "Ip": null,
     "Port": 0,
     "UserName": null,

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Netty.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "0E589994F99743CA94D4C2E254EAF515",
+    "SN": "E7A293E138134535BD8BEA4FCBB96509",
     "Host": null,
     "Port": 0,
     "SslFilePath": null,

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Netty.ParamDetails.json

@@ -43,7 +43,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 17 - 0
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Omron.Param.json

@@ -0,0 +1,17 @@
+{
+    "SN": "AD959336358148D194AC7A2638FF8C45",
+    "Ip": "127.0.0.1",
+    "Port": 6688,
+    "InterruptReconnection": true,
+    "ReconnectionInterval": 2000,
+    "Timeout": 1000,
+    "UnitAddress": 0,
+    "SA1": 11,
+    "PType": "Fins",
+    "EFormat": "CDAB",
+    "HandleInterval": 1000,
+    "ChangeOut": true,
+    "AllOut": false,
+    "TaskNumber": 5,
+    "TaskHandleInterval": 100
+}

+ 134 - 0
src/YSAI.DAQ/YSAI.Manage/param/YSAI.Omron.ParamDetails.json

@@ -0,0 +1,134 @@
+[
+    {
+        "Name": "SN",
+        "Describe": "唯一标识符",
+        "ParamType": "String",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "Ip",
+        "Describe": "IP",
+        "ParamType": "String",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "Port",
+        "Describe": "端口",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "InterruptReconnection",
+        "Describe": "是否需要断开重新连接",
+        "ParamType": "Boolean",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "ReconnectionInterval",
+        "Describe": "重连间隔",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "Timeout",
+        "Describe": "超时时间",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "UnitAddress",
+        "Describe": "目标单元地址",
+        "ParamType": "Byte",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "SA1",
+        "Describe": "SA1客户端节点编号",
+        "ParamType": "Byte",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "PType",
+        "Describe": "协议类型",
+        "ParamType": "Enum",
+        "EnumArray": [
+            {
+                "Value": 0,
+                "Name": "Fins",
+                "Describe": "欧姆龙FINS"
+            }
+        ],
+        "ObjArray": null
+    },
+    {
+        "Name": "EFormat",
+        "Describe": "数据大小端",
+        "ParamType": "Enum",
+        "EnumArray": [
+            {
+                "Value": 0,
+                "Name": "ABCD",
+                "Describe": "大端序ABCD"
+            },
+            {
+                "Value": 1,
+                "Name": "BADC",
+                "Describe": "中端序BADC"
+            },
+            {
+                "Value": 2,
+                "Name": "CDAB",
+                "Describe": "中端序CDAB"
+            },
+            {
+                "Value": 3,
+                "Name": "DCBA",
+                "Describe": "小端序DCBA"
+            }
+        ],
+        "ObjArray": null
+    },
+    {
+        "Name": "HandleInterval",
+        "Describe": "处理间隔",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "ChangeOut",
+        "Describe": "变化抛出",
+        "ParamType": "Boolean",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "AllOut",
+        "Describe": "未变项与变化项一同抛出",
+        "ParamType": "Boolean",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "TaskNumber",
+        "Describe": "任务数量",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    },
+    {
+        "Name": "TaskHandleInterval",
+        "Describe": "任务处理间隔",
+        "ParamType": "Int32",
+        "EnumArray": null,
+        "ObjArray": null
+    }
+]

+ 2 - 2
src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDa.Param.json

@@ -1,6 +1,6 @@
 {
-    "SubscribeSingleGroupMaxCount": -1,
-    "SN": "4E6B107681FC43789F3B1CEA399D4CBD",
+    "SubscribeSingleGroupMaxCount": 0,
+    "SN": "B97DDD1C7E3B4486BBB66332C3BF6BFF",
     "SName": "Knight.OPC.Server.Demo",
     "ApiVerType": "COM_DA_30",
     "UpdateRate": 100,

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDa.ParamDetails.json

@@ -52,7 +52,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDaHttp.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "FCAA265E134F474480570D9C243A8B8D",
+    "SN": "9B24D0EAFAA84A30A710B0F4204CAD33",
     "Ip": "127.0.0.1",
     "Port": 6688,
     "Key": null,

+ 2 - 2
src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcDaHttp.ParamDetails.json

@@ -47,7 +47,7 @@
     },
     {
         "Name": "HandleInterval",
-        "Describe": "处理间隔(毫秒)",
+        "Describe": "处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null
@@ -75,7 +75,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 4 - 4
src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcUa.Param.json

@@ -1,18 +1,18 @@
 {
-    "SubscribeSingleGroupMaxCount": -1,
-    "SN": "BB15C12846B9441DA56C3CF8D73C6FA5",
+    "SubscribeSingleGroupMaxCount": 0,
+    "SN": "519334EF3867403989D197B291050ABF",
     "UserName": null,
     "Password": null,
     "Cer": null,
     "SecreKey": null,
     "ServerUrl": null,
-    "CustomName": "b384b003dba145a2be74acc90fb0518f",
+    "CustomName": "d0937d05e91c45b0a9d6dd2276a31005",
     "Timeout": 5000,
     "SamplingInterval": 100,
     "PublishingInterval": 1000,
     "KeepAliveCount": 261120,
     "LifetimeCount": 783360,
-    "QueueSize": 65536,
+    "QueueSize": 1020,
     "TaskNumber": 5,
     "TaskHandleInterval": 100
 }

+ 2 - 2
src/YSAI.DAQ/YSAI.Manage/param/YSAI.OpcUa.ParamDetails.json

@@ -43,7 +43,7 @@
     },
     {
         "Name": "CustomName",
-        "Describe": "自定义名称(唯一)",
+        "Describe": "客户端名称",
         "ParamType": "String",
         "EnumArray": null,
         "ObjArray": null
@@ -99,7 +99,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.RabbitMQ.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "5FDBBA62344C45B1BC9EA1568A7B1375",
+    "SN": "F536D52BB0F246E3943F3D9999634F80",
     "ExChangeName": null,
     "HostName": null,
     "Port": 0,

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.S7.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "6EEF48C8C22140B8A854DB230AF74483",
+    "SN": "6FF7E1B9379A4E478625460EAB45E31C",
     "Ip": null,
     "Port": 0,
     "S7CpuType": "S7200",

+ 2 - 2
src/YSAI.DAQ/YSAI.Manage/param/YSAI.S7.ParamDetails.json

@@ -79,7 +79,7 @@
     },
     {
         "Name": "HandleInterval",
-        "Describe": "处理间隔(毫秒)",
+        "Describe": "处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null
@@ -107,7 +107,7 @@
     },
     {
         "Name": "TaskHandleInterval",
-        "Describe": "任务处理间隔(毫秒)",
+        "Describe": "任务处理间隔",
         "ParamType": "Int32",
         "EnumArray": null,
         "ObjArray": null

+ 2 - 2
src/YSAI.DAQ/YSAI.Omron/OmronData.cs

@@ -86,7 +86,7 @@ namespace YSAI.Omron
             [Description("协议类型")]
             [JsonConverter(typeof(StringEnumConverter))]
             [Display(true, true, true, Core.data.ParamStructure.dataCate.select)]
-            public pType PType { get; set; } = pType.Fins;
+            public pType PType { get; set; } = pType.FINS;
 
             /// <summary>
             /// 数据大小端
@@ -138,7 +138,7 @@ namespace YSAI.Omron
             /// 欧姆龙FINS
             /// </summary>
             [Description("欧姆龙FINS")]
-            Fins
+            FINS
         }
 
         /// <summary>

+ 2 - 2
src/YSAI.DAQ/YSAI.Omron/OmronOperate.cs

@@ -280,7 +280,7 @@ namespace YSAI.Omron
             //类型判断
             switch (basics.PType)
             {
-                case pType.Fins:
+                case pType.FINS:
                     details = ParseFins(address);
                     command = ReadCommandFins(details, (ushort)length);
                     break;
@@ -332,7 +332,7 @@ namespace YSAI.Omron
             //类型判断
             switch (basics.PType)
             {
-                case pType.Fins:
+                case pType.FINS:
                     details = ParseFins(address, isBit: isBit);
                     command = WriteCommandFins(details, data);
                     break;

+ 106 - 31
src/YSAI.DAQ/YSAI.Test.All/Program.cs

@@ -1,11 +1,60 @@
 
 
 
-using YSAI.Omron;
+//using YSAI.Core.data;
+//using YSAI.Omron;
+//using YSAI.Unility;
+
+//OmronOperate omronOperate = OmronOperate.Instance(new OmronData.Basics { Ip = "127.0.0.1", Port = 1111 });
+//omronOperate.On();
+
+
+
+////地址
+//string AName = "D6402";
+
+//Console.WriteLine(omronOperate.Write(new System.Collections.Concurrent.ConcurrentDictionary<string, double> { [AName] = new Random().NextDouble() }).State);
+
+//Address address = new Address
+//{
+//    AddressArray = new List<AddressDetails>
+//    {
+//         new AddressDetails
+//         {
+//               AddressName="D6402",
+//               AddressDataType=YSAI.Core.@enum.DataType.Double
+//         }
+//    }
+//};
 
-OmronOperate omronOperate = OmronOperate.Instance(new OmronData.Basics { Ip = "127.0.0.1", Port = 1111 });
-omronOperate.On();
+//Console.WriteLine($"这是读取:{omronOperate.Read(address).ToJson().JsonFormatting()}");
 
+//omronOperate.OnEvent += OmronOperate_OnEvent;
+//omronOperate.Subscribe(address);
+
+
+//while (true)
+//{
+
+
+//    while (true)
+//    {
+//        Console.ReadLine();
+//        double aa = new Random().NextDouble();
+//        Console.WriteLine(aa);
+//        omronOperate.Write(new System.Collections.Concurrent.ConcurrentDictionary<string, double> { [AName] = aa });
+
+
+//        Console.WriteLine($"这是读取:{omronOperate.Read(address).ToJson().JsonFormatting()}");
+//    }
+//}
+
+
+//void OmronOperate_OnEvent(object? sender, EventResult e)
+//{
+//    Console.WriteLine("这是订阅");
+//    Console.WriteLine(e.ToJson().JsonFormatting());
+//}
 
 //using System.Collections.Concurrent;
 //using YSAI.Core.data;
@@ -49,38 +98,64 @@ omronOperate.On();
 
 
 
-//using YSAI.Beckhoff;
+using YSAI.Beckhoff;
+using YSAI.Core.@interface;
 
-////第一种方式
-//BeckhoffOperate beckhoffOperate1 = new BeckhoffOperate();
-////第二种方式(单例模式)
-//BeckhoffOperate? beckhoffOperate2 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
-////第三种方式(单例模式)
-//BeckhoffOperate beckhoffOperate3 = BeckhoffOperate.Instance(new BeckhoffData.Basics());
+//第一种方式
+BeckhoffOperate beckhoffOperate1 = new BeckhoffOperate();
+
+//第二种方式(单例模式)
+BeckhoffOperate? beckhoffOperate2 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
+
+//第三种方式(单例模式)
+BeckhoffOperate beckhoffOperate3 = BeckhoffOperate.Instance(new BeckhoffData.Basics());
+
+//第四种方式
+IDaq daq1 = new BeckhoffOperate(new BeckhoffData.Basics());
+
+//第五种方式
+IDaq daq2 = BeckhoffOperate.Instance(new BeckhoffData.Basics());
+
+//第六种方式
+using (BeckhoffOperate beckhoffOperate4 = new BeckhoffOperate())
+{
+    //使用完直接释放
+}
+
+//第七种方式
+using (BeckhoffOperate beckhoffOperate5 = BeckhoffOperate.Instance(new BeckhoffData.Basics()))
+{
+    //使用完直接释放这个单例
+}
+
+//第八种方式
+using (BeckhoffOperate? beckhoffOperate6 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>())
+{
+    //使用完直接释放这个单例
+}
+
+//第九种方式
+using (IDaq daq3 = new BeckhoffOperate(new BeckhoffData.Basics()))
+{
+    //使用完直接释放这个单例
+}
+
+//第十种方式
+using (IDaq daq4 = BeckhoffOperate.Instance(new BeckhoffData.Basics()))
+{
+    //使用完直接释放这个单例
+}
+
+//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
+//第一种的应用场景是获取库参数信息时当这个对象已经实例化了,但是实际功能无法使用,就可以直接使用 CreateInstance 创建一个单例模式
+//先获取参数
+beckhoffOperate1.GetParam();
+//在生成单例后赋值,这样当前实例就已经可以使用所有功能,并且是单例的存在
+beckhoffOperate1 = beckhoffOperate1.CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
+//第二种与第三种就是直接创建单例模式,但第二种是为了在反射的情况下使用单例模式,第二种也是为第一种情况而产生
 
-////第一种的应用场景是获取库参数信息时当这个对象已经实例化了,但是实际功能无法使用,就可以直接使用 CreateInstance 创建一个单例模式
-////先获取参数
-//beckhoffOperate1.GetParam();
-////在生成单例后赋值,这样当前实例就已经可以使用所有功能,并且是单例的存在
-//beckhoffOperate1 = beckhoffOperate1.CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
 
-////第二种与第三种就是直接创建单例模式,但第二种是为了在反射的情况下使用单例模式,第二种也是为第一种情况而产生
 
-////第四种方式
-//using (BeckhoffOperate beckhoffOperate4 = new BeckhoffOperate())
-//{
-//    //使用完直接释放
-//}
-////第五种方式
-//using (BeckhoffOperate beckhoffOperate5 = BeckhoffOperate.Instance(new BeckhoffData.Basics()))
-//{
-//    //使用完直接释放这个单例
-//}
-////第六种方式
-//using (BeckhoffOperate? beckhoffOperate6 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>())
-//{
-//    //使用完直接释放这个单例
-//}
 
 //Console.WriteLine();
 //using YSAI.Beckhoff;

+ 39 - 39
src/YSAI.DAQ/YSAI.Test.Console/Program.cs

@@ -1,54 +1,54 @@
-using YSAI.Beckhoff;
-using YSAI.Can;
-using YSAI.Core.data;
-using YSAI.DB;
-using YSAI.Kafka;
-using YSAI.Log;
-using YSAI.Modbus;
-using YSAI.Mqtt.client;
-using YSAI.Netty.client;
-using YSAI.Opc.da.client;
-using YSAI.Opc.da.http;
-using YSAI.Opc.ua.client;
-using YSAI.RabbitMQ;
-using YSAI.S7;
-using YSAI.Unility;
+//using YSAI.Beckhoff;
+//using YSAI.Can;
+//using YSAI.Core.data;
+//using YSAI.DB;
+//using YSAI.Kafka;
+//using YSAI.Log;
+//using YSAI.Modbus;
+//using YSAI.Mqtt.client;
+//using YSAI.Netty.client;
+//using YSAI.Opc.da.client;
+//using YSAI.Opc.da.http;
+//using YSAI.Opc.ua.client;
+//using YSAI.RabbitMQ;
+//using YSAI.S7;
+//using YSAI.Unility;
 
-OperateResult operateResult = new BeckhoffOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"BeckhoffOperate.log");
+//OperateResult operateResult = new BeckhoffOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"BeckhoffOperate.log");
 
-operateResult = new CanOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"CanOperate.log");
+//operateResult = new CanOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"CanOperate.log");
 
-operateResult = new DBOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"DBOperate.log");
+//operateResult = new DBOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"DBOperate.log");
 
-operateResult = new ModbusOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"ModbusOperate.log");
+//operateResult = new ModbusOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"ModbusOperate.log");
 
-operateResult = new OpcUaClientOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"OpcUaClientOperate.log");
+//operateResult = new OpcUaClientOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"OpcUaClientOperate.log");
 
-operateResult = new OpcDaClientOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"OpcDaClientOperate.log");
+//operateResult = new OpcDaClientOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"OpcDaClientOperate.log");
 
-operateResult = new OpcDaHttpOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"OpcDaHttpOperate.log");
+//operateResult = new OpcDaHttpOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"OpcDaHttpOperate.log");
 
-operateResult = new S7Operate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"S7Operate.log");
+//operateResult = new S7Operate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"S7Operate.log");
 
-operateResult = new KafkaOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"KafkaOperate.log");
+//operateResult = new KafkaOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"KafkaOperate.log");
 
-operateResult = new MqttClientOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"MqttClientOperate.log");
+//operateResult = new MqttClientOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"MqttClientOperate.log");
 
-operateResult = new NettyClientOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"NettyClientOperate.log");
+//operateResult = new NettyClientOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"NettyClientOperate.log");
 
-operateResult = new RabbitMQOperate().GetParam();
-LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"RabbitMQOperate.log");
+//operateResult = new RabbitMQOperate().GetParam();
+//LogHelper.Verbose(operateResult.RData.ToJson().JsonFormatting(), $"RabbitMQOperate.log");
 
 //using System.Collections.Concurrent;
 //using YSAI.Beckhoff;