前言
.NET很早可以跨平台了,从早期的Mono到.Net Core,再到现在的.NET 5,以及下个月即将发布的.NET 6,.NET也是在一直稳步发展。
跟大家分享一下,基于Linux系统实现西门子PLC的数据采集。
准备
VS版本升级到新,至少在v16.8以上。
基于.Net 5或.Net Core的通信库。
Linux环境,这里用的是CentOS的虚拟机,这个虚拟机我也分享给大家,公众号里回复关键词:CentOS7虚拟机。
开发
1、使用VS2019创建一个.NET 5框架的项目。
2、引入通信库,确保通信库是基于.Net 5开发的。
3、编写几行简单的代码。
class Program { static void Main(string[] args) { Console.WriteLine("Let's Begin!"); if (siemens.Connect("", xktComm.Common.CPU_Type.S71200, 0, 0)) { Console.WriteLine("Connect Success"); while (true) { var val = siemens.Read("DB1.DBD0", xktComm.Common.VarType.Real); Console.WriteLine(val.ToString()); Thread.Sleep(1000); } } else { Console.WriteLine("Connect Fail"); } Console.ReadLine(); } private static xktComm.PLC.Siemens.SiemensS7 siemens = new xktComm.PLC.Siemens.SiemensS7(); }
4、本地运行测试,确保执行结果无误。
部署
CentOS系统默认是没有.NET 5环境的,所以需要提前安装一下.NET 5环境。
安装 .NET 5 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装 SDK:NET SDK 使你可以通过 .NET 开发应用。如果安装 .NET SDK,则无需安装相应的运行时。若要安装 .NET SDK,请运行以下命令:
sudo yum install dotnet-sdk-5.0
安装运行时:在终端中,运行以下命令:
sudo yum install dotnet-runtime-5.0
检查安装结果:在终端中,运行以下命令:
dotnet --info
发布
1、回到VS2019中,解决方案,右击,选择发布。
2、发布页面选择选项——文件夹。
3、下一步中继续选择——文件夹。
4、文件夹位置使用默认,点击完成。
5、完成后点击可移植,在弹出的界面中,根据情况设置。
6、后点击一下发布按钮即可。
7、查看发布结果,根据发布路径查看是否发布完成。
运行
1、将发布的文件夹拷贝到Linux系统中即可,由于是虚拟机,如果安装了VMware Tools,是可以直接复制的,如果是其他的系统,可能需要通过远程工具或者Xshell来实现。
2、进入Publish文件夹,右击打开命令行Open in Terminal,输入dotnet Net5CrossPlateDemo.dll,执行。
3、执行结果如下,大功告成。