[西门子] 必知!西门子 S7-1200 PLC 功能块生成及调用秘籍

[复制链接]
查看157 | 回复0 | 7 天前 | 显示全部楼层 |阅读模式

在这篇文章中,我们将探讨如何创建和使用西门子S7-1200 PLC的自定义功能块(FB)。功能块是一种特殊的子程序,它拥有自己的存储区域,并且主要用于执行那些不能在一个程序扫描周期内完成的任务。每当功能块被调用时,都需要指定一个背景数据块(DB),这个数据块会在功能块调用时激活,并在调用结束后自动关闭。

首先,我们需要创建一个名为“功能块应用”的项目,并在其中添加一个PLC设备。在项目树中找到“PLC1程序块”文件夹,双击其中的“添加新块”选项。在弹出的对话框中,选择“功能块”按钮来创建一个新的功能块,其默认编号为FB1。我们可以将这个功能块重命名为“motor”,并且这个名称可以使用汉字。在项目树中,我们可以看到这个新创建的FB1。

在FB1的程序区域上方,有一个分隔条,通过拖动这个分隔条,我们可以区分出功能块的界面区和程序区。界面区中的局部变量仅在该块内部有效。这些变量可以包含数字、字母和汉字。功能块有五种类型的局部变量:输入参数、输出参数、输入输出参数、静态变量和临时数据。输入参数用于接收外部数据,输出参数用于返回执行结果,输入输出参数则兼具两者的功能。静态变量在功能块执行完毕后,其值会保持不变,直到下次调用。临时数据则仅在执行期间用于存储数据,执行结束后可能会被其他数据覆盖。

接下来,我们可以创建两个布尔类型的输入参数,并设置一个名为“定时时间”的输入参数,其数据类型为时间(time)。然后,我们可以创建一个名为“电动机”的输出参数,同样为布尔类型。此外,我们还可以创建一个名为“timer DB”的静态变量,其数据类型为IEC定时器。

在创建了输入输出参数和静态变量后,它们会被自动分配一个默认值,这些默认值可以被用户修改。这些值会被传递给功能块的背景数据块,并作为变量的初始值。在背景数据块中,用户可以修改这些初始值。

在编写FB1的程序时,我们可以直接将局部变量拖放到FB1的程序中。例如,我们可以将启动按钮的输入变量拖放到触点上方。同样的方法也适用于设置其他变量。

在Step 7 basic中,局部变量会自动添加井号前缀,而定时器TOF的参数则使用静态变量timer DB来保存。通过打开timer DB,我们可以查看定时器的内部数据。

FB1的控制逻辑如下:使用输入参数中的启动按钮和停止按钮来控制输出参数。当按下停止按钮时,断电延时定时器TOF开始计时,输出参数制动器的状态变为唯一。经过预设的定时时间后,制动器的状态会停止。

在保存FB1并关闭它之后,我们可以在主程序OB1中调用FB1。在调用选项对话框中,我们可以设置生成的背景数据块的属性,例如修改其名称。背景数据块的编号会自动分配为DB1。

在FB1的界面区中,左侧定义了输入参数,右侧定义了输出参数,它们统称为FB1的形式参数。在FB1内部程序中使用这些形参时,需要为每个形参指定实际的参数,这些参数可以是地址或常数。在PLC变量表中,我们可以为调用FB1设置符号地址,并在OB1中将这些变量作为实参拖放到相应的位置。

通过比较功能块的局部变量和背景数据块中的变量,我们可以看到背景数据块包含了FB1的局部变量中的输入参数、输出参数和静态变量,但不包括临时变量。背景数据块中的变量是自动生成的,不能直接在背景数据块中修改或删除这些变量,只能在功能块的界面区中进行修改或删除。

最后,我们将用户程序下载到CPU,并启用程序状态监视功能。通过模拟输入端的开关操作,我们可以观察到输出变量电动机和制动器的状态变化,以及定时器的延时效果。

通过这种方式,我们可以有效地管理和控制PLC的功能块,确保它们在工业自动化应用中的高效运行。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

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

本版积分规则