diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs index de2c518..f111acd 100644 --- a/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Siemens/SiemensPpiProtocolLinker.cs @@ -19,7 +19,7 @@ namespace Modbus.Net.Siemens public SiemensPpiProtocolLinker(string com, int slaveAddress) : base(com, 9600, Parity.Even, StopBits.One, 8, slaveAddress) { - ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"))); + ((BaseConnector)BaseConnector).AddController(new FifoController(int.Parse(new ConfigurationBuilder().AddJsonFile($"appsettings.json").Build().GetSection("Config")["FetchSleepTime"] ?? "0"), true, null, 100)); } /// diff --git a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs index 39c251b..90d5274 100644 --- a/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs +++ b/Modbus.Net/Modbus.Net.Siemens/SiemensTcpProtocolLinker.cs @@ -26,7 +26,7 @@ namespace Modbus.Net.Siemens public SiemensTcpProtocolLinker(string ip, int port) : base(ip, port) { - ((BaseConnector)BaseConnector).AddController(new MatchDirectlySendController(new ICollection<(int,int)>[] { new List<(int,int)> { (11,11), (12,12) } }, DuplicateWithCount.GetDuplcateFunc(new List{2, 3}, 0))); + ((BaseConnector)BaseConnector).AddController(new MatchDirectlySendController(new ICollection<(int,int)>[] { new List<(int,int)> { (11,11), (12,12) } }, DuplicateWithCount.GetDuplcateFunc(new List{2, 3}, 0), 100)); } /// diff --git a/Modbus.Net/Modbus.Net/Controller/FifoController.cs b/Modbus.Net/Modbus.Net/Controller/FifoController.cs index d35a4dc..503f4da 100644 --- a/Modbus.Net/Modbus.Net/Controller/FifoController.cs +++ b/Modbus.Net/Modbus.Net/Controller/FifoController.cs @@ -15,7 +15,7 @@ namespace Modbus.Net private bool _taskCancel = false; - private int _waitingListMaxCount = 10000; + private int _waitingListMaxCount; private readonly Semaphore _taskCycleSema; @@ -30,14 +30,16 @@ namespace Modbus.Net /// 间隔时间 /// 是否开启信号量 /// 包切分函数 - public FifoController(int acquireTime, bool activateSema = true, Func> duplicateFunc = null) + /// 包等待队列长度 + public FifoController(int acquireTime, bool activateSema = true, Func> duplicateFunc = null, int waitingListMaxCount = 1) : base(duplicateFunc) { + _waitingListMaxCount = waitingListMaxCount; if (activateSema) { _taskCycleSema = new Semaphore(0, _waitingListMaxCount); } - AcquireTime = acquireTime; + AcquireTime = acquireTime; } /// diff --git a/Modbus.Net/Modbus.Net/Controller/MatchController.cs b/Modbus.Net/Modbus.Net/Controller/MatchController.cs index 8a60388..97bbcdd 100644 --- a/Modbus.Net/Modbus.Net/Controller/MatchController.cs +++ b/Modbus.Net/Modbus.Net/Controller/MatchController.cs @@ -21,8 +21,9 @@ namespace Modbus.Net /// 获取间隔 /// 是否开启信号量 /// 包切分函数 + /// 包切分函数 public MatchController(ICollection<(int, int)>[] keyMatches, int acquireTime, bool activateSema = true, - Func> duplicateFunc = null) : base(acquireTime, activateSema, duplicateFunc) + Func> duplicateFunc = null, int waitingListMaxCount = 1) : base(acquireTime, activateSema, duplicateFunc, waitingListMaxCount) { KeyMatches = keyMatches; } diff --git a/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs b/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs index 098c3a0..0bb44be 100644 --- a/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs +++ b/Modbus.Net/Modbus.Net/Controller/MatchDirectlySendController.cs @@ -10,8 +10,8 @@ namespace Modbus.Net { /// public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches, - Func> duplicateFunc = null) : base(keyMatches, - 0, false, duplicateFunc) + Func> duplicateFunc = null, int waitingListMaxCount = 1) : base(keyMatches, + 0, false, duplicateFunc, waitingListMaxCount) { } diff --git a/Samples/Automation Projects/Automation/MachineJob/AdditionalFiles/PLCM/plcmArchive.pma b/Samples/Automation Projects/Automation/MachineJob/AdditionalFiles/PLCM/plcmArchive.pma new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/AdditionalFiles/PLCM/plcmArchive.pma differ diff --git a/Samples/Automation Projects/Automation/MachineJob/AdditionalFiles/PLCM/plcmArchive.pma15_0 b/Samples/Automation Projects/Automation/MachineJob/AdditionalFiles/PLCM/plcmArchive.pma15_0 new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/AdditionalFiles/PLCM/plcmArchive.pma15_0 differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SPL/options b/Samples/Automation Projects/Automation/MachineJob/IM/SPL/options new file mode 100644 index 0000000..027c00f --- /dev/null +++ b/Samples/Automation Projects/Automation/MachineJob/IM/SPL/options @@ -0,0 +1,4 @@ +x^WrD-3!.qC;xjxܵt.^*y < 3<䐘 EYywt񗾰ūw)Ҁ(9=m&qۧJPv!TfVѨ՝zjELE!49D*$j=~)("ztg'P$yĊi=EGricZB^M$=N̘7k1܍@$SA%_X̼l7M[O+(p~QM'фF|]\ .`,G?VfSw6 3o'h+D:LP/岁U)ueXnm)P`E D0!E 3?&~uRA`IA:;!/);H8}Kv֨ZD6^LMrݻ~~nT`(OUUl_%޷O(љU&"fدzS(xg|YO䰔bkBX'.ѻHyPM9W6mFt29\.XT{Fzy ^܆RxΟT +6CL%uu@>(K,~ZN^Wz#X#a&it)>swYn*ӑ?ŒO0#_^@zԁl ? +'}rjxE wγY)/vݩpO4H=Zag]ΓKaoڍmX~LhE=4 \ No newline at end of file diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fdt b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fdt new file mode 100644 index 0000000..c288656 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fdt differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fdx b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fdx new file mode 100644 index 0000000..07efc66 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fdx differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fnm b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fnm new file mode 100644 index 0000000..8b6e904 --- /dev/null +++ b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.fnm @@ -0,0 +1 @@ +%###id###VisulizationRootBrowsableId ###TargetIdName DisplayName-###SearchableNonTechnicalFieldNamesOfDocument ###ParentIds###ImmediateParentId###ReferenceFieldIds###SearchFilterIdsTitleLanguageVersion Constant name Event class###UpdatableParentIdInterfaceMember_NameInterfaceMember_DatatypeInterfaceMember_ValueInterfaceMember_Comment Network title LADFBD CodeSCL CodeCommentDatatypeAddressValueAuthorFamily Instance DB###ReconstitutionDataIDAssociatedCultureFieldIdAssociatedProjectVersion!AssociatedIndexDataVersionFieldId,AssociatedTechnicalFieldNamesHashCodeFieldId-AssociatedTechnicalFieldContentVersionFieldIdIndexAtomStore \ No newline at end of file diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.frq b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.frq new file mode 100644 index 0000000..1a48e22 --- /dev/null +++ b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.frq @@ -0,0 +1,3 @@ + uW]cio{ uW]cio{ wU8 E  uW]cio{  sU[agmy  wsuYUW_[]eackgiqmo}y{79;=?ACEGIKMOQS!#%'5)+-/13G7O-)5wk%_1zJz{Q X5 +{zk {_ _1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 qY z{Y Y Y $wwY $q}Y Y ek wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwk%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%k%wwzJ +z!#%M)EIG+K79;=?ACOQS-/13 '5oiW]uc{'!)+-/1379;=?A#G'I%MECKOQS   \ No newline at end of file diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.prx b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.prx new file mode 100644 index 0000000..9f68118 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.prx differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tii b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tii new file mode 100644 index 0000000..51c66ef Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tii differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tis b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tis new file mode 100644 index 0000000..12d4e75 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tis differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvd b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvd new file mode 100644 index 0000000..2936b60 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvd differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvf b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvf new file mode 100644 index 0000000..61d8fc7 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvf differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvx b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvx new file mode 100644 index 0000000..52f02e8 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o.tvx differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o_1.del b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o_1.del new file mode 100644 index 0000000..2d2fdbb Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1o_1.del differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1p.cfs b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1p.cfs new file mode 100644 index 0000000..f79b8f4 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1p.cfs differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1p_1.del b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1p_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1p_1.del differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1q.cfs b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1q.cfs new file mode 100644 index 0000000..57210ec Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1q.cfs differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1q_1.del b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1q_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1q_1.del differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1r.cfs b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1r.cfs new file mode 100644 index 0000000..34b4e66 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1r.cfs differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1r_1.del b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1r_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1r_1.del differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1s.cfs b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1s.cfs new file mode 100644 index 0000000..104e371 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/_1s.cfs differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/segments.gen b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/segments.gen new file mode 100644 index 0000000..8ef2532 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/segments.gen differ diff --git a/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/segments_1w b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/segments_1w new file mode 100644 index 0000000..27f11b3 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/IM/SearchIndex/segments_1w differ diff --git a/Samples/Automation Projects/Automation/MachineJob/MachineJob.ap18 b/Samples/Automation Projects/Automation/MachineJob/MachineJob.ap18 new file mode 100644 index 0000000..325e274 --- /dev/null +++ b/Samples/Automation Projects/Automation/MachineJob/MachineJob.ap18 @@ -0,0 +1,5 @@ + + + AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/6CMgv+RfXNZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcaVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/oIyC/5F9c1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/LxP//+/v///r5///59///+Pb///b0//718v/+8/D//vHu//7w7P/+7un//uzn//7r5f/+6eL//ujg//7m3v/+5Nz//ePa//3h2P/94Nf//d/V//3e0/+gjIL/kX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA78vD///8/P//+/v///r5///5+P//+Pb///b0///18v/+8/D//vLu//7w7P/+7+r//u3n//7r5f/+6eP//ujh//7m3//+5d3//ePa//3i2f/94Nf//d/V/6CMgv+RfXNZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvycL///39///8/P///Pv///v6///5+P//+Pb///f1///18//+9PH//vLv//7x7P/+7+r//u3o//7s5v/+6uP//ujh//7m3//+5d3//ePb//3i2f/94df/oIyC/5F9c1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/Jwf///f3///39///9/P///Pv///v6///6+f//+Pf///f1///28//+9PH//vPv//7x7f/+7+v//u3o//7s5v/+6uT//uji//7n3//+5d3//eTb//3i2f+gjIL/kX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA78jA///9/f///f3///39///9/f///Pv///v6///6+f//+ff///f1///29P/+9PH//vPv//7x7f/+8Ov//u7p//7s5//+6uT//uni//7n4P/+5t7//eTc/6CMgv+RfXNZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADux7////39///9/f///f3///39///9/f///Pz///v7///6+f//+ff///j2///29P/+9fL//vPw//7x7v/+8Oz//u7p//7s5//+6+X//uni//7o4P/+5t7/oIyC/5F9c1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/Fvf///Pz///39///9/f///f3///39///9/f///Pz///v7///6+f//+fj///j2///29P//9fL//vPw//7y7v/+8Oz//u/q//7t5//+6+X//unj//7o4f+gjIL/kX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7sS8///7+////Pz///39///9/f///f3///39///9/f///Pz///z7///7+v//+fj///j2///39f//9fP//vTx//7y7//+8ez//u/q//7t6P/+7Ob//urj/6CMgv+RfXNZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvwrr///r5///7+v///Pz///39///9/f///f3///39///9/f///fz///z7///7+v//+vn///j3///39f//9vP//vTx//7z7//+8e3//u/r//7t6P/+7Ob/oIyC/5F9c1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO7Buf//+ff///r5///7+v///Pv///z8///9/f///f3///39///9/f///f3///z7///7+v//+vn///n3///39f//9vT//vTx//7z7//+8e3//vDr//7u6f+gjIL/kX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7sC3///39f//+Pf///r4///7+v//+/v///z8///9/f///f3///39///9/f///f3///z8///7+///+vn///n3///49v//9vT//vXy//7z8P/+8e7//vDs/6CMgv+RfXNZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvvrX///Xz///39f//+Pb///n4///6+f//+/v///z8///9/f///f3///39///9/f///f3///z8///7+///+vn///n4///49v//9vT///Xy//7z8P/+8u7/oIyC/5F9c1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO69s//+9PD///Xy///29P//+Pb///n3///6+f//+/r///z7///8/P///f3///39///9/f///f3///z8///8+///+/r///n4///49v//9/X///Xz//708f+gjIL/kX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7rux//7y7v/+8/D//vXy///29P//9/X///j3///6+P//+/r///v7///8/P///f3///39///9/f///f3///38///8+///+/r///r5///49///9/X///bz/6CMgv+RfXNZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuurD//vDr//7x7f/+8+///vTx///18///9/X///j2///5+P//+vn///v7///8/P///f3///39///9/f///f3///39///8+///+/r///r5///59///9/X/oIyC/5F9c1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO24rv/+7un//u/r//7x7f/+8u///vTx///18v//9vT///j2///59///+vn///v6///8+////fz///39///9/f///f3///39///8/P//+/v///r5///59/+gjIL/kX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7bes//7s5v/+7ej//u/q//7w7P/+8u7//vPw//718v//9vT///f1///59///+vn///v6///8+////Pz///39///9/f///f3///39///8/P//+/v///r5/6CMgv+RfXNZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADutav//urj//7r5v/+7ef//u7q//7w7P/+8e7//vPw//708f//9vP///f1///49///+fj///r6///7+////Pz///39///9/f///f3///39///8/P///Pv/oIyC/5F9c1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO6zqP/+6OH//unj//7r5f/+7Of//u7p//7w6//+8e3//vLv//708f//9fP///f0///49v//+fj///r5///7+v///Pz///39///9/f///f3///39///9/P+gjIL/kX1zWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7bKn//7m3v/+5+D//uni//7q5P/+7Ob//u3o//7v6v/+8ez//vLu//7z8P//9fL///b0///39v/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/6CMgv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADusaX//eTc//7m3v/+5+D//uji//7q5P/+7Ob//u3o//7v6v/+8Oz//vLu//7z8P/+9PL///bz////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO2wpP/94tr//eTb//7l3f/+59///ujh//7p4//+6+X//u3n//7u6f/+8Ov//vHt//7z7//+9PH//////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7a+i//3h1//94tn//ePb//7l3f/+5t7//ujg//7p4v/+6+T//uzn//7u6P/+7+v//vHt//7y7/////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtrqH//d/V//3g1//94tn//ePa//7k3P/+5t7//ufg//7p4v/+6uT//uzm//7t6P/+7+r//vDs////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO2soP/93tT//d/V//3g1//94dj//ePa//3k3P/+5d3//uff//7o4f/+6uP//uvl//7t5//+7un//////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7auf//3d0v/93tP//d/V//3g1v/94dj//eLZ//3k2//+5d3//ubf//7o4f/+6eP//uvl//7s5/////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtq53//dzR//3d0v/93tP//d7U//3f1v/94df//eLZ//3j2v/+5Nz//ube//7n4P/+6eL//urk////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO2qnf/tqp3/7aqe/+2sn//uraD/7a6h/+6vo//usKX/7bGn/+20qP/ttar/7bas/+63rv/tubD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAf8AAAP/AAAH/wAAD/8AAB//AAA//wAAf/8AAP//AAH///////KAAAABAAAAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWZF9c1mRfXNZkX1zWQAAAAAAAAAAAAAAANxpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/9xpWv/caVr/3Gla/5F9c1kAAAAAAAAAAAAAAADvy8T////9///59v/+8e///uzn//3m3v/939j//d3S//zbz//92M3//djM/6CMgv+RfXNZAAAAAAAAAAAAAAAA78e//////v///v3///f1///y7P/+6+P//ebd//3f1//+3dL//dvQ//3Zzf+gjIL/kX1zWQAAAAAAAAAAAAAAAO7Du///+/r////+///8+///9vP//+/s//7q5v/95d7//t7X//3d0v/92tD/oIyC/5F9c1kAAAAAAAAAAAAAAADuv7b///j2///9/P////7///v5//708P//7+z//+rl///k3//939f//N3S/6CMgv+RfXNZAAAAAAAAAAAAAAAA77qx///08f//+Pf///38///9/f//+ff///Tw//7t6f/+6OP//uXd//3f1/+gjIL/kX1zWQAAAAAAAAAAAAAAAO64rf/+8Oz//vXw///5+P///v3///39///49v//8u///u3p//3o4f//49z/oIyC/5F9c1kAAAAAAAAAAAAAAADvuK3//uzm//7w7P//9PH///r4///+/f///Pr///b0//7w7f/+6+b//+Xf/6CMgv+RfXNZAAAAAAAAAAAAAAAA7bWp///o4P//7OX//vDt///18v//+vj///39///7+P//9PD///Ds///q5P+gjIL/kX1zWQAAAAAAAAAAAAAAAO+0pv/95N3//ujg//7u5v/+7+z///Ty///6+f///fv///j3///y7//+7+r/oIyC/5F9c1kAAAAAAAAAAAAAAADusqX//eDX//7l2///6OD//+zn///w6v//9vL/3Gla/9xpWv/caVr/3Gla/9xpWv8AAAAAAAAAAAAAAAAAAAAA7bCi//7e1f/+4dj//uXb//7o4P/+6+f///Ds//////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAO2snv/93NP//d7V//7g2P//5N7//eji//7t5/////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtrJ///dzR//7c0v/93tX//uDY//3n3v//6uT///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7aqd/+2qnf/trKD/77Gj/+20pv/ut6n/7rqw//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAQDAwAEAwMABAQDAAagQwAEmAMABEBDAAQEAwAFoBMABzhDAAQDAwAHly8ADAADABwAAwA8AAMAfAADAPwAA + 18.0.1.0 + \ No newline at end of file diff --git a/Samples/Automation Projects/Automation/MachineJob/System/PEData.idx b/Samples/Automation Projects/Automation/MachineJob/System/PEData.idx new file mode 100644 index 0000000..d4d9a10 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/System/PEData.idx differ diff --git a/Samples/Automation Projects/Automation/MachineJob/System/PEData.plf b/Samples/Automation Projects/Automation/MachineJob/System/PEData.plf new file mode 100644 index 0000000..f292f46 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/System/PEData.plf differ diff --git a/Samples/Automation Projects/Automation/MachineJob/Vci/Vci.db b/Samples/Automation Projects/Automation/MachineJob/Vci/Vci.db new file mode 100644 index 0000000..afcd254 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/Vci/Vci.db differ diff --git a/Samples/Automation Projects/Automation/MachineJob/XRef/XRef.db b/Samples/Automation Projects/Automation/MachineJob/XRef/XRef.db new file mode 100644 index 0000000..b03c947 Binary files /dev/null and b/Samples/Automation Projects/Automation/MachineJob/XRef/XRef.db differ diff --git a/Samples/MachineJob/MachineJob.csproj b/Samples/MachineJob/MachineJob.csproj index 0b44f19..f7f0214 100644 --- a/Samples/MachineJob/MachineJob.csproj +++ b/Samples/MachineJob/MachineJob.csproj @@ -19,6 +19,7 @@ + diff --git a/Samples/MachineJob/Worker.cs b/Samples/MachineJob/Worker.cs index 67d01a1..88bd0d9 100644 --- a/Samples/MachineJob/Worker.cs +++ b/Samples/MachineJob/Worker.cs @@ -1,5 +1,6 @@ using Modbus.Net; using Modbus.Net.Modbus; +using Modbus.Net.Siemens; namespace MachineJob.Service { @@ -14,6 +15,7 @@ namespace MachineJob.Service protected override async Task ExecuteAsync(CancellationToken stoppingToken) { + List _addresses = new List { new AddressUnit() { Area = "4X", Address = 1, DataType = typeof(short), Id = "1", Name = "Test1" }, @@ -27,12 +29,27 @@ namespace MachineJob.Service new AddressUnit() { Area = "4X", Address = 9, DataType = typeof(short), Id = "9", Name = "Test9" }, new AddressUnit() { Area = "4X", Address = 10, DataType = typeof(short), Id = "10", Name = "Test10" } }; - - IMachine machine = new ModbusMachine("ModbusMachine1", ModbusType.Tcp, "192.168.0.172", _addresses, true, 1, 2, Endian.BigEndianLsb); - //IMachine machine2 = new ModbusMachine("ModbusMachine2", ModbusType.Tcp, "192.168.0.172", _addresses, true, 3, 2, Endian.BigEndianLsb); + + /* + List _addresses2 = new List + { + new AddressUnit() { Area = "DB1", Address = 0, DataType = typeof(short), Id = "1", Name = "Test1" }, + new AddressUnit() { Area = "DB1", Address = 2, DataType = typeof(short), Id = "2", Name = "Test2" }, + new AddressUnit() { Area = "DB1", Address = 4, DataType = typeof(short), Id = "3", Name = "Test3" }, + new AddressUnit() { Area = "DB1", Address = 6, DataType = typeof(short), Id = "4", Name = "Test4" }, + new AddressUnit() { Area = "DB1", Address = 8, DataType = typeof(short), Id = "5", Name = "Test5" }, + new AddressUnit() { Area = "DB1", Address = 10, DataType = typeof(short), Id = "6", Name = "Test6" }, + new AddressUnit() { Area = "DB1", Address = 12, DataType = typeof(short), Id = "7", Name = "Test7" }, + new AddressUnit() { Area = "DB1", Address = 14, DataType = typeof(short), Id = "8", Name = "Test8" }, + new AddressUnit() { Area = "DB1", Address = 16, DataType = typeof(short), Id = "9", Name = "Test9" }, + new AddressUnit() { Area = "DB1", Address = 18, DataType = typeof(short), Id = "10", Name = "Test10" } + }; + */ + IMachine machine = new ModbusMachine("ModbusMachine1", ModbusType.Tcp, "192.168.0.161", _addresses, true, 1, 2, Endian.BigEndianLsb); + //IMachine machine2 = new SiemensMachine("SiemensMachine1", SiemensType.Tcp, "192.168.0.161", SiemensMachineModel.S7_1200, _addresses2, true, 1, 2); await MachineJobSchedulerCreator.CreateScheduler("Trigger1", -1, 5).Result.From(machine.Id, machine, MachineDataType.Name).Result.Query(machine.Id + ".ConsoleQuery", QueryConsole).Result.To(machine.Id + ".To", machine).Result.Deal(machine.Id+".Deal", OnSuccess, OnFailure).Result.Run(); - //await MachineJobSchedulerCreator.CreateScheduler("Trigger2", -1, 5).Result.Apply(machine2.Id + ".Apply", null, MachineDataType.Name).Result.Query(machine2.Id + ".ConsoleQuery", QueryConsole2).Result.To(machine2.Id + ".To", machine2).Result.Deal(machine.Id + ".Deal", OnSuccess, OnFailure).Result.From(machine2.Id, machine2, MachineDataType.Name).Result.Query(machine2.Id + ".ConsoleQuery2", QueryConsole).Result.Run(); + //await MachineJobSchedulerCreator.CreateScheduler("Trigger2", -1, 5).Result.From(machine2.Id, machine2, MachineDataType.Name).Result.Query(machine2.Id + ".ConsoleQuery", QueryConsole).Result.To(machine2.Id + ".To", machine2).Result.Deal(machine2.Id + ".Deal", OnSuccess, OnFailure).Result.Run(); } public override async Task StopAsync(CancellationToken cancellationToken) @@ -59,7 +76,7 @@ namespace MachineJob.Service { Console.WriteLine(dataReturnDef.MachineId + " " + value.Key + " " + value.Value.DeviceValue); } - + try { using (var context = new DatabaseWriteContext()) @@ -85,7 +102,7 @@ namespace MachineJob.Service { //ignore } - + Random r = new Random(); foreach (var value in values) { @@ -94,45 +111,5 @@ namespace MachineJob.Service return values.MapGetValuesToSetValues(); } - - private Dictionary QueryConsole2(DataReturnDef dataReturnDef) - { - Random r = new Random(); - var datas = new Dictionary() - { - { - "Test1", r.Next(65536) - 32768 - }, - { - "Test2", r.Next(65536) - 32768 - }, - { - "Test3", r.Next(65536) - 32768 - }, - { - "Test4", r.Next(65536) - 32768 - }, - { - "Test5", r.Next(65536) - 32768 - }, - { - "Test6", r.Next(65536) - 32768 - }, - { - "Test7", r.Next(65536) - 32768 - }, - { - "Test8", r.Next(65536) - 32768 - }, - { - "Test9", r.Next(65536) - 32768 - }, - { - "Test10", r.Next(65536) - 32768 - } - }; - return datas; - } - } } \ No newline at end of file