倍福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中函数与函数块有什么区别?
R_TRIG指令与P_TRIG指令都是用于检测流入它们的CLK端的能流的上升沿,并用Q端直接输出检测结果。其区别在于R_TRIG是函数块,用它的背景数据块DB3保存上一次扫描...
plc编程中的lad函数类型什么意思?
在PLC编程中,LAD函数类型指的是LadderDiagram(梯形图)函数类型。LAD函数是一种基于梯形图的编程语言,用于描述和控制PLC的逻辑功能。梯形图是一种图形化的编...
急求三菱fx3g的plc没有计算三角函数的指令,如何解决?
急求三菱fx3g的plc没有计算三角函数的指令,如何解决三菱fx3g系列的plc是不支持三角函数指令的如正弦(SIN)、余弦(COS)、正切(TAN)以及反三角函数指令,这需要3U...
plc编程语言有哪些?
PLC编程语言主要包括以下几种:1.LadderDiagram(梯形图):是PLC最常用的程序设计语言,采用电气线路图的形式表示控制逻辑,能够可视化控制方案,易学易懂。...
step7与plc485通讯步骤?
要实现step7与plc485通讯,首先需要在step7软件中配置485通讯模块的参数,包括通讯速率、数据位、奇偶校验等。然后,在Step7中编写PLC程序,使用通讯函数块来读...
1200plc的编程方法有哪几个?
这个问题,不好回答。我只能说一下思路。控制都容易,温度传感器变送出4---20mA信号,给PLC模拟量模块,然后模拟量输出模块输出4---20mA信号给你要控制的设备...
plc中mf什么意思?
1.MF在PLC中代表MasterFunction,即主功能。2.MF是PLC中的一个功能模块,用于实现特定的功能或任务。它可以是一个独立的程序块,也可以是一个子程序或函数。M...
西门子plc模拟量编程实例?
以下是一个使用西门子PLC的模拟量编程示例:假设有一个温度传感器,将温度值转换为4-20mA模拟量信号,然后将信号输入到PLC的模拟量输入模块中。我们需要将输入的...
plc中0.5秒怎么表示?
在PLC程序中,时间是以毫秒为单位进行计算的。在这种情况下,0.5秒可以表示为500毫秒或0.5*1000=500毫秒。PLC使用定时器来测量时间,并且可以将其设置为在特定...
plc200常用的指令?
西门子S7-200PLC是可编程逻辑控制器的一种,广泛应用于工业控制领域。以下是S7-200PLC常用的指令:LD:逻辑“与”指令,用于将两个触点进行串联,形成逻辑“与...