大数跨境
0
0

西门子博途SCL编程应用实例

西门子博途SCL编程应用实例 麦科技AI
2025-12-11
3
导读:用SCL指令进行数学运算实例每月天数计用SCL编程来对每月天数进行计算和显示,S7-1500 PLC的CPU为

用SCL指令进行数学运算

实例每月天数计

用SCL编程来对每月天数进行计算和显示,S7-1500 PLC的CPU为CPU1511-1 PN,触摸屏为TP700 Comfort。

(1)图为添加新块时选择编程语言为SCL,而不是之前默认的LAD。

(2)图为定义变量,包括Input输入的Year(年)和Month(月)、Output输出的Days(天数)均为Int变量。

(3)编写程序。每月天数的计算一般采用CASE指令,分三种情况:

第一种情况,每个月31天的月份,分别是1、3、5、7、8、10、12月。

第二种情况,每个月30天的月份,分别是4、6、9、11月。

第三种情况,2月,分闰年和平年,平年是28天,闰年是29天。闰年的计算方法:公元纪年的年数可以被4整除为闰年;能被100整除而不能被400整除为平年;能被100整除也可被400整除为世纪闰年。如2000年是闰年,1900年是平年。

从博途的SCL编辑环境

中直接选取CASE...OF...,编程如下:

(4)OB1程序调用如图所示。

(5)图为本实例的触摸屏画面,输入年份2020,输入月份2,该月的天数为29天。

实例SIN(x)的计算

使用泰勒公式实现SIN(x)的计算。其中x为弧度,S7-1500 PLC的CPU为CPU1511-1 PN,触摸屏为TP700 Comfort。

(1)SIN(x)采用泰勒公式的计算公式为

为确保精度,需要计算到最后一项绝对值小于10-7,此时的计算值就是SIN(x)。

(2)添加FB1如图所示,并定义输入/输出变量,包括输入x、输出result变量,Static静态变量term、n,Constant常数eps(10-7)。

FB1使用SCL编程如下:

该程序主要应用REPEAT...UNTIL重复指令,当计算的增加量低于常数eps时,就忽略了以后各项的值,即可得出泰勒公式的终值。

(3)调用FB1时,需要增加数据库,OB1主程序如图所示。

(4)触摸屏组态。运行画面如图所示。

SCL的逻辑控制

实例一键启/停

设计一个具有一键启/停功能的系统,S7-1500 PLC的CPU为CPU1511-1 PN,触摸屏为TP700 Comfort,要求如下:

(1)一键启/停,模拟一个按钮,按一下启动,再按一下停止;

(2)同时具有一个按钮启动的功能,按一下启动,再按一下不会停止;

(3)具有定时停止的功能,按照设定好的时间自动停止。

(4)具有复位功能。

步骤:

(1)添加FB(OneKeyStart),确定FB的输入/输出参数,如图所示。

FB的SCL编程需要注意定时器的写法。IEC定时器的类型必须指定为TON、TP或TOF,即

SCL主程序如下:

(2)编写OB1主程序,调用FB功能块OneKeyStart,如图所示。

图的程序解释如下:① 保持Set为True(M2.3),不可定时复位,否则可定时复位;② Toggle模式(M2.2=True),可以利用切换按钮(M2.4)实现一键启/停;③ 非Toggle模式(M2.2=False),利用Toggle上升沿置位,可定时复位;④ 可以通过Reset(M2.5)进行复位。

(3)联合仿真。图为触摸屏画面。图为非Toggle模式时,利用Toggle上升沿置位,定时5s后,复位的FB调用数据块的监视值。

SCL数组操作

实例数据的排序

利用SCL指令,将任意输入触摸屏的10个数据合成一个数组1,并进行排序,从大到小,在数组2中输出并显示。

步骤:

(1)FC1选择排序,采用SCL编程,定义输入/输出变量如图所示。

选择排序法是对定位比较交换法(冒泡排序法)的一种改进。选择排序法的基本思想是,每一趟在n-i+1(i=1,2,…,n-1)个记录中都选取关键字最小的记录作为有序序列中的第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;依次类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增加,直到全部排序完毕。

以下为简单选择排序的存储状态,大括号内为无序区,大括号外为有序序列:

初始序列,{49 27 65 97 76 12 38};

第1趟,12与49交换,12{27 65 97 76 49 38};

第2趟,27不动,12 27{65 97 76 49 38};

第3趟,65与38交换,12 27 38{97 76 49 65};

第4趟,97与49交换,12 27 38 49{76 97 65};

第5趟,76与65交换,12 27 38 49 65{97 76};

第6趟,97与76交换,12 27 38 49 65 76 97。

SCL编程如下:

(2)新建数组DB1和DB2为数组DB,均为Array[0..9]of Int,分别如图

(3)OB1编程,调用FC1,如图所示。

(4)触摸屏组态与联合仿真。画面组态:分别对两组10个输入数据与DB1和DB2动画连接。图为排序前的输入数据,任意输入23、29、12、666、74、56、888、412、74、15等10个数据,经过排序后,变成888、666、412、74、74、56、29、23、15、12,如图所示。图是排序后的Data1监视值。

时钟与报警的SCL编程

1.时间指令

S7-1500 PLC的CPU实时时钟(Time-of-Day Clock)在CPU断电时由超级电容提供的能量保证运行。CPU上电至少24h后,超级电容所充的能量可供时钟运行10天。实时时钟的数据结构DTL(日期时间)共占据12个字节,见表。

(1)时间加/减指令

T_ADD(时间相加)和T_SUB(时间相减)的输入参数IN1和输出参数OUT的数据类型可选择DTL或Time。它们的数据类型应相同。IN2的数据类型为Time。

T_DIFF(时间差)输入IN1的DTL值减去IN2的DTL值,参数OUT提供数据类型为Time的差值,即DTL-DTL=Time。

(2)读/写时间指令

WR_SYS_T(写系统时间):将输入IN的DTL值写入S7-1500 PLC的实时时钟。输出RET_VAL是返回指令执行的状态信息。

RD_SYS_T(读系统时间):将读取的S7-1500 PLC当前系统时间保存在输出OUT中,数据类型为DTL。输出RET_VAL是返回指令执行的状态信息。

RD_LOC_T(读本地时间)的输出OUT提供数据类型为DTL的S7-1500 PLC中的本地时间。为了保证读取正确的时间,在设置CPU的属性时,应设置实时时间的时区为北京,不设夏时制。在读取实时时间时,应调用RD_LOC_T指令。

WR_LOC_T(写本地时间):将本地时间写入S7-1500 PLC。

实例报警信号时间记录表

步骤与分析(1)采用FB比较合适,因为FB可以自带DB,可将100个时间记录存放在DB中。所以,先定义FB“记录报警时间”(FB1)参数,如图4-90所示。输入Rec_yes表示开始记录时间,Clear表示清除所有的记录为默认值。静态参数包括dtl_temp,读取时间的返回值,数据类型为Int;dlt_arr,数组Array[0..99]of DTL,所有100个时间记录;i为循环控制变量。

FB1的SCL编程如下:

在程序中,读取时钟的指令“#dtl temp ∶=RD_LOC_T(#dlt arr[0]);”非常简洁;先进先出采用FOR指令执行。

(2)定义S7-1500 PLC的变量如图所示。

图为OB1主程序。程序段1为初始化时间。程序段2为调用FB1的记录报警时间。

(3)触摸屏画面如图所示。

初始化时间如图所示。

当报警信号M2.2动作时,依次记录相关的触发时间,监控FB1所对应的DB1中的数据变化情况,如图所示。

实例记录电动机故障停机时间

某电动机故障信号为M2.2,当故障信号为ON时,开始记录故障时间,故障信号为OFF时,在触摸屏上显示电动机的故障时间。

步骤与分析(1)定义FB的“电动机故障时间”参数,如图所示。

SCL编程如下:

在程序中,故障时间统计采用T_DIFF(时间差)指令,即“故障结束时间”的DTL值减去“故障开始时间”的DTL值,差值就是Time数据类型的“故障时间”。

(2)主程序变量定义如图所示。

主程序OB1如图所示。程序段1是调用系统函数进行初始化时间。程序段2是调用FB1,将电动机故障时间记录在数据块中。

(3)图为触摸屏画面。通过联合仿真,可以初始化时钟,并通过“故障信号”按钮模拟故障,获取故障开始时间和故障结束时间。图是数据块的实时时间监控。


【声明】内容源于网络
0
0
麦科技AI
麦科技AI是有关:人工智能、python、西门子PLC、AI机器人、计算机视觉、电脑高效技能、无人机等知识的共享与传递。并且在这里你将获得有益的知识与方法。 让自己更优秀。欢迎您关注“麦科技AI”公众号!更多内容敬请期待!感谢您的支持!
内容 97
粉丝 0
麦科技AI 麦科技AI是有关:人工智能、python、西门子PLC、AI机器人、计算机视觉、电脑高效技能、无人机等知识的共享与传递。并且在这里你将获得有益的知识与方法。 让自己更优秀。欢迎您关注“麦科技AI”公众号!更多内容敬请期待!感谢您的支持!
总阅读73
粉丝0
内容97