西门子PLC S7-200 Smart开源标准化编程—PLC的面向对象编程
此文章出自于西门子工业支持中心技术论坛,作者:不欲勿施
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文涉及产品:PLC S7-200 Smart
这个题目很大,需要反复研究。这不是探讨帖,所以还是分享并以一个对象编程的例程展开来讲。我尽可能用通俗的语言来讲。
先大致分两部分来讲,一个是对象,一个是对象编程。上一张图。
一、图中程序的对象是列举,肯定是不全的,就是示意一下程序的构成。
这里对象还好理解一些。之前看了我帖子的小伙伴,接触了我做的标准化程序,里边有不少子程序,这些子程序里的大部分都是面向PLC里的基本对象的。有好多号称标准化编程的程序进行到这一步就把程序分享出来了,实际上这样只是完成了第一步,造成很多人不知道如何下一步。也就不知道什么是对象编程了。
下面我尽可能列举出实物对象与程序的对应。我把程序的对象分成4层:
第0层: 通信对象层,之前的帖子里我曾称通信是获取IO的工具,通信其实就是把从站设备的IO交换到PLC的内部来。之前我对Modbus RTU Modbus TCP通信对象进行的封装,其它类型通信还未进行封装。
第1层: IO对象处理层,比如一个检测物料的光电传感器,在PLC内进行简单的信号处理,我们需要传感器ON后2秒后的信号才是有效的,物料被移走后6秒信号才OFF,这时我们就可以用标准化子程序里的L103TonTof。在信号处理这里还会产生这些信号的沿,供后面的程序使用。
第2层: 无面板动作对象层,这个层里主要是一些执行器的状态不用反馈到HMI的对象。
第3层: 带面板动作对象层,这个层里主要是需要反馈到HMI的对象。
第4层: 工艺功能对象层,这个层里主要是各种工艺功能等对象。
二、对象编程。图中右侧深绿色是对象编程的示意。其中工艺(自动)子程序内的逻辑实现同样和对象子程序一样使用L区实现的,与下层对象程序之间的联系靠的是对象程序上的IO。在严格遵守对象编程的规则下,在程序中看到的全局地址都是IO。
下面分享一个以前做的一个半成品项目,自动程序的调试接近完成。程序内的对象程序与我新发的程序里的对象程序不完全相同,主要借鉴程序的结构。这是一个拆垛机的程序,就是垂直两三垛带托盘的货物经过拆垛机后,拆成单个托盘和货物。拆垛机一共有5个工位:1工位是上垛工位,是AVG小车上垛。2工位是垛型判断工位,判断是两托盘货还是三托盘货。3工位是货物托举工位,并一托或两托货物托举起来的工位。4工位是存放拆成单托盘的货物,只能放下一下托盘的货物。5工位是人工用手动叉车移走单托盘货物的工位。
设备里的执行器大都是辊道电机,电缸,还有两台伺服,没有模拟量执行器。
下面给出触摸屏上的手动画面和PLC程序。
此程序主要用来了解PLC的对象编程,看一看PLC对象编程的程序结构。觉得有用就下载回个帖或点点有帮助。
西门子PLC系列连载 No26 西门子1200PLC的SCL语言使用解析!
本文首发于“江苏远恒教育”公号,订阅“江苏远恒教育”公号,更多精彩等你来发现~
SCL(Structured Control Language)是西门子用于其PLC编程的高级语言之一 。相比于其他PLC语言(如梯形图、功能块图等),SCL具有语法简洁、易于理解和编写的优点。它非常适合用于描述复杂的算法和数据结构。本文将详细解析西门子S7-1200 PLC中SCL语言的使用。
一、SCL语言基础
在传统的PLC系统中,所有的输入/输出设备都直接连接到PLC的I/O模块上。然而,随着工业生产线的发展,设备的数量增加,且分布在各个位置,导致布线变得复杂且成本高昂。
SCL语言的语法与Pascal和C语言类似。它由语句和表达式构成,每条语句用分号结束。SCL支持常见的数据类型(如INT、REAL、BOOL等)和控制结构(如IF-THEN-ELSE、FOR-TO-DO、WHILE-DO等)。此外,SCL还支持数组、结构体等复杂数据类型,可以满足复杂应用的需求。
例如,以下是一段简单的SCL代码,用于计算两个整数的和:
VAR
a : INT := 10;
b : INT := 20;
c : INT;
BEGIN
c := a + b;
END_VAR
二、在TIA Portal中使用SCL
在西门子的TIA Portal编程环境中,SCL语言可以用于创建函数(FC)、函数块(FB)和全局DB。要创建一个新的SCL函数或函数块,首先在项目树中选择对应的PLC,然后右键点击“函数”或“函数块”,选择“添加新项目”,在弹出的对话框中选择SCL作为语言。
创建新的SCL函数或函数块后,可以在编辑窗口中输入代码。TIA Portal提供了代码高亮、自动完成、错误检查等功能,可以帮助工程师更高效地编写代码。
在SCL函数或函数块中,可以使用VAR区域定义局部变量,使用VAR_INPUT和VAR_OUTPUT定义输入和输出参数。要调用SCL函数或函数块,可以在其他SCL代码中直接写函数或函数块的名称,然后用括号括起参数列表。
例如,以下是一个SCL函数块的示例,用于计算两个实数的平均值:
FUNCTION_BLOCK Average
VAR_INPUT
x : REAL;
y : REAL;
END_VAR
VAR_OUTPUT
avg : REAL;
END_VAR
BEGIN
avg := (x + y) / 2.0;
END
END_FUNCTION_BLOCK
这个函数块有两个输入参数x和y,一个输出参数avg。在BEGIN和END之间,执行了一条计算平均值的语句。
三、SCL的高级应用
除了基础的语法结构和数据类型,SCL还提供了一系列高级功能,如函数和过程、异常处理、文件和I/O操作等。
函数和过程是SCL的重要组成部分。它们允许将代码块封装成可重用的单位,提高代码的模块化和可读性。在SCL中,函数和过程的定义与调用方式类似于Pascal和C语言。
异常处理是处理运行时错误的重要机制。SCL提供了TRY-CATCH结构,可以捕获并处理异常。在TRY块中,执行可能会抛出异常的代码;在CATCH块中,处理异常。
文件和I/O操作是SCL的重要功能。SCL提供了一系列函数,如Open、Read、Write、Close等,可以用于文件的打开、读写和关闭。对于I/O设备,SCL提供了函数,如I_Read、I_Write等,可以用于读写输入和输出数据。
例如,以下是一个SCL过程的示例,用于读取一个输入信号,然后将其值写入文件:
PROCEDURE WriteToFile
VAR_INPUT
filename : STRING;
signal : REAL;
END_VAR
VAR
file : FILE;
BEGIN
file := Open(filename, fmWrite);
Write(file, signal);
Close(file);
END_PROCEDURE
这个过程有两个输入参数:filename(文件名)和signal(信号值)。在BEGIN和END_PROCEDURE之间,执行了一系列文件操作:首先打开文件,然后将信号值写入文件,最后关闭文件。
四、SCL的应用实例
为了更直观地理解SCL的应用,我们来看一个实际的例子。假设我们需要在PLC中实现一个温度控制算法。该算法根据设定的目标温度和实际测量的温度,计算出控制器的输出值。
首先,我们需要创建一个SCL函数块,如下所示:
FUNCTION_BLOCK TempControl
VAR_INPUT
setpoint : REAL; // 目标温度
measurement : REAL; // 实际温度
END_VAR
VAR_OUTPUT
output : REAL; // 控制器输出值
END_VAR
VAR
error : REAL; // 温度误差
BEGIN
error := setpoint - measurement;
output := PID(error); // PID是我们自定义的一个函数,用于计算PID控制器的输出值
END
END_FUNCTION_BLOCK
这个函数块有两个输入参数:setpoint(目标温度)和measurement(实际温度),一个输出参数:output(控制器输出值)。在BEGIN和END之间,计算了温度误差,然后调用了一个自定义的PID函数,将误差转化为控制器的输出值。
然后,我们可以在其他SCL代码中调用这个函数块,如下所示:
VAR
tc : TempControl;
BEGIN
tc(setpoint := 50.0, measurement := ReadTemp()); // ReadTemp是我们自定义的一个函数,用于读取温度传感器的值
WriteOutput(tc.output); // WriteOutput是我们自定义的一个函数,用于将控制器的输出值写入输出设备
END_VAR
这段代码首先定义了一个TempControl类型的变量tc。然后调用了tc函数块,将设定温度设为50.0,实际温度设为ReadTemp函数的返回值。然后将tc函数块的输出值写入输出设备。
五、总结
总的来说,SCL是一种强大而灵活的PLC编程语言,适用于处理复杂的算法和数据结构。虽然SCL的学习曲线相比梯形图等更为陡峭,但只要掌握了基本的语法和编程范式,就可以利用其高级功能,实现更复杂、更高效的控制逻辑。
相关问答
...47△x0.007avg0.251б0.002CPUCPLCPCPK请计算以上4项,_作业帮
[最佳回答]计算公式及结果如下:Cpu=(USL-Average)/3σ=(0.253-0.251)/(3*0.002)=0.33Cpl=(Average-LSL)/3σ=(0.251-0.247)/(3*0...
在线的各位知道吗,三菱定位模块中定位数据怎么使用?求解答
[回答]◇控制轴数:2轴联动,2轴独立◇插补功能:2轴线性插补,2轴圆弧插补◇A1SD75系列组件表现了三菱在制造和设计CNC,变频调器,伺服系统和PLC诸方面的综合...
帮忙一下,变频供水设备能保修多久?
[回答]襄阳无负压变频供水设备变频器控制柜:自主研发的通用型智能化监控,PLC编程,功能完善,常见故障警报及有全自动检修作用,使运作更为平稳,实际操作更为...
求帮助!螺丝锁紧检测包括哪些?
[回答]螺丝锁紧检测方案说明:触摸屏采用以太网形式通讯PLC,PLC采用Canlink通讯伺服实现控制。方案优点通讯优点:采用Canlink通讯伺服,高速度可达1M,节省接...
SQL表中整数除以整数如何得到4位小数,谢谢各位...-汇财吧专...
[回答]AVGMAXBINARY_CHECKSUMMINCHECKSUMSUMCHECKSUM_AGGSTDEVCOUNTSTDEVPCOUNT_BIGVAR...如下图所示,把这个表格从中间一分为二,分成...
哪位资深人士!请回答一下,如何订制广告礼品?定制广告礼品...
[回答]订制手表其实也不麻烦,首先你要选好款式(建议最好在生产厂家现有的款式里选,如果不是的话,那就成本高了,重新开模,既麻烦成本又高)然后把你自己的要...
压胶机剪刀用什么材料?什么硬度来做啊?旧压胶机的剪刀坏了...
[回答]有个朋友在科诺电子设备上班3年了,时不时的跟我炫耀一下他们公司,搞得我都想去了。桩身倾斜:桩身垂直偏差过大。原因分析:场地不平、有较大坡度。...