你这个问题有点大,因为西门子PLC中的DB数据块可以分为背景数据块和共享数据块,每种都很有一些内容可说的。
西门子PLC从300/400系列开始STEP7软件引入了DB块的概念,DB就是数据块,这个DB区有点象西门子200PLC中的V变量数据区,200中编程使用V区的点,300中就可以使用DB区来存储数据,以及触摸屏上位机这些的通讯也都主要使用DB变量,所以DB块是西门子PLC中一个非常重要的项目。
我还是简单来说一些吧。
先说两种数据块创建时的不同
当你新建一个项目没有一个FB块的时候,你在项目中插入一个DB块,就只有共享的DB这个选项。意思是,此时你就只能建立一个共享的数据块。
当你插入一个FB块之后,你再次新建一个DB块的时候,就可以选择你共享还是背景,如图:
这个图片上DB2就成为了FB1的专属DB块了。是因为FB块在使用中规定必须有一个背景数据块,所以建立一个FB就必须要有DB块,而FC则不需要!在FB的调用中如果你没有事先建立DB块,那么调用的时候系统会要求你输入一个DB块,这个DB块会自然成为这个FB的背景数据块。
再来说一下使用中的不同点
DB块的使用详细说的话,可以说的太多了,所以这里我就举例来主要说明一下2种数据块的不同吧:
该图片上这个程序就是主程序OB1中调用FB1,DB2就是FB1的背景数据块,这里DB1就是共享数据块。可以看到FB1的实参输入点我是用的DB1块中的,输出是用的DB2中的一个点。
我们就来看一下这个程序中DB2和DB1中有什么不同,先要看一下FB1中的地址规划!
这个图片是我将FB1做成一个可以启动并自锁以及包含2个停止的通用程序块,方便在调用的时候赋予实参。in1,in2,in3还有out1,都是形参,是占用的FB块中的L区。
FB说完了,就该来看看DB1和DB2块中的内容:
从这个图片可以看到,DB1中只有1个地址就0.0这个是默认的声明内容,我只是创建了一个共享的数据块DB1,但是对DB1中的具体内容没有做声明,所以打开DB1显示就是这样。
DB2中可以看到有4个bool变量,这个和FB1中的4个变量是对应的,且这4个bool变量是被自动创建的。
还可以看到的信息是DB2中监控不上上边我程程序中使用的DB2.DBX0.6,原因也是因为我没有在DB2中事先把DB2.DBX0.6做规划!系统只生成了in1,in2,in3,out1这个几个和FB中对照的规划!这里说明了DB2虽然是FB2的背景数据块,但是不代表DB2中的其他变量是不能使用的,只不过一般编程的时候,为了不混乱,就不使用!
还值得说的是DB2中的in1的地址DB2.DBX0.0和DB1.DBX0.0的状态是对用的,换句话说,DB2就可以用来记录FB2外部实参的状态,这也是FB块引入DB块的一个初衷!
最后还强调一点:
如果你事先是先建立了空白的FB1,也建立了DB2去关联到FB1,那么你的FB1中被规划入内容后,FB1再去关联DB2的时候,系统会提示内容不一致了,让你更新关联的DB块,则DB2就会被自动更新,也会自动创建FB1中的变量。
看下图:
这个图是我FB2关联到DB10,开始FB2和DB2都的空的,当我在FB2中建立数据后,再次关联DB10时候就弹出如上的对话框,询问是否要再次生成实例数据块,选择是就会自动更新DB10。
好吧,就简单说这么多了,因为关于DB块可以说的知识点还有很多,希望对你有点帮助吧,谢谢!
如果有问题,请关注+留言,我会及时回复,谢谢!