编程语言应用

首页 » 常识 » 预防 » 微S7PLC子程序案例详解
TUhjnbcbe - 2020/12/27 2:55:00

大家好,我是微控小智,今天又跟大家见面了。学习需要坚持,做技术亦是如此,厚积才能博发。小智写的程序都是进行反复测试过的,可以放心跟着操作,有疑问的地方可以留言。

今天小智来讲解S7-PLC的程序结构子程序,子程序可以说是西门子PLC的很经典很实用的结构,想用好子程序也不是那么容易,那么跟小智一起来学学子程序。

子程序的作用:在PLC编程时,常常将多次反复执行的相同任务编写成一个子程序,别的程序在需要的时候可以调用它,而无需重写该程序,使用子程序,可以更好的组织程序结构,便于调试和阅读。子程序的调用是有条件的,未调用它时,不会执行子程序中的指令,因此可以减少扫描时间。

为了方便理解编写子程序的的过程,下面以电机起保停为例来讲解。

子程序的形式有两种:一种是不带接口的子程序,是编程的主要形式,如下图所示

另一种是带接口的子程序,使用局部变量,可以移植到别的项目中去。

在局部变量表中定义的变量称为局部变量,只在创建它的子程序中有效,为了增强通用性和方便移植到别的项目,子程序中一般只用局部变量。

定义的变量类型可以分为两种,一种是形式变量,也就是形式参数,用来在子程序和调用它的程序之间传递数据,另一种是临时变量,只用来在子程序执行时暂存数据。形式参数IN,是输入到子程序的参数,在子程序中只能读取输入值,形式参数OUT是从子程序返回的参数,在子程序中只能写入返回值,IN_OUT类型是输入并从子程序返回的参数,在子程序中既可以读,也可以写,输入值返回值使用同一个地址。形式参数在调用子程序时,被实际的数据代替。局部变量的数据存储在L区,也就是局部存储区,各参数的地址在定义由系统自动的分配。局部变量的数据只有在执行该子程序时才有效,该子程序执行完后,局部存储区被释放,其他子程序执行时,可以重复使用同一片局部存储区。在程序中,用符号名访问变量时,全局符号的变量名直接显示,而局部变量的符号名会带有#号,以示区分。

接下我们把起保停程序编写出带接口的子程序,如下图所示:

接下来看看临时变量作用,临时变量只用来在子程序执行时暂存数据。我们来编写一个简单数学方程例如:Y=2X+8编写成带接口的子程序。分析可知,我们只需要在外部生成X和Y变量的接口,在子程序的程序中是先用要计算2X的乘积,再和8相加,而这个乘积不需要在外部体现出来,那么这个2X的乘积就是一个临时变量,编写程序如下图所示:

为了加深理带接口子程序的作用和用法,接下来我们来做一个模拟量转换工程量的案例

案例要求:

模拟量转换工程量公式如下

Ov=(Osh-Osl)*(Iv-Isl)/(Ish-Isl)+Osl

Ov:换算结果,模拟量转换后的工程量

Iv:换算对象,对应模拟量通道的输入的模拟量,对应数字量

Osh:工程量的上限

Osl:工程量的下限

Ish:数字量的上限

Isl:数字量的下限

利用模拟量转换工程量公式编写带接口的子程序

案例分析:Ov:输出变量,Iv:输入变量,Osh:输入变量,Osl:输入变量,Ish:输入变量,Isl:输入变量。程序如下图所示:

实践出真知,没有实践,理论就是纸上谈兵;学习中需要多加验证。如果大家觉得小智的文章写得不错,很适合大家的口味,可以分享更多的朋友。

宝剑锋从磨砺出,梅花香自苦寒来

苦尽甘来才痛快,风霜历尽笑颜开

1
查看完整版本: 微S7PLC子程序案例详解