倍福PLC学习:编写函数块及简单调试
今天这篇文章我们来编写一个简单的电机控制函数块,并将其下载到倍福CX5020控制器进行测试,以熟悉TwinCAT3环境下基本的编程步骤。
打开TwinCAT3(TC3),按照上一篇文章《倍福PLC学习:扫描EtherCAT I/O子站并测试模块》介绍的内容新建工程项目并扫描EtherCAT子站,项目名称为“motorControl”。
在左侧项目树的“PLC”节点下右键单击,选择“Add new item(添加新内容)”,添加新的PLC项目,命名为“CPU1”,如下图所示:
添加完成后,“CPU1 Project”中会有POUs、GVLs、DUTs等文件夹。其中,POU是程序组织单元,GVL是全局变量列表,UDT是用户自定义变量。我们计划编写一个电机控制的函数块,因此在“POUs”文件夹右键单击,在弹出的对话框中选择“添加(Add)”→“POUs”,如下图所示:
在弹出的“添加POU”对话框中,选择功能块(Function Block),命名为motorControl,编程语言选择ST语言,如下图所示:
在函数块motorControl中声明变量,其中:
VAR_INPUT是输入变量,包含电机启动 、停止信号;VAR_OUTPUT是输出变量,包含输出信号(线圈);VAR_STAT是静态变量,包含沿信号检测变量;如下图所示(注意变量不区分大小写):
编写代码如下图所示:
为了分配参数,我们新建全局变量列表:GVL1,并添加变量如下图所示:
接下来要在主函数(MAIN)中调用电机控制函数块。首先在变量列表中声明motorControl的实例,命名为“motorControl1”,编写控制代码如下图所示:
单击工具栏“Build”→“Build CPU1”编译PLC程序。
单击工具栏“PLC”→“Download”下载PLC程序。
单击工具栏“PLC”→“Login”登录到在线状态,或者工具栏的快捷按钮,如下图所示:
如果PLC处于未运行状态,单击“Start(启动)”使其运行。本例程为了给出电机启动信号,我们将全局变量“startBtn1”的“Prepared Value”设置为“TRUE”,并单击工具栏“Write Values”按钮将该值写入到PLC中,如下图所示:
此时可以看到主程序MAIN中电机输出信号为TRUE,如下图所示:
如果想让函数输出对应到实际的输出模块,在“CPU 1 instance”→“PLCTask Outputs”→“GVL1.coilKM”,将其对应到“Linked to”指定的输出模块即可。
好了,关于倍福PLC编写函数块及简单调试就先介绍到这里。
PLC怎样计算幂、指数、根、多项式、对数和线型值?
怎样计算幂、指数、根、多项式、对数和线型值,怎样将三角函数转换为度计算?
说明:
下面为下列计算功能提供一些示例程序:
计算幂、指数、平方根、多项式、对数函数计算三角函数转换为度计算线性值映射不同的数学函数功能块到控制器1、幂、指数、根、多项式、对数的计算功能
在STEP7中只能使用以 e (e = 2.7182818 ...) 为底的幂(EXP指令),也可以使用自然指数结合自然对数(LN指令)求任意数的幂(例如10的X次幂或2的X次幂),唯一的限制是底数不能为0。指令LN中输入0没有定义,使用0为底数将导致不正确的运算结果。使用EXP和LN指令的数学公式定义如下:
图. 01
图. 01 为通用求幂的方程式,使用STEP 7编写的代码如下:
图. 02
注意:
幂的值和输入的值必须为32位浮点值并且符合"ANSI/IEEE Standard 754-1985, IEEE Standard for Binary Floating-Point Arithmetic"标准。
2三角函数转换到角度
在STEP7中使用三角函数sine、cosine 和 tangent 时必须以弧度(0 到 2p) 定义角度值,角度值必须为浮点值并存储于累加器1中,计算的结果再次存储于累加器1中。
角度值通常为度(0 到360 度),在STEP7中必须转换为弧度值,两者为比例关系,180度对应 p (3.141593... .)
弧度 = 角度 * p / 180角度 = 弧度 * p / 1801.FC1: 角度值从度数转换为弧度值。
输入参数:"度数" 数据类型为:REAL输出参数:"弧度值" 数据类型为:REAL2.FC2: 角度值从弧度值转换为度数。
输入参数:"弧度值" 数据类型为:REAL输出参数:"度数" 数据类型为:REAL函数FC1和FC2在OB1中调用,如果开始位I1.0出现上升沿FC1被调用,如果开始位I1.1出现上升沿FC2被调用。
3. 计算线性值
通过坐标的两个点(x0,y0) 和 (x1,y1)可以决定线性特征,在横坐标定义X参数的值,函数计算Y的坐标值。输出参数Y为整数类型,取值范围为-27648 to~+27648.
图. 03
P点坐标值通过下列公式计算:
y = ((y1-y0) / (x1-x0)) *(x-x0) +y0图. 04
相关问答
plc报警程序怎么编写?
编写PLC报警程序需要考虑以下几个步骤:定义报警条件:首先需要确定哪些条件会触发报警,例如某个设备的温度超过设定值、某个传感器的读数异常等。设计报警逻...
plc顺序表参数?
PLC顺序表的参数包括以下几个方面:1.顺序表的名称:顺序表是PLC程序中的一个数据结构,需要给其起一个合适的名称。2.顺序表的大小:顺序表的大小是指表中元素...
excel可以用来做plc的脚本吗?
Excel本身并不是用于编写PLC脚本的工具,它是一个电子表格软件,主要用于数据分析和处理。虽然Excel中有一些基本的运算函数和逻辑函数,但是它并不支持PLC脚本所...
用PLC如何写报警程序?
编写PLC报警程序需要考虑以下几个步骤:定义报警条件:首先需要确定哪些条件会触发报警,例如某个设备的温度超过设定值、某个传感器的读数异常等。设计报警逻...
PLC的变量如何与Wincc连接?需要在PLC程序中编程吗?
使用脚本程序,调用内部函数SetTag(“PLC变量”,GetTag(“内部变量”))。SetTag和GetTag函数可详见Wincc帮助说明使用脚本程序,调用内部函数SetTag(“PLC变量....
plc中mf什么意思?
1.MF在PLC中代表MasterFunction,即主功能。2.MF是PLC中的一个功能模块,用于实现特定的功能或任务。它可以是一个独立的程序块,也可以是一个子程序或函数。M...
plc中if条件判断命令?
IF函数用法:判断一个条件是否满足:如果满足返回一个值,如果不满足则返回另外一个值。IF函数语法格式:=IF(logical_test,value_if_true,value_if_false)...
plc函数和功能块区别?
PLC都有FC与FB,FC称为功能或函数,FB称为功能块或函数块。FC与FB的共同点是都相当于子程序,可以被其它程序调用,也可以调用其它子程序,如果控制功能相同,都...
plc函数和函数块有什么区别?
R_TRIG指令与P_TRIG指令都是用于检测流入它们的CLK端的能流的上升沿,并用Q端直接输出检测结果。其区别在于R_TRIG是函数块,用它的背景数据块DB3保存上一次扫描...
单片机程序的“.c”和“.h”格式都有什么区别?
.c文件是整个程序中的一个或几个函数组成,在别的.C文件里可以调用它,不只是在主函数中。这样做可以增强程序的模块化,提高程序的可读性。当编制好一个模块时你...