[西门子] 西门子S7-1200 PLC 水箱水位控制程序(附程序)

[复制链接]
查看50 | 回复0 | 3 天前 | 显示全部楼层 |阅读模式
西门子编程案例


各位朋友,接下来要深入探讨 S7 - 1200 PLC 水箱水位控制这个超实用的案例啦!


在这个案例里,会涉及基本指令、模拟量转换指令,还有数据块以及 FB 和 FC 的运用等诸多知识要点。


这意味着大家得提前把这些知识吃透,如此才能毫无阻碍地理解案例程序。闲话不多说,开始学习。


案例的控制要求


01
1该控制项目为水箱水位控制系统


我们这个系统里一共有 3 个水箱,每个水箱都配置了一个液位传感器,它输出的是 0 到 10V 的电压信号,专门用来检测液位高度,这个高度范围在 0 到 3 米之间。要注意啦,液位降到 0.2 米的时候,就算是低液位了,而液位升高到 2.5 米时,那就是高液位状态。


02
2每个水箱有三个进水阀和三个出水阀


阀门与控制按钮的设置情况,进水阀方面,分别标记为 Y1、Y3、Y5 ;出水阀对应的是 Y2、Y4、Y6 。特别要说明的是,每个水箱都配备了独立控制出水阀的开、关按钮,其中出水阀开按钮依次为 SB1、SB3、SB5 ,而出水阀关按钮则分别是 SB2、SB4、SB6 ,这样就能精准操控每个水箱的进出水状态啦。

03
3通过对各个水箱进行防水操作


操作很简单,我们只要按下 SB1、SB3、SB5 这几个按钮,就能随机对各个水箱进行放水操作。与此同时,系统可是相当智能的,一旦检测到水箱发出 “空” 的信号,便会自动开启对应的水箱进水阀开始注水;而当捕捉到水箱 “满” 的信号时,又会立即停止进水。特别要强调的是,水箱注水与放空的顺序是保持一致的,并且在同一时间,系统只会针对一个水箱进行注水操作,确保整个过程有条不紊地进行。

04
4如下图所示




05
5首先进行IO分配:




IO 分配完成后,咱们就依据分配好的点来接线就行。这里有个关键细节要留意,液位传感器得接到模拟量输入模块上。咱们系统一共有三个液位传感器,这种情况下,选择 SM1231 AI04 模块正合适,把三个液位传感器分别接到它的通道 1、通道 2、通道 3 就大功告成啦!


案例源程序获取,请看文末


PLC控制程序设计


01
首先进行硬件组态、配置模拟量模块的参数


在本次项目里,我们选定的是 CPU1214C DC/DC/DC 型号的 PLC,它能为整个系统高效运行提供有力支持。与此同时,由于咱们要对三个水箱的水位进行精准采集,这就得用到模拟量输入模块啦,经过综合考量,我们选用的是 SM1231 AI04 模块。关于设备组态配置情况,都清晰地展示在下图中




因为使用到了模拟量模块,还需要设置相应的模拟量输入信号的参数。


根据液位继电器的输出信号类型进行配置,我们配置测量类型为电压,电压范围是正负10V,滤波为4个周期,启用溢出诊断和下溢诊断。通道0对应的地址是IW96,通道1对应的地址是IW98,通道2对应的地址是IW100。




02
编写模拟量处理程序


模拟量转换程序,是用来把采集到的模拟量信号转换成实际的液位,并将它与低液位和高液位做比较,从而输出是否达到低液位信号和高液位信号。


因为三个水箱 计算过程是相同的,所以我们可以编写一个带形式参数的FC块,方便重复调用。具体操作是添加一个FC块,并且命名为“模拟量处理”,设置好变量并编写FC程序。






03
建立一个PLC数据类型、添加一个全局DB块


在PLC数据类型页面中添加一个PLC的数据类型,并把它命名为“Analog”,在里面建立之后需要用到的变量,包括当前水位、低水位和高水位,并且设置好这三个变量的数据类型。




此外,再新建一个全局DB块,把它命名为“水箱控制数据”,我们可以在里面建立一个名称为“模拟量”的变量名称,数据类型设置成数组Array[0..2]of “Analog”,然后把每个元素的数据类型选择成建立的PLC的数据类型。




04
编写水箱放水和进水控制程序


因为有三个水箱,它们的注水和放水的过程是一样的,我们就可以把水箱的注水和放水过程的程序编写成一个带形式参数的FB块,方便重复调用。


具体操作是添加一个FB块,并命名为“水箱控制”,在FB的接口区建立相应的形式参数变量,然后再编写FB中的控制程序。






以上是打开放水阀程序,当按下放水阀开按钮时,放水电磁阀打开,按下放水阀关按钮或者水位达到低水位时,关闭放水阀。




以上标记水箱空标志程序,因为水箱出现空信号后可以进行注水操作,但是一次只能对一个水箱进行注水,所以当标记水箱为空标志信号为1时,才可以进行注水操作。


当水箱水位到达低水位,则说明水箱是空的,这时如果另外两个水箱的空标记信号没有,那么这个水箱的空标记信号输出为1,如果另外两个水箱已经有水箱出现空标记信号的话,那么这个水箱的空标记信号不能输出为1。


而且当这个水箱开始注水时,水箱的空标记信号需要复位。




以上是开进水阀程序,当水箱空标记为1时,就可以打开进水电磁阀,同理因为一次只能对一个水箱进行注水操作,所以如果检测到另外两个水箱有注水操作时,那么这个水箱也不能进行注水操作。当达到高水位时停止关闭进水电磁阀,停止注水操作。


05
调用模拟量处理FC块和水箱控制FB块程序


添加一个FB块,并命名为“水箱水位控制程序”,我们在这个FB块中调用模拟量处理FC块,模拟量处理FC块的作用是对每隔水箱的液位传感器的数据进行处理。


此外还要调用水箱控制FB块程序,需要注意调用FB块在分配背景数据块时,要选择多重实例背景,调用之后编写每隔水箱的放水和进水的程序。












以上程序对应的变量表,包括名称、地址、数据类型如下图所示。




06
主程序OB1中调用水箱水位控制程序的FB块






就这样,咱们顺利完成了这个控制案例的程序设计。不过要清楚,这还不算一个完整的实际项目哦。要是真应用到现实场景里,大概率还会冒出不少其他需要斟酌的事儿呢,这些就留待大家去开动脑筋、深入思考啦,相信大家都没问题! 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则