科创梦想,节效未来
INEWS / 新闻中心

用C语言开发的配方数据系统

来源: | 作者:何先生 | 发布时间: 694天前 | 397 次浏览 | 分享到:

      目前自动化工程师学习C语言越来越多,其目的无非有二,一是拓展视野,通过软件工程的思想来提升PLC编程技能。二是寻找机会转型,就算不转型,现在需要既懂自动化又懂C语言的这种工程师也比较难找。机会只垂青于有准备的人,多一项技能肯定不是坏事。但是实际上真正能入门,甚至能够独立承当项目的人不多。因为目前有机会接触自动化和信息化融合的项目的工程师不多,而既懂自动化又懂信息化的工程师更是少之又少。

      PLC通信这块用的Sharp7这是网络上的一款开源S7协议库。不必担心它稳定性,根据我们之前在其它项目中的使用经验来看,工业通讯的质量是值得信赖的。Sharp7虽然质量不错,但是通常在项目中不会直接使用它因为效率太低。为了提高开发效率,都会对Sharp7进行封装。比方在HwLib.Commuc中的S7通信就是对Sharp7二次封装,实现了C语言项目中基于变量的访问。不过这个项目有点特殊,一是因为变量太多,如果按变量配置那么效率太低,所以该项目是基于Model的DB批量访问。二是该项目是冗余PLC,所以又额外增加了主备PLC自动切换功能。

      为了项目便于安排,这里我使用的SQLite而没有使用MySQL或者SQLSERVER这样的网络数据库。不必担心SQLite性能,对于这个数量级的数据,SQLite性能足够了数据表的规划上我对配方、生产批次、实时数据进行分库分表管理,进一步规避了SQLite性能问题。

      SERVER主要负责和PLC数据交互,配方上传和下载,对批次实绩的归档,数据库的管理以及为Client提供Http接口服务。如果你正有同样的问题,苦于不知道真正的C语言项目是如何开发的那么可以参考应用在生产环境中的实际项目为例来一步步介绍如何开发上位机软件。不是一个DEMO切切实实运行在生产环境中的实际项目。学习中,建议大家跟着教程一步步重新做一遍,因为这样会加深对整个项目的理解,也利于以后在其它项目中熟练使用各个知识点,终究每个项目是不同的生搬硬套未必行得通。另外在做的时候尽量手敲,而不是从项目中直接拷贝源码,这样对提升编码能力也有好处。