不得不说,产业圈是个怪圈,项目需求五花八门。有些人希望低价和功能得以实现,而有些人并不关心价格,因此需要一个好的界面。最近,有小伙伴提出了这样一个需求,用最简单的方式、最低的成本、最少的代码,实现本地PLC数据上云。我想了一下,要想实现这个需求,就必须站在巨人的肩膀上,用现成的轮子,把它们组装起来,变成我们自己的东西。然后这次我们用+Log4Net+SQLSugar+MySQL实现了西门子PLC数据上云的一个案例。
关于以上四个组件,有一个共同点,那就是开源免费,所以我们不必关心价格和许可问题。我们先对这四个组件做一个简单的介绍:
西门子PLC的组件名称、功能描述、开源通信库Log4Net a。NET免费日志工具SQLSugg,一个非常轻量级和特别强大的ORMMySQL,一个开放源代码的关系数据库
本实施过程分为两个部分。首先,在阿里云服务器上部署了一个MySQL数据库。一边采集西门子PLC,然后将Log4Net直接插入阿里云服务器。另一方面,使用SQLSugar对数据库进行查询和分析,然后进行显示。
1)首先准备好要在PLC中传输的数据,最好事先把所有数据放在同一个存储区,而且是连续的N字节,这里以一个结构为例,它包含25个浮点数,占100字节,如下图所示:
2)然后创建一个名为IotDB的DB块,DB号DB1,并添加一个Iot结构变量,如下图所示:
3)创建一个控制台应用程序,用于与PLC通信,并将数据传输到阿里云服务器中的MySQL数据,为方便起见,直接将读取的字节数组进行转换
用于传输的十六进制字符串。
对于这个项目案例,如果您需要同步视频及其源代码,可以点击下面快速获取。
点击进入并获取项目案例的同步视频和源代码
4)首先在Nuget服务器上搜索S7netplus,并将其添加到项目中,如下图所示:
5)然后搜索Log 4 Net,将其添加到项目中,如下图所示:
6)最后搜索mysql,并将其添加到项目中,如下图所示:
7)加法完成后,初始化PLC对象,然后连接PLC,连接成功后启动定时器,程序如下:
8)定时器定时读取PLC数据,然后通过Log4Net直接存储到数据中,如下图所示:
9)运行程序后,结果如下:
10)使用SQLyog查看服务器数据库数据,如下所示:
11)这样我们就可以方便地读取PLC数据并存储在云数据库中,初步实现数据上云,接下来可以创建上位机程序,实现数据的查询、分析和显示。
1)创建一个名为Windows窗体的应用程序,该项目用于查询云服务器的MySQL数据库中的数据,并将数据解析为所需的值,然后显示出来。
2)因为有各种参数类型,所以为参数创建一个参数实体类,如下所示:
3)UI界面设计如下图所示:
4)这里采用多线程从数据库中连续查询数据,如果查询到数据,则进行分析赋值,否则显示状态,代码如下:
5)最终跑分结果如下: