S7-1200的用户程序结构
一、程序组成
二、功能FC
1.功能的特点
功能(Function,FC)和功能块(Function Block,FB)是用户编写的子程序,它们包含完成特定任务的程序。FB与FC有与调用它的块共享的输入/输出参数,执行完FB和FC后,将执行结果返回给调用它的代码块。
功能没有固定的存储区,功能执行结束后,其局部变量中德临时数据就丢失了。可以使用全局变量来存储那些在功能执行结束后需要保存的数据。
设压力变送器的压力下限为0Mpa,上限为High Mpa,经A/D转换后得到0-27648的整数。下式是转换后的数字N和压力P之间的计算公式:P=(High*N)/27648Mpa
用功能实现上述运算,并在OB1中调用。
2.功能创建
plc的组成打开博图软件的项目视图,双击项目树中德“添加新块”,打开对话框,点击其中的功能(FC),设置功能的名称,点击“确定”按钮,自动生成FC。
功能的局部数据
将鼠标的光标放在FC的程序区最上面的分隔条上,按住鼠标的左键,往下拉动分隔条,分隔条上面是功
能的接口区,下面是程序区。将水平分隔条拉至程序编辑器窗口的顶部,不再显示接口,但它仍然存在。
在接口区中声明块专用的局部变量,局部变量只能在它所在的块中使用。块的局部变量名称由字符和数字组成,不能使用汉字。功能由5种局部变量:1)Input(输入参数):由调用它的块提供的输入数据。
2)Output(输出参数):返回给调用它的块的程序执行结果。
3)InOut(输入_输出参数):初值由调用它的块提供,块执行后返回给调用它的块。
4)Temp(临时数据):暂时保存在局部数据堆栈中德数据。只是在执行块时使用临时数据,执行完后,不再保存临时数据的数值,它可能被别的临时数据覆盖。
5)Return中的Ret_Val(返回值),属于输出参数。
在变量声明中赋值时,不需要指定存储器地址;根据各变量的数据类型,程序编辑器自动地为所有局部变量指定存储地址。
3.FC的程序设计
首先用CONV指令将参数In_data接收的A/D转换后的整数值(0-27648)转
换为实数(real),再用实数乘法指令和除法指令完成下图的运算。运算的中间结果用临时局部变量Temp1保存。博图软件自动的在局部变量的前面添加#号。
三、功能块
功能块(FB)是用户编写的有自己的存储区(背景数据块)的块,FB的典型应用是执行不能在一个扫描周期结束的操作。每次调用功能块时,都需要指定一个背景数据块。后者随功能块的调用而打开,在调用结束时自动关闭。功能块的输入、输出参数和静态变量(Static)用指定的背景数据块保存,但是不会保存临时局部变量中德数据,功能块执行完后,背景数据块中德数据不会丢失。
1.功能块创建
打开博图软件,进入项目视图,双击“添加新块”,弹出对话框,点击“功能块”,设置功能块的名称,点击“确定”按钮,自动生成FB。
局部变量
将鼠标的光标放在FB的程序区最上面的分隔条上,按住鼠标的左键,往下拉动分隔条,分隔条上面是功能块的接口区。与功能相同,功能块的局部变量中也有Input(输入)、Output(输出)、InOut(输入输出)和Temp(临时)变量。
功能块执行完后,下一次重新调用它时,其Static(静态)变量的值保持不变。
背景数据块中德变量就是其功能块的局部变量中德Input、Output、InOut、Static变量。功能块的数据永久地保存在它的背景数据块中,在功能块执行完后也不会丢失,以供下次执行时使用。其他代码块可以访问背景数据块的变量。
不能直接删除和修改背景数据块的变量,只能在它的功能块的接口区中删除和修改这些变量。
生成功能块的输入、输出参数和静态变量时,它们被自动指定一个默认值,可以修改这些默认值。变量
的默认值被传送给FB的背景数据块,作为同一个变量的初始值。可以再背景数据块中修改变量的初始值。调用FB时没有执行实参的形参使用背景数据块中德初始值。
2.编写FB程序
FB的控制要求如下:用输入参数Start(启动按钮)和Stop(停止按钮)控制输出参数Motor(电动机)。按下停止按钮,断电延时定时器TOF开始定时,输出变量Brake(制动)为1状态,经过输入参数TimePre设置的时间预置值后,停止制动。
TOF的参数用静态变量TimerDB来保存,其数据类型为IEC_Timer.
3.功能与功能块的区别
FB和FC均为用户编写的子程序,接口区中均有Input、Output、InOut和Temp变量。FC的返回值ret_Val
实际上属于输出变量。下面是FB和FC的区别:1)功能块有背景数据块,功能没有。
2)只能在功能内部访问它的局部变量。其他带买块或HMI可以访问功能块的背景数据块中德变量。
3)功能没有静态变量,功能块有保存在背景数据块中的静态变量。
4)功能如果有执行完后需要保存的数据,只能存放在全局变量中(例如全局数据块和M区),但是这样会影响功能的可移植性。如果功能或功能块的内部不使用全部变量,只使用局部变量,不需要任何修改,就可以将它们移植到其他项目。如果内部使用了全局变量,在移植时需要考虑块使用的全部变量是否会与别的块产生地址冲突。
5)可以给功能块的局部变量(不包括Temp)设置初始值,不能给功能的局部变量设置初始值。在调用功能块时如果没有设置某些输入、输出参数的实参,将使用背景数据块中保存的数值。调用功能时应给所有的形参指定实参。
4.组织块与FB和FC的区别
1)对应的事件发生时,由操作系统调用组织块,FB和FC是用户程序在代码块中调用的。
2)组织块没有输入、输出变量和静态变量,只有临时局部变量。有的组织块自动生成的临时局部变量包含了与启动组织块的事件有关的信息,它们是操作系统提供的。
5.功能块的多重背景数据块
打开博图软件的项目视图,双击“添加新块”,选择FB,设置FB的名称,点击“确认”按钮,自动生成FB。
该功能块用来控制厕所的冲水阀,将鼠标的光标放在FB的程序区最上面的分割条上,按住鼠标的左键,往下拉动分隔条,在上面的接口区生成FB的局部变量。Using为有人使用卫生间的信号,Value是要控制的电磁阀。
每次调用定时器和计数器指令时,都需要指定一个背景数据块。如果这类指令很多,将生成大量的数据块。为了解决这个问题,在功能块中使用定时器、计数器指令时,可以再功能块的接口区定义数据类型为IEC_Timer或IEC_Counter 的静态变量,用这些静态变量来提供定时器和计数器的背景数据。这种功能块的背景数据块被称为多重背景数据块。
这样多个定时器或计数器的背景数据块被包含在一个背景数据块中,而不需要为每个定时器或计数器设置一个单独的背景数据块。因此减少了处理数据的时间,能更合理地利用存储空间。在共享的多重背景数据块中,定时器、计数器的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论