西门子 S7-1200PLC编程 数组的使用方法
关注“
技成微课堂 ”,一起涨知识~私信回复:64,领64本西门子电子书!
使用数组数据类型注意事项
ARRAY类型是由数目固定且数据类型相同的元素组成的数据结构。ARRAY类型的定义和使用需要注意以下几点:
ARRAY类型可以在DB、OB/FC/FB接口区、PLC数据类型处定义;无法在PLC变量表中定义。数组定义:Array[维度1下限..维度1上限,维度2下限..维度2上限,...]of <数据类型>,最多可包含 6 个维度;数组元素的数据类型包括:除数组类型、Variant类型以外的所有类型;数组下标的数据类型为整数,下限值必须小于或等于上限值,上下限的限值在S7-1200 V3.0及其以前为Int范围(-32768~+32767),在S7-1200 V4.0及其以后前为DInt范围(-2147483648 ~+21474836487),可以使用局部常量或全局常量定义上下限值,数组的元素个数受DB块剩余空间大小以及单个元素大小的限制;从S7-1200 V2.0开始,下标可以不仅仅是常数、常量,也可以是变量,还可以是混合使用(多维数组),如果编程语言是SCL的话,下标还可以是表达式。使用数组的变量下标,可以在程序中很容易地实现间接寻址。注意,下标变量必须是符号名,不能是DB1.DBW0这种没有对应符号名的绝对地址。从S7-1200 V4.2开始,FC的Input/Output/InOut以及FB的InOut可以定义形如Array[*]这种变长数组,要求必须是优化FC/FB块,在调用FC/FB的实参中可以填写任意数据类型相同的数组变量;当然,也可以多维变长的数组,例如Array[*,*]of Int。数组可以使用单个数组元素例如"DB1".Static_1[1],也可以使用整个数组例如"DB1".Static_1。多维数组可以降维使用,例如三维数组:3D[0..2,0..3,0..4]of Int是一个3×4×5大小的Int数组,3D[0]是一个4×5大小的二维Int数组,3D[0,1]是一个5个元素的一维Int数组,当然多维数组下标也可以换成变量,例如3D[Tag_1,1]这种;S7-1200 V4.2开始,多重背景支持数组形式,即Array of FB,这样可以在FB中使用循环指令更方便的编写程序。不支持Array[*] of FB。在TIA 博途 V10.5 SP2,S7-1200 V1.0的时候,曾经引入FieldRead 和 FieldWrite 指令,用于数组下标的变址寻址,这种方法在TIA 博途 V11之后可以由下标变量完全取代,并且更为简化,所以该指令也只是位于“移动操作>原有”中,用于早期版本向上移植时使用,它的使用方法参见FieldRead 和 FieldWrite 间接寻址。数组的基本使用方法
一. DB中创建,如图1所示:
图1 Array在DB中的创建
二. FC的InOut中创建,如图2所示:
图2 Array在FC形参中的创建
三. 数组作为实参,如图3所示:
图3 Array作为FC的实参
四. FC程序中使用数组元素,使用形参,如图4所示:
图4 FC程序中使用形参
五. FC程序中使用数组元素,下标为变址寻址,使用形参, 如实现以下功能,将0-7这8个数,送入数组下标为0-7的8个元素,如图5-7所示:
(1)FC形参设置,如图5所示:
图5 FC形参设置
(2)程序编制,如图6所示:
图6 程序详情
(3)SCL的版本,如图7所示:
图7 SCL版本的程序
六. 在程序中直接使用数组元素,如图8所示:
图8 程序中直接使用数组元素
七. 在程序中直接使用数组元素,下标为变址寻址, 如实现以下功能,将0-7这8个数,送入数组下标为0-7的8个元素,如图9-11所示:
(1)数据块定义,如图9所示:
图9 DB1的定义
(2)程序编制,如图10所示:
图10 程序详情
(3)SCL的版本,如图11所示:
图11 SCL版本程序
Array【*】使用实例
实现以下功能:使用FC的Input定义数组Array[*] of Int,求变长数组元素的总和,可以按照以下步骤来完成。
一. 使用Array[*] ,必须使用如图12所示的指令,计算数组元素的上下限,从而得出元素个数:
图12 指令位置
二. 定义变量,如图13所示。赋初始值,计算上下限,如图14所示:
图13 定义形参
三、计算上下限程序,如图14所示:
(1)输入Array[*]类型的变量
(2)所求上下限的维数
(3)该维数下的下限/上限,DINT类型
图14 计算上下限
四. 求和程序,如图15所示:
图15 求和的程序
五. SCL的版本,如图16所示:
图16 SCL版本程序
六. OB1中调用实参为不同数组元素个数的数组,如图17所示:
图17 OB1调用程序
Array of FB的使用实例
实现以下功能:FB3多次调用FB4,在FB3内部循环调用,减少程序量。FB4的两个Input:Start,Stop,一个InOut:Run,建立Array[0..7] of FB4。同时建立变量 Array[0..7] of Struct,作为对应FB4的输入和输出,如图18所示:
图18 程序详情
版权声明:文章转自网络,版权归原作者所有。如有侵权,请联系我们删除!
私信回复:64,领64本西门子电子书!
「PLC高手必会」PLC标签和地址命名规则及5个技巧
图片来源:CEChina
作者 | Frank Lamb
“
了解标签模板、常见的工厂自动化标签缩写、过程控制标签缩写以及5个标签和地址命名技巧。
”
过去, 可编程逻辑控制器(PLC) 地址是基于寄存器的。数据保存在诸如MW210、B3:6/2、N7:50 或DB5.dbx50.2 之类地址的寄存器中。它们不是很直观,对吧?
可以为这些地址分配一个“符号”或快捷方式,使它们更易于编程或查找,但是这些符号名称通常受到长度的限制。符号也没有保存在PLC 中;而是保存在编程计算机和软件中。
描述也可以分配给地址,但是它们也仅保存在软件中。它们提供了有关地址及其功用的其它信息,但仍不可搜索。
随着基于标签的PLC 系统的出现,地址变得更具描述性,并且基于寄存器的地址也被隐藏起来,变成不可见了。根据PLC 的品牌或平台的不同,标签名称具有不同的规则。它们的长度可以是40 个或更多的字符,并可以使用字母数字字符。有些平台允许使用空格,而有些平台则需要使用下划线。
▎ 工厂自动化和过程控制标签命名对于一致性、易于理解和故障排除至关重要。图片来源:Automation Primer
可以下载的标签
标签实际上已下载到PLC 中。它们也可以在标签数据库中按字母或数字顺序组织,这使命名约定很重要。由于可以使用如此多的字符,标签名可以非常具有描述性,并且包含大量信息。同时,带有太多缩写的长标签名可能很难阅读。
诸如AutoMode、AutoCycle、Faul t或CycleStop 之类的常用功能或术语在行业中很常见,不需要很多额外信息。系统或机器可能分为区域或站,并标签为Zone2,Cell15 或Station003,这些标签可能需要更多文档或说明。
用户自定义数据类型(UDT)由于允许使用“点”连接,因此使标签变得更加复杂,例如“VFDrive2100.ActualSpeed”。嵌套UDT 允许使用上述标签。
标签模板
大型公司、机器制造商和系统集成商,通常会准备一个用于编程的模板,该模板给出了如何命名标签。在模板程序中已经创建了许多常用标签,而其它标签名则可通过电子表格自动生成。各个公司使用的规则会有所不同,但目的是相同的:使程序更具可读性,更易于排除故障。
标签命名规则主要分为两个部分:工厂自动化和过程控制标签。在汽车以及其它制造业中,设备通常由其功能和位置来命名。通常情况下,它们还包括该设备在电气图纸中所处页面和行的参考数字。例如“PalletPushCyl_ ExtPX_4120”。该标签由组件(托盘推杆油缸)、设备及其位置(扩展接近开关)以及电气图纸中的位置组成。
工厂自动化标签缩写
工厂自动化设备通常用以下缩写表示:
• 光电传感器:PE,PEC,PER
• 接近式开关/ 霍尔传感器:PX,PRX
• 限位开关:LS
• 主控制继电器:MCR
• 按钮:PB,hPB(HMI)
• 开关:SW
• 电磁阀:SV
• 控制继电器:CR,K
• 电机启动器:MS
第二个规则来自于过程控制行业,例如石油或化学加工。他们的技术人员利用过程和仪表图(P&ID)。ISA 支持这些编码准则,但是各个公司可能有所不同。
这些图纸将装置编号分配给诸如水箱或滑轨之类的组件,并将回路编号赋予不同的控制组件,例如仪表和传感器。
由于设备名称是受控的,因此过程工业中的标签名称仅包含P&ID 号,而不是工厂自动化中使用的更具描述性的方法。这些名称与离散制造业中使用的标签名称完全不同。
例如,流量变送器可能被命名为20-FT-1982-A,其中区域代号为20,FT 是传感器的类型,1982 是回路号,A 表示另外至少还有一个冗余设备。由于在许多平台上,标签都不能以数字开头,因此字符的顺序可能会更改,或者在单元号之前可能会附加字母。例如,上面设备的标签可能是FT_20_1982A或d20_FT_1982A。这类标签可能不像离散制造中业使用的标签那样具有描述性,但可以增加“装置20 中1982 回路的流量变送器A”的说明。
过程控制标签缩写
过程控制设备可能使用下列标签名称:
• 流量变送器:FT
• 阀门:HV,FV
• 限位开关:LSL(低),LSH(高)
• 回路控制:FIC,PIC
• 按钮/ 开关:HS,HIS
• 光电眼,接近开关:ZS
• 电机启动器:M
• 压力变送器:PT,PIT。
创建标签名时,首先需要记住的是,要把技术人员或维护人员当做客户一样对待。帮助别人找到并理解代码,是程序员的首要职责。
5个标签和地址命名建议
设备或装置标签名称的命名规则很重要,有助于理解并加快故障排除速度。在决定标签名称模板或规则时,需要考虑以下5个建议:
1. 使名称尽可能描述标签的功能。使用技术人员容易理解的标准化术语和缩写。如有必要,添加说明。
2. 标签按字母和数字顺序显示,对相同功能或区域,使用相同的字母/ 数字开头的标签,对于组织顺序很重要。
3. 如有必要,请使用下划线或大写字母来使标签更具可读性。
4. 如果软件平台允许使用本地标签,请在将其复制到复用程序之前,为特定程序集或程序分配所有标签。这样可以节省很多时间。
5. 使用电子表格创建标签。这比手动在数据库中键入标签要容易得多。标签可以更容易地添加和复制数据。PLC 平台允许轻松导出/ 导入标签。这也可以确保程序员所使用的标签与电气和机械设计师所使用的相同。
关键概念:
■ 标签命名规则可能因PLC 的品牌而异。
■ 工厂自动化、过程控制标签名称缩写。
■ 在设计决策时,5个标签命名技巧会有所帮助。
思考一下:
哪些标签命名的最佳实践可以使您的编程工作更加顺利?
相关问答
西门子plc符号图标隐藏了怎么调出来?
要调出西门子PLC符号图标,您可以按照以下步骤进行操作:首先,打开西门子PLC编程软件(如TIAPortal),然后打开您的工程文件。接下来,在工程文件的项目树中...
eplan插入符号PLC时为什么没有部件选项?
EPLAN符号库中的PLC是以拆分点的形式出现的,也就是每插入一个PLC点就代表了一个PLC模块的点,是没有主功能的,所以没有部件选项,通常我的做法是做个PLC盒子作...
西门子plc200编程软件,如何显示主程序和符号表?
看图吧,要想方便的看到地址、符号、和注释,在西门子200PLC的mirco/win软件中都能显示出来,需要进行下边的设置:就是菜单栏上“查看”选项下的“符号寻址”和...
plc编程指令符号是什么意思?
PLC编程指令符号是一种用于编写可编程逻辑控制器(PLC)程序的符号表示法。它们用于描述PLC程序中的逻辑操作、数学运算、数据传输和控制功能。每个指令符号都...
台达plc编程软件没有plc肿么仿真-ZOL问答
符号中定义输入输出,在程序中调用即可有用(0)回复13311这个直接在台达官网下载,一定可以安装的,不会很麻烦因为,中达电通是卖机电产品的,也就是也卖PLC...
西门子PLC中无符号数和有符号数怎么定义的呢比如一个内存中...
[最佳回答]单看内存中的数不能判断数的类型,你把这个数用在什么指令,这个数就被作为这个指令操作数的类型.需要补充的是,在S7-300中,如果你已经在变量表定义了...
plc符号表不填会怎么样?
回答如下:如果不填PLC符号表,可能会导致以下问题:1.对于其他人来说,理解和识别PLC程序中的变量和地址将变得困难。没有符号表,其他人可能需要花费更多的时...
西门子PLC中字无符号十进制数据范围,是B#(0.0)~B#(255.255),怎么理解?在PLC?
B代表其数据类型为BYTE,是字节类型而不是字类型,一个字节所支持的值域为0~255.在西门子中,字节类型为字串类型,所以无法支持带有符号的10进制数,你只能将...
请问PLC编程的常开、常闭的符号是怎样画的?谢谢?
编程软件里有功快捷健,如最常用的三菱GX软件,常开符号是F5健,常闭是F6健,等,打开软件在菜单的下方就看到了。编程软件里有功快捷健,如最常用的三菱GX软件,常...
plc编程中的符号和地址怎么填?
在PLC编程中,符号和地址是用来标识和访问输入/输出设备、内存区域和变量的。符号用于命名和表示不同的元素,例如输入端口、输出端口、计数器和定时器等。地址...