西门子6ES7516-3TN00-0AB0性能参数
新疆塔里木油田桑塔木作业区是一个方圆数百平方公里的作业区,地处塔克拉玛干沙漠边缘,自然环境十分恶劣。全区范围内分布着80口油井,由于施工费用高、维护困难,长期以来无人值守,油井的计量数据采集只能靠人工巡视.但由于地域广大、自然条件差,一次巡视往往要用多半天,而且不能及时发现设备故障,为此作业区下决心对油田计量系统进行改造。
改造共涉及5个计量站、2个阀组站,数采、控制部分采用和利时公司的FOPLCTM系统。计量站中CPU通过RS-485通信模块与一台智能**计通讯,读取**计中的16个计量数据,另一个RS-232通信模块连接MDS 2710A(OEM)系列数传电台,由电台完成整个系统的通讯工作。CPU模块负责协调两个通讯模块的工作,并执行计量间内三相分离器的压力调节和液位控制。阀组站内为10口井的计量阀组,配有CPU和若干I/O模块,CPU除执行控制任务外,还可以将设备运行状态信息上传到中心站CPU。系统结构如下图:
中心站为标准PC,运行和利时公司的Focsoft 3.0软件,在Focsoft 3.0软件中定义一个轮询标签,每当系统对轮询标签采样时,Focsoft自动启动操作电台指令,通过电台发出一个带站号的轮询指令。1-7号站都可以收到该指令,但只有自身站号与轮询指令中站号相同的PLC才会应答,将预先存储在寄存器中的数据上传,PC受到数据后向PLC发出确认信息,表明本次通讯结束,并把数据存入相应的标签。当中心站有数据下传时,操作原理基本相同,PLC将收到的下传数据存入寄存器,供控制程序调用。轮询周期通过设定轮询标签的采样频率设定,如果某次通讯因故没有成功,中心站会发出报警,直到下次通讯恢复后报警结束。
本系统在塔里木油田应用后,运行稳定,中心站对7个RTU站的轮询只要几分钟就可以完成(中心站与RTU站间远距离13公里)。由于系统采用无线数据传输电台,具备模拟电台无法比拟的工作稳定性和误码率指标,与和利时公司的FOPLCTM系统可以实现很好的集成应用,因此数据采集准确无误,避免了所有人为因素,真正实现了计量自动化,用户认为这套系统的使用在降低劳动强度的同时大大**了生产效率,为塔里木油田的自动化作出了贡献。
西门子plc复杂数据类型包括日期和实践(DATE_AND_TIME)、字符串(String)、数组(Array)、结构(Struct)和用户定义的数据类型(UDT)。 1、日期和时间 日期和时间(DATE_AND_TIME)占8个字节的BCD码,第1~6个字节分别存储年、月、日、时、分和秒,毫秒存储在整个第7个字节和第8个字节的高4位,星期存放在第8个字节的低4位,星期日代码为1,星期一 ~ 星期六的代码为2~7.例如2010年7月27日12点30分25.123秒可以表示为DT#:30:25.123。 通过调用程序编辑器文件夹“LibrariesStandard LibrariesIEC Function Block”中的IEC功能(参见下图) 调用SFC0”SET_CLK”可以设置和启动CPU时钟的时间和日期。调用SFC1”READ_CLK“可以读取CPU系统时钟当前的日期和时间。 2、字符串 字符串(String)是字符(Char)组成的一堆数组,每个字节存放一个字符。第1字节是字符串的大字符长度,第2个字节是字符串当前有效字符的个数,字符从第3个字节开始存放,一个字符串多有254字符。字符串的默认长度为254B,如下图所示,在DB3中定义字符串Fault的长度为20个字符,它只占用从DB3.DBB20开始的22B,其初始值只有4个字符“over”。String变量中未使用的字节地址被初始化为B#16#00. 可以使用标准库的IEC苦衷的21个功能来处理字符串变量,见下表,包括字符串与其他数据类型的转换、字符串比较和字符串编辑,具体方法参见在线帮助。
3、数组 数组(ARRAY)是同一类型的数据组合而成的一个单元,数组的维数多为6维。下图给出一个二维数组ARRAY [1..2,1..3]的内部结构,它共有6个字节的元素,图中每一个小格为二进制的1位,每个元素占一行(一个字节)。ARRAY后面的方括号的数字用来定义每一维的起始元素和结束元素在该维中的编号,可以取-32768~32767之间的整数。每维之间的数字用逗号隔开,每一堆开始和结束的编号用两个小数点隔开。如果有一维有N个元素,该维的起始元素和结束元素的编号可以采用1和N,例如ARRAY [1..100]
4、结构 结构(STRUCT)可以是不同类型的数据组合,可以用基本数据类型、负载数据类型(包括数组和结构),和用户定义数据类型(UDT)做为结构的元素,例如一个结构可以由数组和结构组成,结构可以潜逃8层。用户可以把过程控制中有关数据统一组织在一个结构中,作为一个数据单元来使用,而不是使用大量单个的元素,为统一处理不同类型的数据和参数提供了方便。 5、用户定义数据类型 用户定义数据类型(User-Defined Data Types)简称UDT,是一种特殊的数据结构,用户只需要对它定义一次,定义好了可以在用户程序中作为数据类型使用,可以用它来产生大量的具有相同数据结构的数据块,用这些数据来输入用于不同目的的实际数据。例如生成用于颜料混合配方的UDT后,可以用它来生成用于不同颜色配方的数据组合。用户定义数据类型有基本数据类型和复杂数据类型组成。定义好以后可以在符号表中为它指定一个符号名,使用UDT可以节约录入数据的时间。 举例说明: 1、数组的生成和使用 (1)生成数组 可以在数据块中定义数组,也可以在逻辑块的变量声明表中定义它。下面介绍在数据块中定义的方法,在SIMATIC管理器中用菜单命令:【插入】-【S7块】-【数据块】生成数据块DB3,双击打开DB3,默认显示方式为声明视图方式如下图所示:声明视图用于定义、删除和修改共享数据块中的变量,指定它们的名称、数据类型和初始值。行和后一行标有STRUCT和EDN_STRUCT,这两行中间有一个自动生成的临时占位符变量。
按如下图输入
在类型INT所在行的地址列自动生成*2.0,表示一个数组占用2B,地址列+12表示该数组的6个元素一共占用12B,地址列的内容自动生成,可以给每个变量加上注释,数组个元素维press[1,1],第6个元素为press[2,3], (2)给数组元素赋初始值 Step7根据变量的数据类型给出默认的初始值,用户可以修改初始值,定义数组时可以在ARRAY所在的行的初始值中给元素赋初始值,如上图所示。执行菜单命令【视图】-【数据视图】,切换到数据视图方式,将显示数组和结构中个元素的初始值和实际值如下图所示
(3)访问数组中的数据 例如:”TANK” .press[2,1]。其中TANK是数据块DB3的符号名,press是数组名称,它们用英语的句号分开。方括号中的是数组元素的下表,该元素是数组的第4个元素如下图。
(4)用数组传递参数,如果在块的变量声明表中声明形参的类型为ARRAY,可以将整个数组作为参数来传递,在调用块时可以将每个数组元素赋值给统一数据类型的参数,如下图。
(5)用数组定义数据块的大小 数据块的大小与数据块中定义的变量的个数和数据类型有关,如果需要一个容量很大的数据块,可以用数组来定义数据块的大小,如果在数据块中只定义一个数组ARRAR[1..500],数组元素的数据类型为字,则该数据块的大小为100B。可以用地址和任意的简单数据了诶行来方位该数据块中的存储单元。若方位数据块中未定义的地址,将会出现错误信息“读取时发生区域长度错误”。 (6)设置数据块参数:鼠标右键点击数据块,选择对象属性,出现如下图所示,具体如何设置参见帮助。
(7)使用程序状态功能监视数据块 点击数据块工具栏上的监视按钮,自动切换到“数据视图”显示方式,数据块内的存储单元在线的数值在实际值列中显示,程序状态被激活后,不能切换“声明视图”方式。 2、结构的生成和使用 (1)结构的生成 可以在数据块中或逻辑块的声明表中定义结构,下面介绍在数据块中定义的方法,在上面DB3数据块中,再定义一个结构,名为stack的结构由3个不同数据类型的变量组成。如下图所示:
在“ARRAY”下面的INT,按回车键,在该单元下面生成一个空白行,在名称输入stack,在类型列单元点右键选择复杂数据类型,选择STRUCT,(也可以直接输入STRUCT),按回车后再改行下面出现新的行,按如图输入。在END_STRUCT点回车,在出现的新的行中定义一个名为fault的字符串,如上图所示,字符串长度占20个字符 在上图中stack所在行的地址列中的+12表示结构在数据块中的起始地址为DBB12,结构中各元素的地址列中的+2.0等表示在结构中的相对起始地址,=8.0表示该结构一共占用8B,后一行地址行的=42.0表示DB块中的数组、结构和字符串一共占用42B, (2)访问结构中的元素 可以用结构中的元素的地址或符号地址来访问结构中的元素,访问结构中的数据时,需要指出结构所在的数据块的名称、结构名称,以及结构元素名称,数据块tank内结构stack的元素amount应表示为”tank”.stack.amount。因为amount从数据块tank(DB3)的第12号字节开始存放,它的地址为DB3.DBW12. (3)用结构传递参数 如果在块的变量声明表中,声明形参的类型为数组或结构,可以将整个数组或结构而不是它们的每个元素作为参数来传递,调用块时也可以将某个数组或结构的元素赋值给同一类型的参数。 将复杂数据类型的变量作为参数传递时,作为形参和实参的两个变量必须具有相同的数据结构,例如两个结构应具有相同数据类型的结构元素和相同的排列顺序。 3、用户定义数据类型的生成和使用 在SIMATIC管理器的左面窗口”块“,执行菜单命令【插入】-【S7块】-【数据类型】,生成新的UDT,在生成UDT的元素时,可以设置它的初始值和加上注释,如下图
从表面上看UDT1与stack完全相同,但是它们有本质区别。 结构(STRUCT)是在数据块声明视图方式或逻辑块的变量声明表中与别的变量一起定义的,但是UDT必须在特殊的数据块内单独定义,并单独存放在一个数据块中。生成UDT后,在定义变量时将它作为一个数据类型来多次使用,例如:在变量声明表中定义一个变量,其数据类型为UDT1,名称为ProData如下图
上图可以看出,UDT在数据块中的使用方法与其他数据类型(如INT)是一样的。 UDT可以在逻辑块(FC、FB、OB)的变量生命表中作为基本数据类型或复杂数据类型来使用,或者在数据块(DB)作为变量的数据类型来使用。
|