6ES7512-1SK01-0AB0
随着互联网的迅速发展,数字化正改变着我们的一切
在互联网时代,新的商业模式正在冲击着整个市场,它正在逐渐改变我们的生产生活方式。从书店到,从电话黄页到微软电话商店,从唱片到音乐流,从出租车到车辆共享。互联网给我们的生产生活带来翻天覆地的变化。
数字化一般被称为“第四次工业革命",实际上它在几年前就已经开始了。它经历了一个逐渐演变的过程。它很重要的一点就是在生产中体现一种"改变“。
目前,制造业面临着这些主要需求:速度,灵活性,质量,效率。还有很重要的一点就是网络和信息安全。
我们做这些不仅仅是为了自身,更是为了用户受益。节省生产时间,大幅提高生产的灵活性,生产定制化的产品,提高生产效率和产品质量,这些都是我们用户亟待解决的问题。可以通过我们的客户了解更多具体的例子。
西门子支持企业进行涵盖整个价值链的整合及数字化转型
下面,我阐述下西门子如何进行整个价值链的整合及数字化转型。自动化并不是近十年才出现的概念,自动化已经在很多地方得到应用和体现。从产品设计,生产规划,生产制造和服务都可以进行数字化改造。另一方面,我们重要的创新体现在整个价值链的数字化双胞胎。
我们通过Teamcenter协作平台,将数字化双胞胎模型发布到所有相关方,包括供应商。
下面来介绍一下针对最终用户和机械制造商(OEM)的整体方案,从从产品设计,生产规划,生产制造和服务我们可以进行一些模拟。下面介绍一些用户的具体案例:
首先,在产品的设计环节中集成了CAD/CAM/CAE技术,我们会构建3D模型进行仿真,我们可以调用数据库,进行模型仿真分析,通过仿真结果得到产品的相应参数。你可以直观的看到你设计的产品,你可以决定你的产品。
下面到了生产规划环节,我们可以通过人体仿真技术模拟它的组装,分拣等生产活动,实现装配流程的仿真,分析和优化,并得到最佳人体工程学参数。实现生产系统,物流流程的最佳仿真,可视化,分析和优化。
接下来是生产工程环节的机电一体化工程与虚拟调试。自动化工程为TIA博途生成PLC程序代码。
在生产制造环节中,通过MES和TIA,协同实现最佳个性化产品生产。
最终通过数字化的开放的工业软件平台实现生命周期和数据分析。
针对机械制造商的整体方案,实现从机械设计到服务的横向集成,满足客户的定制化需求。
我们提供的数字化企业套件可以的契合客户需求。如下面我们所看到的,我们工厂产品的全生命周期管理(PLM),制造操作管理,全面的集成自动化得以实现。
我们还构建了一云端为基础开放物联网生态系统,MindSphere—西门子工业云平台。MindSphere被设计为一个开放的生态系统,可以很容易的连接其设备。工业企业可将其作为数字化服务,如数据管理以及工厂资源优化配置的基础,还可以监测其设备。
举一些典型案例:
玛莎拉蒂的生产中,通过西门子全价值链整合,缩短市场投放时间,增强灵活性,增强产能。
通过西门子集成技术,福特汽车缩短研发周期,减少能源成本,增强产能。
在MindSphere中,格林(Gehring)使用复杂的云服务与数据分析,珩床可用性。
西门子的整体方案和中国的“十三五规划"也是十分契合的,数字化企业是我们为所有规模企业提供的未来工业的解决方案。
6ES7512-1SK01-0AB0
有关运行次数和运行变量的信息:
程序运行时无法更改运行次数。出于性能原因,应在块接口的'Temp'部分中声明运行变量。在循环中,该运行变量无法更改。
按如下方式声明此指令:
FOR <运行变量> := <起始值> TO <结束值> BY <增量> DO
<语句>;
END_FOR;
如果增量为1,可以简写为:
FOR <运行变量> := <起始值> TO <结束值> DO
<语句>;
END_FOR;
图10 FOR语句
下表列出了该指令的参数:
参数 |
数据类型 |
存储区 |
说明 |
---|---|---|---|
<运行变量> |
有符号整数、无符号整数* |
I、Q、M、D、L |
执行循环时会计算其值的操作数。执行变量的数据类型将确定其它参数的数据类型。 |
<起始值> |
I、Q、M、D、L |
表达式,在运行变量执行循环时,将为运行变量分配该表达式的值。 |
|
<结束值> |
I、Q、M、D、L |
表达式,在运行程序最后一次循环时会为运行变量分配该表达式的值。在每个循环后都会检查运行变量的值:
执行该指令期间,不允许更改结束值。 |
|
<增量> |
I、Q、M、D、L |
表达式,根据增量表达式的值,执行变量在每次循环后都会递增(正增量)或递减(负增量)自身变量值。 如果未增量,则在每次循环后执行变量的值加 1。 执行该指令期间,不允许更改增量。 |
|
<语句> |
- |
只要运行变量的值在取值范围内,每次循环都就会执行的语句。取值范围由起始值和结束值定义。 |
*TIA PORTAL V16开始支持无符号整数类型的变量
示例
图11 FOR示例
Tag_Value 操作数乘以b_array 数组变量的元素 (2, 4, 6, 8)。并将计算结果读入到a_array 数组变量的元素 (2, 4, 6, 8) 中。
下表展示了给定 Tag_Value 与 b_array[i] 的值得到 a_array[i] 的结果:
设定 | Tag_Value | |||
值 | 5 | |||
设定 | b_array[2] | b_array[4] | b_array[6] | b_array[8] |
值 | 3 | 5 | 7 | 9 |
结果 | a_array[2] | a_array[4] | a_array[6] | a_array[8] |
值 | 15 | 25 | 35 | 45 |
WHILE:满足条件时执行
说明:使用'满足条件时执行'指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。
执行该指令时,将对的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。
也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。
通过指令'复查循环条件'(Continue),可以终止当前连续运行的程序循环。通过指令'立即退出循环'(Exit)终止整个循环的执行。
可按如下方式声明此指令:
WHILE <条件>
DO <语句>;
END_WHILE;
图12 WHILE语句
参数
下表列出了该指令的参数:
参数 |
数据类型 |
存储区 |
说明 |
---|---|---|---|
<条件> |
BOOL |
I、Q、M、D、L |
表达式,每次执行循环之前都需要进行求值。 |
<语句> |
- |
在满足条件时,要执行的语句。如果不满足条件,则程序将从 END_WHILE 后继续执行。 |
示例
图13 WHILE示例
下表展示了循环初始和循环结束时变量值的变化
初始 | 循环结束 | |
Tag_2 | 5 | |
Tag_1 | 0 | 5 |
REPEAT:不满足条件时执行
说明:使用'不满足条件时执行'指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。
执行该指令时,将对的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。
即使满足终止条件,至少也会执行一次循环内的语句。
也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。
通过指令'复查循环条件'(Continue),可以终止当前连续运行的程序循环。通过指令'立即退出循环'(Exit)终止整个循环的执行。
可按如下方式声明此指令:
REPEAT <语句>;
UNTIL <条件>
END_REPEAT;
图14 REPEAT语句
参数
下表列出了该指令的参数:
参数 |
数据类型 |
存储区 |
说明 |
---|---|---|---|
<语句> |
- |
在设定条件的值为 False 时执行的指令。即使满足终止条件,此指令也执行一次。 |
|
<条件> |
BOOL |
I、Q、M、D、L |
表达式,每次执行循环之后都需要进行求值。如果表达式的值为 False,则将再次执行程序循环。如果表达式的值为 True,则程序循环将从 END_REPEAT 后继续执行。 |
示例
图15 REPEAT示例
下表展示了循环初始和循环结束时变量值的变化
初始 | 循环结束 | |
Tag_2 | 5 | |
Tag_1 | 0 | 6 |
CONTINUE:复查循环条件
说明:使用'复查循环条件'指令,可以结束 FOR、WHILE 或 REPEAT 循环的当前程序运行。
执行该指令后,将再次计算继续执行程序循环的条件。该指令将影响其所在的程序循环。
图16 CONTINUE用在FOR循环
图17 CONTINUE用在WHILE循环
图18 CONTINUE用在REPEAT循环
示例
图19 CONTINUE示例
下表展示了计算结果:
变量 | 计算结果 |
'DB10'.Test[0] | - |
'DB10'.Test[1] | - |
'DB10'.Test[2] | - |
'DB10'.Test[3] | - |
'DB10'.Test[4] | - |
'DB10'.Test[5] | 1 |
'DB10'.Test[6] | 1 |
'DB10'.Test[7] | 1 |
如果满足条件 i < 5,则不执行后续值分配 ('DB10'.Test[i] := 1)。运行变量 (i) 以增量'1'递增,然后检查其当前值是否在设定的循环取值范围内。如果执行变量在循环取值范围内,则将再次计算 IF 的条件。
如果不满足条件 i < 5,则将执行后续值分配 ('DB10'.Test[i] := 1) 并开始一个新循环。在这种情况下,执行变量也会以增量'1'进行递增并接受检查。
EXIT:立即退出循环
说明:使用'立即退出循环'指令,可以随时取消 FOR、WHILE 或 REPEAT 循环的执行,而无需考虑是否满足条件,并在循环结束(END_FOR、END_WHILE 或 END_REPEAT)后继续执行程序。
该指令将影响其所在的程序循环。
图20 EXIT语句
示例
图21 EXIT示例
下表展示了计算结果:
变量 | 计算结果 |
'DB10'.Test[0] | 1 |
'DB10'.Test[1] | 1 |
'DB10'.Test[2] | 1 |
'DB10'.Test[3] | 1 |
'DB10'.Test[4] | 1 |
'DB10'.Test[5] | 1 |
'DB10'.Test[6] | - |
'DB10'.Test[7] | - |
如果满足条件 i > 5,则将取消循环执行。程序将从 END_FOR 后继续执行。
如果不满足条件 i <= 5,则将执行后续值分配 ('DB10'.Test[i] :=1) 并开始一个新循环。将运行变量 (i) 以 1 进行递增,并进行检查该变量的当前值是否在程序中设定的循环取值范围之内。如果执行变量 (i) 在循环取值范围内,则将再次计算 IF 的条件。
GOTO:跳转
说明:使用'跳转'指令,可以从标注为跳转标签的点开始继续执行程序。
跳转标签和'跳转'指令必须在同一个块中。在一个块中,跳转标签的名称只能一次。每个跳转标签可以是多个跳转指令的目标。不允许从'外部'跳转到程序循环内,但允许从循环内跳转到'外部'。
注意:
LAD/FBD语言内的SCL段,不能使用GOTO指令。
跳转标签遵循以下语法规则:
字母(a 至 z,A 至 Z)
字母和数字组合;请必须字母为开始
可按如下方式声明此指令:
GOTO <跳转标签>;
...
<跳转标签>: <语句>
示例
图22 GOTO示例
下表展示了每个操作数数值对目标变量的变化影响:
操作数 | 值 | |||||||
Tag_Value | 1 | 2 | 3 | 其他 | ||||
初始值 | 结束值 | 初始值 | 结束值 | 初始值 | 结束值 | 初始值 | 结束值 | |
Tag_1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Tag_2 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
Tag_3 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
Tag_4 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
根据'Tag_Value'操作数的值,程序将从对应的跳转标签标识点开始继续执行。例如,如果'Tag_Value'操作数的值为 2,则程序将从跳转标签'MyLABEL2'开始继续执行。在这种情况下,将跳过'MyLABEL1'跳转标签所标识的程序行。
RETURN:退出块
说明:使用'退出块'指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。
- 上一篇: 6ES7511-1FK02-0AB0
- 下一篇: 6ES7215-1AF40-0XB0