PLC程序设计之——控制模型篇 点击:1923 | 回复:11



AncientSword

    
  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-11-22 22:00:45
楼主

   首先声明一下,这里讲的观点只是个人的一些见解,并不是来自什么权威或标准,只是交流和学习。

 在高级语言里有面向对象的编程思想,虽然PLC程序的开发环境与高级语言不同,但是编程的思想是可以借鉴的。这里要讲的内容就是与面向对象的编程思想有关,在PLC进行编程的时候,讲被控制的设备称为控制对象,每个控制对象有自己的方法和属性。高级语言里将差别较大的对象分成类,我们做plc程序的也可以将自己的控制对象分成类。比如电机、阀门、仪表等。

    如果要实现面向对象的控制,首相要做的就是建立控制模型,在西门子的控制系统中叫功能块(FC或FB),在AB的系统中叫自定义指令(AOI),其实就是一段重复使用的程序段。

    哪些设备可以做控制模型呢,把我一个原则:做对象控制模型是为了减少重复代码的编写,使程序的结构清晰易读。比如对仪表的模拟量处理程序、对仪表的通讯程序、电机驱动类设备(如风机、水泵、通用机械设备等)、阀门(气动阀门、电动阀门、液压阀门等),也可以将多个设备做成一个控制对象,比如罗茨风机和出口阀门,由于风机和阀门是联动的,可以将其看作一个整体,阀门和罗茨风机的内部连锁在控制对象内部实现,外部程序只将其作为一个整体起动或停止。

    面向对象的控制一定要有控制单元的概念,将程序分割成不同的小单元,每个小单元完成一个完整的工作,比如自来水厂的超滤膜净化车间的控制系统,超滤膜过滤需要定期反冲洗,与其配套的设备有水冲设备、气冲设备、抽真空设备、压缩空气设备、加药设备、循环设备、中和池、排水池等,我们在做程序规划的时候将其分成功能不同的单元水冲系统(包括反冲洗水箱、补水增压泵及阀门、反冲洗调节阀)、气冲系统(罗茨风机及气动阀门)、抽真空设备(抽真空装置及抽真空控制阀门)、压缩空气(空气压缩机、干燥剂及压力仪表)、加药设备(NaOH加药阀及加药泵、HCl加药阀及加药泵、Na2SO3加药阀及加药泵、NaClO加药阀及加药泵、流量计等)、循环泵(循环泵及阀门、抽真空阀门)、中和池(排水泵及阀门、循环阀、液位计、pH仪表)、排水池(排水泵及阀门,液位计),先将各个单元的程序做出来,然后用主程序将其串联起来,就组成了打的程序。当然单元里还可以再细化,比如将水泵和出口阀门作为一个控制单元。

    感觉说的有点离题了,本来是要将控制模型的,结果讲到了程序结构上去。

1分不嫌少!


楼主最近还看过



AncientSword

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-11-23 20:39:37
1楼

在工业领域设备的种类很多,比如常用的风机、水泵、皮带机输送机、螺旋输送机、破碎机等等,我们做控制模型的时候尽量用一个模型控制多个设备,但是事物都有两面性,我们也不能为了让我们的控制模型能够适用于所有的设备而将控制模型做的太过复杂。把握的原则就是模型尽量的简单,同时能够适用的控制设备尽量的多,这两者是相互矛盾的,我们采用这种的办法,就像刚的硬度太高就容易断,韧性太高硬度就会下降一样。
今天带我们做一个电机驱动类设备的控制模型:命名为:Common_Motor.

下图为电机控制原理图:

 

根据电气原理图,与PLC相连的控制点有
1、备妥信号。(断路器合闸信号和远程信号串联)
2、运行状态信号输入信号。(取自主回路接触器常开触点)
3、故障信号输入信号。(热继电器过载信号与断路器故障信号并联)
4、运行驱动输出信号。(PLC输出信号到电气柜,驱动电机运行)
以上是一台电机控制最基本的信号输入和输出。

除了以上信号,还要考虑:

1、PLC内部手动和自动切换。

2、通过上位机或触摸屏手动起动和停止。

3、根据程序自动起动。

4、起动超时。(有可能主回路没有得电,必须做一个起动超时的报警输出)

5、外部停机条件(比如急停按钮、皮带的拉升开关等)

好了目前为止基本可以确定控制模型的输入和输出:

输入:

1、备妥

2、运行

3、故障

4、手动/自动

5、触摸屏或上位机起动

6、触摸屏或上位机停止

7、自动程序的起动和停止

8、起动超时定时器

9、其它停机信号

输出:

1、起动信号输出

2、起动超时

 根据以上条件开始建立自己的控制模型。

 

AncientSword

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-11-23 22:51:57
2楼


下面的程序是利用AB的logix5000软件做的,首先建立一个自定义数据类型或者叫结构变量,包括之前说的所有输入输出变量,如下图所示:

然后定义AOI(用户自定义指令)程序,

调用程序:

在符号表中监控程序:

有时候发帖一不小心就被系统删除了,白忙活一场,还是分页来吧。太晚了,明天在讲讲这个程序。


gongkongXman

  • 精华:0帖
  • 求助:0帖
  • 帖子:179帖 | 475回
  • 年度积分:234
  • 历史总积分:6601
  • 注册:2002年7月30日
发表于:2017-11-23 23:32:44
3楼

老师这么晚开课,小的们都睡着了……

fengzhengfly

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 12回
  • 年度积分:10
  • 历史总积分:135
  • 注册:2017年9月23日
发表于:2017-11-24 15:01:57
4楼

老师,平原智能的

AncientSword

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-11-24 23:06:15
5楼

接着说昨天的程序,首先建立一个自定义的数据类型,命名为Motor_Par,为什么要建立这个自定义的数据类型呢,建立这个自定义数据类型的原因:

1、快速创建变量,对一个控制模型进行编程和操作,需要建立不少的变量,比如我们现在做的这个电机控制模型,需要十几个变量,那么我们建立了自定义变量之后只需要建立一个自定义数据类型的变量就行了,建完这个数据类型之后,就可以新建Motor_Par的数据类型变量,如下图所示,我们建立了一个名字为M101,类型为Motor_Par的变量,我们只需要建立这一个变量,而实际上我们建立了控制电机的所有变量。

从变量表里我们看到刚才建立的变量,是不是效率提高了很多倍。

2、方便触摸屏或上位机组态,如果一个电机的控制需要连接多个变量,那么多个电机就需要连接更多的变量,这个重复工作如果通过自定义变量有能够提高好多倍的效率,如下图二十台风机的控制,如果一个风机的控制要连接八个变量,那么二十个风机就要了连接160个变量,况且一个项目不止这么多设备,还要防止变量连接错误,那么用结构变量要做多少次的连接呢?二十次,每个电机一个变量就够了,在触摸屏组态软件中将电机的控制做成全局快,如果用AB的触摸屏,可以看看这篇文章讲如何使用全局对象的http://bbs.gongkong.com/d/201707/722918_1.shtml

下面是对全局块进行变量连接,这个例子里用到了二次确认窗口,所以用到了触摸屏的内部字符串变量,#102,如果不用二次确认弹出窗口,只给#101参数赋值就行了,比如我们在PLC内部建立的变量为M101,那么只需要将M101赋给#101就行了。这工作这工作是不是简单多了,一个新手也能快速完成上位机这些重复性的工作。


AncientSword

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-11-24 23:17:17
6楼

可能用AB产品的人不多,回头有空用STEP7将这个例子再做一遍,其实讲的主要是思路,而非程序本身。就像AB的Factory View软件的全局对象,西门子的Wincc 中可以使用窗口对象,通过替换变量前缀的方法实现,都是利用了结构变量提高组态的效率。

worldlyc

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 132回
  • 年度积分:0
  • 历史总积分:155
  • 注册:2007年3月28日
发表于:2017-11-25 09:13:25
7楼

学习了,谢谢!

AncientSword

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2018-02-11 20:24:57
8楼

花了不少时间在这帖子上,可是没有几个人看,自己顶一顶。

文片

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 101回
  • 年度积分:11
  • 历史总积分:213
  • 注册:2006年12月09日
发表于:2018-03-11 23:33:05
9楼

谢谢楼主,今天按照你程序用台达走一遍,很好思路,适用同类量多设备调用。

gk2017

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2018年1月30日
发表于:2018-03-11 23:41:42
10楼

谢谢楼主,都是干货啊

gk2017

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2018年1月30日
发表于:2018-03-11 23:41:48
11楼

谢谢楼主,都是干货啊


热门招聘
相关主题

官方公众号

智造工程师