西门子PLC中央处理器CPU1212C西门子中国总代理 西门子授权代理商、
西门子PLC中央处理器CPU1212C西门子中国总代理 西门子授权代理商
西门子PLC中央处理器CPU1212C西门子中国总代理 西门子授权代理商
西门子PLC数组的生成与使用教程
(1)生成数组
可以在数据块中定义数组,也可以在逻辑块的变量声明表中定义它。下面介绍在数据块中定义的方法。在SIMATIC管理器中用菜单命令“插入”→“S7块”→“数据块”生成数据块DB4。双击打开它,默认的显示方式为声明视图方式。声明视图用于定义、删除和修改共享数据块中的变量,指定它们的名称、数据类型和初始值。
在新生成的数据块的第一行和最后一行标有STRUCT(结构)和END_STRUCT(结构结束)。在这两行中间有一个自动生成的临时占位符变量。
将该行的名称改为数组的名称“PRESS”(见图4-7),变量的名称只能使用字母、数字和下划线,不能使用中文。用鼠标右键点击该行的“类型”列,执行弹出的快捷菜单中的“复杂类型”→“ARRAY”
(数组)命令,在出现的“ARRAY 【】”的方括号中输入
“1..2,1.3”,即指定二维数组PRESS有2×3个元素。在“注释”列按回车键,在AR-RAY下面一行的“类型”列输入“INT”,定义数组元素为16位整数,INT所在行的“地址”列自动生成的“*2.0”表示一个数组元素占用2B。地址列的“ 12.0”表示该数组的6个元素一共占用12B,地址列的内容是自动生成的。可以用中文给每个变量加上注释。
数组PRESS的第1个元素为PRESS【1,1】(见图4-6和图4-8),第4个元素为PRESS【2,1】,第6个元素为PRESS【2,3】。
(2)给数组元素赋初值
STEP7根据变量的数据类型给出默认的初始值,用户可以修改初始值。定义数组时可以在ARRAY所在的行的“初始值”列中给数组元素赋初值,各元素的初值之间用英语逗号分隔,例如上例中6个元素的初值可以写成“22,30,-5,0,0,0,结束时不用标点符号。
若相邻元素的初值相同可以简写,上述初值可以简写为“22,30,-5,3(0)”(见图4-7)。
执行菜单命令“视图”→“数据视图”,切换到数据视图方式,将显示数组和结构中各元素的初始值和实际值(见图4-8)。
在数据视图方式,显示变量的初始值和实际值,用户只能修改变量的实际值,修改后需要下载数据块。如果用户输入的实际值与变量的数据类型不符,将用红色显示错误的数据。在数据视图方式,用菜单命令“编辑”→“初始化数据块”,可以恢复变量的初始值。1 800
(3)访问数组中的数据
本例中的数组是数据块的一部分,访问数组中的数据时,需要指出数据块和数组的名称,以及数组元素的下标,例如”TANK”.PRESS【2,1】。其中的TANK是数据块DB4的符号名,PRESS是数组的名称,它们用英语的句号分开。方括号中是数组元素的下标,该元素是数组中的第4个元素(见图4-8)。
(4)用数组传递参数
如果在块的变量声明表中声明形参的类型为ARRAY,可以将整个数组作为参数来传递(见图4-23)。在调用块时也可以将某个数组元素赋值给同一数据类型的参数。
(5)用数组定义数据块的大小
数据块的大小与数据块中定义的变量的个数和数据类型有关。如果需要一个容量很大的数据块,可以用数组来定义数据块的大小。如果在数据块中只定义一个数组ARRAY 【1..500】,数组元素的数据类型为字,则该数据块的大小为1000B。可以用juedui地址和任意的简单数据类型来访问该数据块中的存储单元。如果访问数据块中未定义的地址,将会出现错误信息“读取时发生区域长度错误”。
(6)设置数据块的参数
用鼠标右键点击某个数据块,执行出现的快捷菜单中的“对象属性”命令,在出现的属性对话框的“常规-第2部分”选项卡中,可以用复选框设置数据块的属性。各参数具体的意义见在线帮助。
(7)使用程序状态功能监视数据块
点击数据块工具栏上的@按钮,自动切换到“数据视图”显示方式,数据块内的存储单元在线的数值在“实际值”列中显示。程序状态被激活后,不能切换为“声明视图”方式。
程序状态结束后,“实际值”列将显示程序状态之前的有效内容,在线数值不能传送到离线的数据块。
西门子PLC共享数据块与数据内容
1. 数据块的分类
数据块(DB)用来分类储存设备或生产线中变量的值,数据块也是用来实现各逻辑块之间的数据交换、数据传递和共享数据的重要途径。数据块丰富的数据结构便于提高程序的执行效率和进行数据管理。与逻辑块不同,数据块只有变量声明部分,没有程序指令部分。
数据块分为共享数据块(DB)和背景数据块(DI)。在共享数据块和符号表中声明的变量都是全局变量。用户程序中所有的逻辑块(FB、FC、SFB、SFC和OB)都可以使用共享数据块和符号表中的数据。
2. 生成共享数据块
在符号表中,共享数据块的数据类型是它本身,背景数据块的数据类型是对应的功能块。
用鼠标右键点击SIMATIC管理器左边窗口中的“块”,在弹出的菜单中执行“插入新对象”→“数据块”命令,生成新的数据块,默认的类型为共享数据块。
3. 基本数据类型
基本数据类型包括位(BOOL)、字节(BYTE)、字(WORD)、双字(DWORD)、整数(INT)、双整数(DINT)和浮点数(FLOAT,或称实数REAL)等(见3.2.2节)。
4. 复杂数据类型
复杂数据类型包括日期和时间(DATE_AND_TIME)、字符串(String)、数组(Array)、结构(Struct)和用户定义的数据类型(UDT)。
(1)日期和时间
日期和时间(DATE_AND_TIME,缩写为DT)占用8个字节的BCD码。第1~6个字节分别存储年的低两位、月、日、时、分和秒,毫秒存储在整个第7个字节和第8个字节的高4位,星期存放在第8个字节的低4位。星期日的代码为1,星期一~星期六的代码为2~7。例如2010年7月27日12点30分25.123秒可以表示为DT#10-07-27-12∶30∶25.123,可以省略毫秒部分。
通过调用程序编辑器的文件夹“\Libraries\ Standard Library\IEC Function Block”中的IEC功能(见附表B-4),可以实现DATE_AND_TIME数据类型与基本数据类型之间的相互转换、日期时间的比较和加、减,具体的使用方法见在线帮助。
调用SFCO" SET_CLK",可以设置和启动CPU时钟的时间和日期。调用SFC1"的READ_CLK",可以读取CPU系统时钟当前的日期和时间。
(2)字符串
字符串(String)是字符(Char)组成的一维数组,每个字节存放1个字符。第1个字节是字符串的最大字符长度,第2个字节是字符串当前有效字符的个数,字符从第3个字节开始存放,一个字符串最多有254个字符。字符串的默认长度为254B,在DB4中定义字符串Fault的长度为20个字符(见图4-7),它只占用从DB4.DBB20开始的22B,其初值只有4个字符'Over’。String变量中未使用的字节地址被初始化为B#16#00。
将DB4下载到仿真PLC,用变量表监控DB4.DBB20和DB4.DBB21,它们的值分别为20(字符串Fault的长度为20)和4(当前有4个字符)。还可以看到从DB4.DBB22开始的4个字节中字符‘Over’的ASCII码。可以用语句表中的基本指令访问字符串中的字符,例如用指令“L DB4.Fault 【3】”来访问字符串Fault的第3个字符。
可以用标准库的IEC库中的21个功能来处理字符串变量(见附表B-4),包括字符串与其他数据类型的转换、字符串的比较和字符串的编辑,具体的使用方法见在线帮助。
(3)数组
数组(ARRAY)是同一类型的数据组合而成的一个单元,数组的维数最多为6维。图4-6给出了一个二维数组ARRAY 【1.2,1..3】 的内部结构,它共有6个字节元素,图中的每一小格为二进制的1位,每个元素占一行(一个字节)。ARRAY后面的方括号中的数字用来定义每一维的起始元素和结束元素在该维中的编号,可以取-32768~32767之间的整数。各维之间的数字用逗号隔开,每一维开始和结束的编号用两个小数点隔开。如果某一维有n个元素,该维的起始元素和结束元素的编号可以采用1和n,例如AR-RAY [1..100]。
(4)结构
结构(STRUCT)可以是不同类型的数据的组合。可以用基本数据类型、复杂数据类型(包括数组和结构)和用户定义数据类型(UDT)作为结构中的元素,例如一个结构可以由数组和结构组成,结构可以嵌套8层。用户可以把过程控制中有关的数据统一组织在一个结构中,作为一个数据单元来使用,而不是使用大量的单个的元素,为统一处理不同类型的数据或参数提供了方便。
(5)用户定义数据类型
用户定义数据类型(User-Defined Data Types)简称为UDT,是一种特殊的数据结构,用户只需要对它定义一次,定义好以后可以在用户程序中作为数据类型使用。可以用它来产生大量的具有相同数据结构的数据块,用这些数据块来输入用于不同目的的实际数据。例如生成用于颜料混合配方的UDT后,可以用它生成用于不同颜色配方的数据组合。用户定义数据类型由基本数据类型和(或)复杂数据类型组成。定义好以后可以在符号表中为它指定一个符号名,使用UDT可以节约录人数据的时间。