c#与 S7.net 通讯实际工程应用
接下来在 visual studio 中建立与 PLC 连接
1、首先在引用中右键👉选择管理 NuGet 程序包,安装如图程序包。
在浏览中搜索,然后安装,我这里已经安装好了。
2、接下来建立连接,代码如下
工程中需要用 try {} catch{}将代码段包起来,以免程序宕机,这里 catch 中异常信息也可以
用 throw 抛出求,写在方法里,不在最外层的 try {} catch{}中都可以抛出去。
3、建立需要通讯的信号,这些信号通常要持续访问,所以单独建立一个类,用来保管信号。
4、信号读取 用 while(true)对信号进行循环读取,这里需要单开一个线程,不能放在主
线程中,不然卡线程。
这里要起一个名字,在调试的时候可以看到你线程是不是挂了,调试中查看线程方法如图
所示。
同时可以监视你需要知道的变量
C#多线程开发-线程间通讯
Demo 案例
假设我去书店买书,选中书后需要先去缴费处付钱,付完钱后去仓库取书,走
就行。
在此业务中我属于主线程,收费处和仓库为子线程。
主线程
1. const int num = 400;
2. //
默认为非终止状态,必须得等待信号量。
3. static AutoResetEvent threadPayMoneyOne = new AutoResetEvent(false);
4. static AutoResetEvent threadGetBookTwo = new AutoResetEvent(false);
5.
6. static int number;
7. static void Main(string[] args)
8. {
9. Thread PaymoneyThread = new Thread(new ThreadStart(PayMoneyOne));
10. PaymoneyThread.Name = "缴费线程";
11. PaymoneyThread.Start();
12.
13. Thread GetBookThread = new Thread(new ThreadStart(GetBookTwo));
14. GetBookThread.Name = "仓库线程";
15. GetBookThread.Start();
16.
17. for (int i = 0; i < num; i++)
18. {
19. Console.WriteLine("买书主线程:数量 "+i);
20. number = i;
21.
22. //
主线程通知两个子线程
23. threadPayMoneyOne.Set();
24. threadGetBookTwo.Set();
25. Thread.Sleep(0);
26. }
27.
28. PaymoneyThread.Abort();
29. GetBookThread.Abort();
30.