加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15915421161

SIEMENS西门子广西省崇左市(授权)电机一级代理商——西门子华南总代理

更新时间
2024-05-21 07:00:00
价格
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
联系手机
15915421161
联系人
张经理
立即询价

详细介绍

通常一个上位机项目中可能不止一台PLC,也可能除了PLC外,还连接有其它设备,比如带通信的仪表等。那么我们的代码就需要支持不同的通信协议,并且还需要支持这些具有相同或者不同协议的设备同时进行数据访问。


根据此设计规则,在重构的C#上位机实例中,为了使我们的项目可以方便的引入其它协议,我们抽象了一个通信类CommDrive。然后我们的S7和Modbus TCP都是派生自这个抽象类。


S7驱动


Modbus TCP驱动

只需要我们按照约定对协议进行封装,我们在项目中就可以无缝地访问不同协议的不同设备。在UI或者业务逻辑的编码中我们只需要绑定变量名称即可。不需要关心它采用的是哪种协议。设备数据由单独的异步任务负责,大家各司其职。

在下面的代码中,它根据变量“Pos_2“的上升沿归档产量信息。同时被归档的信息中,除了订单信息、公司信息等,还有来自变量资源池的重量数据。














  • if (pn[0].P(Convert.ToBoolean(PLC.TagsPLC1["Pos_2"].Value1.ToString()))){    ProductModel pm = new ProductModel();    pm.DT = DateTime.Now;    pm.Order = ConfigurationManager.AppSettings["N1_Order"];    pm.Company = ConfigurationManager.AppSettings["N1_Company"];    pm.CarName = ConfigurationManager.AppSettings["N1_CarNumber"];    pm.Production = ConfigurationManager.AppSettings["N1_Production"];    pm.Silo = ConfigurationManager.AppSettings["N1_Silo"];    pm.Station = ConfigurationManager.AppSettings["N1_Station"];    pm.Weight = Math.Round(Convert.ToDouble(PLC.TagsPLC1["LastWeight"].Value1.ToString()),1);    DAL.DBOperation.AddOperation(pm);}

    综上,这种实现UI/业务逻辑与驱动解耦的架构主要有下面几点优势。具备这几点优势,我们的上位机代码才是真正的工程级代码。

    1. 代码的高复用率;

    2. 支持快速连接多种设备;

    3. 方便接入各种其它驱动;

    4. 便于维护与扩展;

    5. 快速排查问题;


    相关产品

    联系方式

    • 电  话:15903418770
    • 联系人:张经理
    • 手  机:15915421161
    • 微  信:15915421161