ST语言编程中常用的函数功能块
大部分PLC都会内置很多基本的函数和功能块供编程人员调用,而且很多具有通用性,也就是在不同品牌的PLC中,这些函数和功能块的名称、用法和功能相同,记住这些函数和功能块的名称和使用方法,能让我们编程时更加便捷。下面以三菱PLC的编辑软件GX Works3为例,展示这些函数、功能块的使用方法。
边缘检测与计时器
1, R_TRIG/F_TRIG(上升/下降沿检测功能块)
上升沿和下降沿应该是所有程序里最常用的FB(功能块)之一了,他的功能是检测一个bool变量变化的边缘,输出一个扫描周期,下面通过一个例子介绍一下我常用的命名方法和编程格式:检测开始按钮X1的上升沿, 置位Y0,检测停止按钮X2的下降沿,复位Y0。
第一步声明标签, 我个人习惯将上升沿加前缀“rt”,下降沿加“ft”:
声明标签
第二步编程,FB的输入引脚赋值要在()内操作,而输出引脚可以当作变量直接使用,节省一个标签:
编程格式
增加变量前缀,无论在程序的什么地方使用,都能一眼看出变量的类型,方便阅读程序。
2,TON/TOF(延时启动/关闭功能块)
延时功能块也是非常常用的FB,除了起到延时的作用,还可以用来过滤信号,起到筛选的作用,例如:使用对射光电传感器X0(阻挡时ON)检测皮带上产品缝隙,当传感器OFF时间超过100ms时报警Y0。
声明标签 :
编程:
3,TP(脉冲定时器)
脉冲定时器的功能是输出一个固定时长脉冲,典型的应用如报警灯的控制,举个例子:当变量bAlarm触发后,点亮报警灯Y0,要求每隔700ms亮一次,一次亮200ms,持续闪烁。
声明标签:
编程:
ton功能块的输入设置为自身输出的非,作用是每隔700ms生成一个单扫描周期的脉冲,tp功能块将脉冲的时长设定为200ms,并给到指示灯。
算术运算
算数运算除了常用的"+","-","*","/"(加减乘除)还有“**”(幂运算)"<","=",">"(比较)等。还有一些常用的函数可供使用。
1,MAX,MIN(最大值,最小值函数)
选取最大值/最小值存入iMax/iMin中,三菱最多可比较28个数据。这个函数在我的《五子棋》游戏程序中有用到,选取一个棋子4个方向连棋数和分数的最大值。
2,MOD(取余数函数)
取余数是非常有用的函数,比如生成一个范围内的随机数时可以使用MOD对生成的数字进行限制;可以将一维数组存入多维数组时使用MOD进行设限,例如:将一维数组DataListA[0..99]的数据传递给二维数组DataListB[0..1,0..49]。
3,ABS(绝对值函数)
还有很多三角函数(sin,cos,tan)反三角函数,这里就不再演示了,用法差不多。
类型转换
类型转换的函数指令非常多,基本涵盖了所有数据类型之间的相互转换,格式基本相同。
类型转换
下面以“幂运算”为例演示用法:
由于三菱的幂运算要求实数,所以在计算前先将整数转为实数,计算后的结果也是实数,想要存入整数变量还要再转为整数。
字符串处理
字符串的处理函数经常在TCPIP通讯中用到,尤其是工业相机的应用中,种类也是非常多:
字符串处理
以常用的MID截取函数为例,讲述函数用法:解析由相机发来的字符串,包含一个产品的XY坐标和旋转角度C,存入实数变量iX,iY,iC。
MID函数
注意,字符串的空格也算一位。
输入源字符串,截取长度,截取位置,将获得的字符串转换为实数后赋值。
其他
在三菱的部件选择窗口中,可以找到非常多的系统功能块和函数:
部件选择
没有必要记住每一个函数的使用方法和名称,当你需要实现某种功能时,直接在搜索框搜索功能名称(中文就行),就会得到符合的功能块,如果不会使用可以按F1按键查看帮助。
帮助文档
西门子S7-1200PLC 程序块之组织块介绍
关注“PLC发烧友 ”,一起涨知识!
回复:西门子全套,领西门子全系列电子资料包!
一、S7-1200程序块
S7-1200CPU采用块的概念,将程序分解为独立的,自成体系的各部部件块的功能类似于S7-200系列中的子程序,但类型更多,功能更强大
简而言之就是比如一个项目分成不同的功能(任务)和工艺,每个任务可做成不同的代码块;每个代码块可完成不同的任务或工艺,并且每个代码块是独立的;这些块与S7-200的子程序块更强大,在200系列中如果采用带形式参数的子程序去编写程序的过程中,如果去使用计数器、定时器等没有相应的变量类型的存储区时,在需要被重复调试这带形参的子程序时,计数器、定时器就会出现双线圈;但在1200中的FB/FC块中可以使用计数器、定时器、沿脉冲信号等反复调用不受影响
二、使用块的优点
使用块的概念有以下好处:
(1)便于大规模程序的设计和理解
将不同的任务分成不同的程序块,在大的项目中我们按照,任务、功能的划分不同的任务段,每个任务段编写不同的程序块,完成这个任务块的程序就行,
(2)可设计标准化的程序块,方便进行重复的调用
如一个电机的控制,涉及到电机的启动方式、运行参数如速度的反馈、电压电流的反馈等等;如果设计一个标准的程序块时,不同的工程师不需重新设计,把标准块直接调用即可。
(3)程序结构清晰明了,修改方便,调试简单。
(4)增加PLC的组织透明性,可理解易维护。
三、程序块详解
S7-1200CPU提供了不同类型的程序块,主要分为组织块(OB)、函数(FC)函数块(FB)数据块(DB)
组织块:由操作系统调用,决定程序的结构
函数(功能)块:具有存储器的代码块,可将值存储在背景数据块中,即使在执行完后,这些值存在背景数据块中仍然有效。
函数:不带存储器的代码块,数据存储在局部存储区L里面,函数没有背景数据块,执行完成后,数据不保存
数据块:存储用户数据的区域,类似于200系列的V存储区;它分为全局数据块和背景数据块。可根据不同的任务段,建立不同的数据块来存储任务
组织块OB
组织块的基本功能是调用用户程序,在S7-1200中可以使用的组织块OB有启动组织块、循环组织块、循环中断组织块,定时中断组织块,硬件中断组织块,故障中断组织块等。
启动组织块 (OB100)在添加OB块的时可选择多个启动组织块,根据组织块的编号大小顺序依次执行。启动组织块通常用来做出初始化的程序(在一些需要做初始化的程序可以放到OB100中)
循环组织块 :(OB1)PLC的主程序MAIN CPU会循环的对程序扫描执行,然后有循环组织块调用不同FB/FC,也就是CPU在处于RUN模式时,操作系统每个周期调用循环OB一次,所有的循环OB执行完后,操作系统重新调用循环OB,S7-1200CPU支持多个程序循环OB,执行顺序一样是根据编号大小依次执行;
硬件中断组织块 :在RUN模式下,CPU立即响应硬件中断事件,调用相关的硬件中断OB,中断程序的执行不受主程序的扫描和过程映像更新时间的影响,适合需要快速响应的应用。比如高速计数的当前值等于预设值时,可启用硬件中断
一个硬件中断事件只允许一个硬件中断OB,而一个硬件中断OB可分配给多个硬件中断事件。
中断硬件触发后,操作系统将识别输入通道并确定所分配的OB,在识别和确认的过程中,同一模块上发送了触发硬件中断的另一事件,必须遵循以下规则:
1、如果该通道再次发生相同的中断事件,操作系统不予响应,硬件中断将丢失
2、如果发生不同的中断事件,则在当前正在执行的中断确认后再响应这个新的中断事件
时间中断组织块 :时间中断OB用于在时间可控的应用中定期运行一部分用户程序,可实现在某个预设时间到达只运行一次,或在设定的触发日期到达后,按时、分、秒、天、周、月等周期运行,只有设置并激活了时间中断,且程序中存在相应组织块的情况下,才能运行时间中断,通过以下指令对时间中断进行操作:
“ACT-TINT”激活时间中断
“SET-TONTL”设定时间中断的参数
“CAN-TINT”取消未执行的时间中断
“QRY-TINT”查询时间中断的状态
循环中断组织块 :循环中断OB按设定的时间间隔循环执行,如间隔时间为1000MS,则在程序块执行期间会每隔1000MS调用该该块一次。在添加块的时候可添加一个循环中断组织块,同时可设置该组织块的执行时间间隔
故障中断组织块 :在发生故障时,可启用故障中断
延时中断组织块 :延时中断OB在一段可设置的延时时间后启动,可通过以下指令对延时中断进行操作:
“SRT-DINT”用于启动延时中断,该中断在超过参数指定的时间后调用延时中断OB。延时时间范围在1~60000MS
“CAN-DINT”取消启用的延时中断
“QRY-DINT”查询延时中断的状态
时间错误组织块 :时间错误组织块是操作系统用于处理时间故障的中断组织块,当程序和执行时间超过最大的循环时间或发生时间错误事件,CPU将触发时间错误中断OB80
诊断错误组织块 :诊断错误组织块是操作系统用于响应诊断错误的中断组织块,如激活诊断功能的模块检测到故障状态发生变化时,向CPU发送诊断中断请求,触发诊断错误组织块OB82
拔插中断组织块 :拔插中断组织块OB83是操作系统用于响应对模块移除或插入操作的中断组织块,S7-1200 PLC的本地模块不支持热插拔,拔出或插入中央机架模块将导致CPU进入STOP模式
机架错误中断组织块 :机架错误中断组织块OB86是操作系统用于响应PROFIBUS-DP和PROFINET-IO分布式IO站通信故障的中断组织块
回复:西门子全套,领西门子全系列电子资料包!
相关问答
PLC如何使用随机函数?
在PLC中使用随机函数可以通过以下步骤:1.首先,找到PLC编程软件中的随机函数或随机数生成器函数。不同的PLC品牌和软件可能会有不同的函数名称和语法,因此您需...
plc例子程序与函数有什么区别?
区别1.PLC例子程序和函数在使用方式和作用上有着不同。2.-PLC例子程序是一种宏观的、完整的解决方案,包含了多个指令的组合,用于实现特定的功能。它可以...
plc寻址编程方法?
1.PLC寻址编程方法有多种。2.首先,常见的一种方法是直接寻址编程,即通过指定PLC的输入输出点的地址来进行编程。这种方法简单直接,适用于简单的控制任务。另...
plc编程f4什么意思?
F4在PLC编程中是一种特殊的功能键,用于调用常用功能,例如查找、替换、复制、粘贴等。F4键的使用可以大大提高编程效率,尤其是在处理大量数据时更加方便。此外...
PLC中函数块有什么作用?
1、减少重复编码,因为可以通过多次调用,程序员可以不用对重复的程序段多次编写。2、易于调试,通过对功能块的执行状态的变量输出,方便调试。3、方便不同项...
三菱plcST语法基本语句?
关于这个问题,ST语言是三菱PLC(可编程逻辑控制器)中的一种编程语言,用于编写逻辑控制程序。以下是ST语言的基本语句:1.赋值语句:变量:=表达式;例如...
1200plc控制变频器频率怎么写程序?
编写PLC控制变频器频率的程序需要以下步骤:首先,配置PLC与变频器之间的通信参数,确保能够实现数据传输。然后,使用PLC编程软件创建一个变频器控制的函数块...
急求三菱fx3g的plc没有计算三角函数的指令,如何解决?
急求三菱fx3g的plc没有计算三角函数的指令,如何解决三菱fx3g系列的plc是不支持三角函数指令的如正弦(SIN)、余弦(COS)、正切(TAN)以及反三角函数指令,这需要3U...
在PLC编程中是否可多次调用同一个子程序为什么?
1、反复调用子程序,对定时器和计数器是有影响的,定时器会不停的响应最近的一次调用。计数器的影响是把各次的调用逻辑操作做总的累加或累减。2、对于200来说...
plc200常用的指令?
西门子S7-200PLC是可编程逻辑控制器的一种,广泛应用于工业控制领域。以下是S7-200PLC常用的指令:LD:逻辑“与”指令,用于将两个触点进行串联,形成逻辑“与...