面向对象的编程思路在工控编程(梯形图)方面的应用探讨
谢邀。不懂工控,结合你的思路勉强一答。面向对象的思路,就是讲究抽象和封装。还是拿你的例子来说明:class 气缸 attr: 状态(到位,报警), 感应器组合(原始位置感应器实例、动作感应器实例等) action: 电磁阀动作、到位延时,报警延时 (这些动作可以在你需要用到的模块去调用)#感应器抽象为一个父类 或 接口class 感应器 attr: 位置 action: 不同的感应器有不同的动作,这里是一个公共的抽象# 原始位置感应器 的具体实现,class 原始位置感应器 extend 感应器 attr: 位置 action: 原始位置感应器的行为# 动作位置感应器 的具体实现,class 动作位置感应器 extend 感应器 attr: 位置 action: 动作位置感应器的行为可以在其他模块像这样去调用:A气缸 = 气缸.new(原始位置感应器、动作感应器)A气缸.原始位置感应器.行为A气缸.动作感应器.行为A气缸.电磁阀动作A气缸.到位延时A气缸.报警延时大概思路是这样,抛砖引玉。
■网友
碰巧看到了你的问题,我前几年一直在想这个问题,分享给你,希望对你有所帮助
先介绍下,我大学毕业开始从事工控行业,至今已经近七年,出差出到怀疑人生有木有,工作之余比较喜欢高级语言编程,先后自学过C#,VB,JAVA等,读过很多面向对象思想书籍,曾经跟你一样也在想这个问题。三四年前的一个项目,我有幸接触到了一个意大利项目,程序架构是德国西门子工程师写的。看到程序时,我幡然醒悟。后来发现好多老外的程序都这么写,自己又改进了一下,进行了一下增删。
在我看来,面向对象思想简单来说是将你的被控器件抽象为对象,而本对象可以包含自己的属性、方法等等自身属性。需要创建一个模子,然后你的各个相同的控制对象就可以实例化。
举个栗子
【面向对象的编程思路在工控编程(梯形图)方面的应用探讨】 在STEP 7中可以将UDT类比为想象对相中的类,用它来构建实例
比如上图为蝶阀的一部分UDT 包含状态字,指令字,后面还有附加字和参数,它详细的记录了当前阀门的状态,比如状态字中记录了当前的指令情况、开关到位、报警、错误、未关到位报警、未开到位报警。。。。。。 还有当前模式手动、自动、仿真、维护,这样整个阀门的情况,相当于属性也就全了,状态字可以直接配合WINCC的用户类型,非常快的构建上位机变量。这只是一个阀门,并不牵扯设备,这便是一个“模子”,实例是在DB块中
这个DB是设备块,也就是我这个系统中所有的设备情况,运行时所有的设备情况都可以在这里看到。当然还有对应的电机块,然后又可以分变频的不变频的,阀门带反馈的不带反馈的 等等等等。
然后需要构建个一个阀门块来处理这些数据,
上面L 5是设置的阀门报警时间 也就是给的参数字
这个块会处理各种模式转换(图片这个是个精简的 没有自动、手动、仿真等模式切换,全的块是有各个模式切换的),阀门的报警,开关到位等等
这个便会涉及到整个系统的无扰动切换模式问题,展开说又要说好久,有机会再讨论。
这样做的好处如下
1.设备高度集中,设备之间的耦合度很小,报警等设备自身问题这在设备层做,工艺层只负责收发指令。增删设备都非常简单,只需要实例化和加入FC块,然后在需要的工艺位置给出指令,增加条件。
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 有点计算机基础的人想尽快找份编程的工作。哪种编程的工作最好找还需要学些啥
- 作为软件工程大二的学生,学习一般,编程一般,毕业后能干些啥
- 30岁的人生,想自学一门编程并从事,这个选择怎样呢
- 电子编程书可以边看边练习,价值大吗
- 自学编程知识是自己啃书加实践好还是看视频加实践好好
- 马云说的大数据时代到底是,用到啥技术,如果想要学习大数据技术,要学习哪些基础的东西要先会编程么
- 不懂技术的加班狗,怎样去学习一门技术,例如编程,如果发现培养不了这种兴趣何时该放弃,何时该继续坚持
- 外省到广州工作,本二,有一年时间了,工资提不上去,晚上想了很多,现在想辞职去学编程,有啥建议吗
- 结婚对象的抉择
