起订量:
咸阳西门子PLC代理商
咸阳西门子PLC代理商
数据块定义在S7 CPU存储器中,用户可在存储器中建立一个或多个数据块。每个数据块可大可小,但CPU对数据块数量及数据总量有限制,如对于CPU314,用作数据块的存储器多为8 KB(8192 B),用户定义的数据总量不能超出这个限制。对数据块必须遵循先定义后使用的原则,否则,将造成系统错误。
1. 定义数据块
在编程阶段和运行程序中都能定义数据块。大多数数据块是在编程阶段用STEP 7开发软件包定义的,定义内容包括数据块号及块中的变量(包括变量符号名、数据类型以及初始值等),定义完成后,数据块中变量的顺序及类型决定了数据块的数据结构,变量的数量决定了数据块的大小。数据块在使用前,必须作为用户程序的一部分下载到CPU中。
如果确实需要,还可以在程序运行中动态定义一个数据块。动态定义时,数据块号是自动产生的,数据块在存储器中的位置是动态分配的。由于要定义的数据块有可能大于CPU存储器(用于数据块的部分)的剩余空间,因此动态定义过程有可能失败
概述
S7-200系列PLC适用于各行各业,各种场合中的检测、监测及控制的自动化。S7-200系列的强大功能使其无论在独立运行中,或相连成网络皆能实现复杂控制功能。因此S7-200系列具有*的性能/价格比。
拿三菱比较有优势的小型机FX系列和西门子S7-200系列比
1、 三菱的编程软件从早期的FXGPWIN到近期的GX8.0(我所知道的),和所有的日系品牌一样,该软件的编程思路是自上而下的单一纵向结构,而西门 子的MicroWIN则是纵向和横向兼备的结构,而且子程序支持局部变量,相同的功能只需要编一次程序即可,大大减少了开发难度和时间
2、S7-200一直以来支持强大的浮点运算,编程软件直接支持小数点输入输出,而三菱直至近年推出的FX3U系列才有此种功能,以前的FX2N系列的浮点功能都是假的
3、S7-200的模拟量输入输出程序非常简单方便,AD、DA值可以不需编程直接存取的,三菱的FX2N及其以前的系列都需要非常繁琐的FROM TO指令。FX3U如今倒支持此功能了,但足足晚了五年甚至更多
4、CPU226和CPU224XP,标准配置2个485口即PPI口,通讯速度187.5K,三菱FX3U之前的所有系列都是一个可怜的422口,而且速度是9.6K。如果需要连个智能仪表什么的则必须另购FX2N0-485BD等特殊模块
5、CPU226的程序容量20K,数据容量14K,FX2N总共才8K.后来的3U倒是有所改进 但三菱的FX2N系列有两个优势,一是高速计数器指令比S7-200方便 二是422口比西门子的PPI口皮实(因为200系列的PPI口是非光电隔离的,非规范操作和仿制的编程电缆可能会导致串口损坏) 西门子近推出的S7-1200系列直接支持以太网接口,而且由于集成了计数和测量、闭环控制和运动控制的工艺,因此FX3U再次被西门子远远超越 以上的比较仅仅是小型机 至于西门子的300和400系列以及更大型的TDC系列,这里就无需多言了,一句话,谁用谁知道
西门子的PCS7软件是博大精深的,所有的日系品牌都只能望其项背 学PLC,三菱是很容易上手的,因为直来直去思路简单 但从学习的角度讲,肯定是西门子更好 还是那句话,用了PCS7,才知道日系的软件是垃圾】
还有西门子PLC的通口有两个,三菱的有一个,两个通口可以一个连接下载数据线一个连接触摸屏进行调试程序,否则你就要拔下触摸屏数据线再连接触摸屏数据线来回调整程序非常麻烦
西门子plc s7-200调试的步骤是什么? 西门子plc检查接线
用万用表诸根检查面板上按钮、指示灯、转换开关到端子排的接线;端子排到plc输入输出端子的接线;电源到plc、触摸屏的接线。plc之间、plc和触摸屏之间的通讯线缆制作和插接。
确保做到以下几点:
1. 所有接线牢固、无松动,无短路:所有电源正(l)接点不得与电源负(n)相导通,无断路:所有同一回路中不经过触点和用电器的的线接点应导通,线号正确,标识便于理解。
2. 电源正负(l和n)接线正确、无颠倒,所有电源电压应符合用电器电压允许范围。
3. 传感器、用电器回路接线正确:保证回路由电源正(l)到触点或io接口再到用电器或传感器(包括端子排预留接口)再回到电源负(n)。
4. 各类传感器或用电器接线方式正确:两线制、四线制电流信号传感器、热电阻传感器,继电器线圈和触点等接线符合接线标准和电气原理。
发现接线有不当或错误之处,立即纠正。
西门子plc系统上电
依次进行一下检查,如发现问题,马上查找原因解决。
1. 测量电源输入电压在允许范围内后,系统上电。
2. 测量开关电源输出电压是否正常。
3. 观察plc电源指示灯是否正常,触摸屏是否正常开机并显示。
4. 按下按钮、转动转换开关、短接相应触点或端子排开关量输入预留接口,观察plc模块的di对应指示灯是否点亮,亮度是否正常,有无闪烁。
5. 短接plc模块do输出接口和电源漏极或源极模拟do输出,观察对应继电器是否吸合,吸合是否可靠。
6. 将端子排模拟量输入接口接入信号源(四线制电流)或测试用传感器(两线制电流、热电阻等),用万用表测量信号是否正常,是否符合信号范围,线性变化是否正常。
西门子仿真测试程序和组态画面
将编写好的plc控制程序和触摸屏及上位机组态画面用仿真软件和编写的模拟运行程序进行仿真测试。确保做到:
1. plc程序io变量与实际plc模块地址对应正确。
2. plc程序各子程序功能可行且可靠,模拟能考虑到的各种现场情况并测试它们对程序运行产生的影响,修改完善子程序功能。模拟并排查程序运行一段时间可能产生的问题(如数据溢出,寻址错误,死循环等)。尽量使子程序代码健壮,重用性强,同时优化程序执行时间。
3. 按照现场可能遇到的各种情况模拟测试整个控制程序的运行,包括手动单独控制、手动一键控制、自动控制等,确保程序运行可靠、稳定。
4. 触摸屏和上位机组态画面建立的外部变量地址与plc程序中的相应变量对应正确,将组态项目集成到plc项目中,这样plc的变量可以导入到组态项目中,避免重复工作,减少错误(不适用于小型触摸屏)。
5. 结合plc程序和仿真软件模拟测试组态画面中的动画效果和数值、文字显示以及各种按钮、控件的功能。测试报表、趋势、报警信息等功能是否正常。
西门子下载程序和组态画面并调试通讯
1. 检查上位机与plc的通讯设置是否正确,向plc下载程序。检查plc之间的通讯设置和plc模块的地址拨码开关设置和dp插头上拉电阻设置,观察plc通讯指示灯是否正常。通过上位机监控测试plc之间通讯是否成功。
2.访问数据块
在用户程序中可能定义了许多数据块,而每个数据块中又有许多不同类型的数据,因此,访问时需要明确数据块号和数据块中的数据类型与位置。根据明确数据块号的不同方法,可以用多种方法访问数据块中的数据。
直接在访问指令中写明数据块号,如:
L DB5.DBW10
T DB10.DBW20
L Motor_1.Speed 符号地址
另一种方法是“先打开后访问”。在访问某数据块中的数据前,先“打开”这个数据块,也就是将数据块号(数据块的起始地址)装入数据块寄存器。这样,存放在数据块中的数据就可利用数据块起始地址加偏移量的方法来访问。如:
OPN DB5
L DBW10
OPN DB10
T DBW20
在打开一个数据块时,先打开的数据块会自动关闭(没有专门的数据块关闭指令)。由于有两个数据块寄存器(DB和DI寄存器),因此,多可同时打开两个数据块。一个作为背景数据块,数据块的起始地址存储在DI寄存器中;另一个作为共享数据块,数据块的起始地址存储在DB寄存器中。打开背景数据块,在调用FB时可以自动实现。由于调用FB时使用DI寄存器,因此,一般不在FB程序中用OPN DI n指令打开数据块。
3. 背景数据块和共享数据块
背景数据块和共享数据块有不同的用途。任何FB、FC或OB均可读写存放在共享数据块中的数据。背景数据块是FB运行时的工作存储区,它存放FB的部分运行变量。调用FB时,必须一个相关的背景数据块。作为规则,只有FB块才能访问存放在背景数据块中的数据。
一般情况下,每个FB都有一个对应的背景数据块,一个FB也可以使用不同的背景数据块。如果几个FB需要的背景数据*相同,为节省存储器,则可以定义成一个背景数据块,供它们分别使用。通过多重背景数据,也可将几个FB需要的不同的背景数据定义在一个背景数据块中,以优化数据管理。各数据块在CPU的存储器中是没有区别的,只是由于打开方式不同,才在打开时有背景数据块和共享数据块之分。原则上,任何一个数据块都可以当作共享数据块或背景数据块使用,实际上,一个数据块由FB当作背景数据块使用时,必须与FB的要求格式相符。
数据结构
STEP 7数据块中的数据结构形式比较丰富,数据块中的数据既可以是基本数据类型,又可以是复式数据类型。所谓复式数据类型,是指位数超过32位的数据或由其它数据类型构成的数据组。基本数据类型在第4章中已有过介绍,本节专门说明复式数据类型。STEP 7允许4种复式数据类型,如表5.5所示。
名 称 类 型 说 明
日期-时间 DATE_AND_TIME 长度为8 B(64位)。按BCD码格式顺序存储以下信息:年(字节0)、月(字节1)、日(字节2)、小时(字节3)、分(字节4)、秒(字节5)、毫秒(字节6和7的高半字节)、星期(字节7的低半字节)
字符串 STRING 字符串是一组ASCII码,一个串内可定义多254个字符,占用256 B内存。串中每个字符占用1 B,内存中头两个字节存储串的长度信息。*个字节存放此串的定义长度(默认值为254个字符),第二个字节存放字符串实际长度。例如,String[7]定义长度为7的字符串,占用内存9 B(2+7)。若不定义长度,则默认为254个字符
数组 ARRAY 由一种数据类型组成的数据集合,数据类型可以是基本数据类型或复式数据类型。通过下标访问数组中的数据。可定义到6维数组
构造 STRUCT 由多种数据类型组成的数据集合
另一种复式数据类型称为“用户数据类型(UDT)”,它是利用STEP 7“程序编辑器”产生的,可命名构造。将大量数据组织到UDT中,在生成数据块或在变量声明表中声明变量时将变得更加方便。用户还可为UDT声明符号名。
日期-时间数据类型的名称、位数及格式是由操作系统定义的,用户不可改变,并且该类型在S7-300中必须用标准功能块SFC才能访问。其它复式数据类型则由用户在逻辑块变量声明表或数据块中定义。
1. 数组
一个数组将同种数据类型组合成整体,但不能建立数组的数组。图5.4表示一个二维 整数数组。数组的符号名是“Op_temps”,用符号名加下标可访问数组中的数据。以图5.4为例,*个整数是Op_temps[1,1],第三个为Op_temps[l,3],第四个为Op_temps[2,1],第六个为Op_temps[2,3]。
1) 建立数组
在数据块或变量声明表中可定义数组。在声明数组时,首先给数组命名,接着使用关键字(ARRAY),然后在方括号中给出数组的大小及维数。可以定义多达6维的数组,并用下标来标识数组的大小。在方括号中放下标,各维之间用逗号隔开,每一维的首尾之间用双点隔开。一个下标可以为任何一个整数值(范围:-32 768~+32 767),并包括负数。如用ARRAY[1‥3, 1‥2, 1‥3, -2‥3, 30‥32, 1‥4]来定义变量Op_temps为6维数组。该数组的*个整数为Op_temps[1, 1, 1, -2, 30, 1];后一个为Op_temps[3, 2, 3, 3, 32, 4]。图5.5显示了建立名字为Heat_2×3的二维数组(与图5.4中的数组相似)。
2) 赋初始值
在建立数组时,STEP 7允许以两种方法给数组的元素赋初始值。对图5.5中的数组,可以为6个元素赋初始值:17,23,-45,556,3342,0;若初始值中有顺序相同的元素,写法可以简化,如要数组的头两个元素设特定数值,其余4个为10,则可简写为17,23,4(10),其中4为重复系数,10为要重复的数值。
3) 访问数组
利用数组中元素的下标可以访问数组数据,这时数据块、数组符号名及下标一起 使用。如图5.5中声明的数组在DB20(符号名:MOTOR)的*个字节处开始,用以下地址访问数组中的第二个元素:
MOTOR. Heat_2×3[1,2]
4) 利用数组传递参数
将数组作为参数传递时,要求形式参数和实际参数必须有同样的数据组织结构、相同 的数据类型,并按相同的顺序排列。
2. 构造
构造将不同数据类型组合成一个整体,见图5.6。构造的元素可以是任何基本数据类型或复式数据类型,有数组或构造元素的构造能嵌套8层。因此,STEP 7允许用户将过程中的各种关联数据统一组织在一个构造中,也为统一处理不同类型数据或参数提供了可能性
1) 建立构造
构造(STRUCT)只能在数据块或变量声明表中定义。图5.7所示为由整数(存放数量)、字节(存放原始数据)、字符(存放控制码)、浮点数(存放温度)、布尔数(完成标志信号)组成的构造。该构造的名称为Stack_1。
2) 赋初始值
按每个元素的类型和名称给构造的每个元素赋初始值。并将其写入图5.8中Initial Value(初始值栏)的相应行中。例如,可以分配如下初始值:
Amount=0
Original_data=B#l6#0
Control_code=“Z”
Temperature=98.6
End:=FALSE
3) 访问构造
(1) 用符号地址访问:如MOTO.Stack_1.Temperature,其中,MOTO为构造所在数据块DB20的符号名。
(2) 用物理地址访问:如Stack_l从DB20的字节0开始存放,Amount的物理地址是DB20.DBW0,Temperature的地址为DB20.DBD4。
4) 利用构造传递参数
构造可以作为参数来传递。将构造作为参数传递时,要求形式参数和实际参数必须有同样的数据组织结构、相同的数据类型,并按相同的顺序排列。
3. 用户数据类型
STEP 7允许将基本数据类型或复式数据类型组合成用户自己定义的数据类型,这种类型称为用户数据类型或UDT。用户数据类型必须首先单独建立,并存放在称为UDT的特殊数据块中,见图5.8。
图5.8是用“程序编辑器”建立的一个UDT,其数据组织结构与图5.7相同,该用户数据类型被定义为UDT200,并单独存储在被称为UDT200的特殊块中。也可以为UDT200建立符号名(如process_data),但是,命名只能在符号表中进行。图5.9给出了一个使用UDT定义数据块(如DBl0)的例子,数据块DBl0中定义两个变量,一个为整型,另一个为用户数据类型(UDT200)。从图中可以看出,数据块中UDT的用法与基本数据类型的用法类似。
用符号地址或物理地址两种方式可以访问UDT中的变量。例如,在DB10中定义了图5.9格式的数据,DB10的符号名为Process,访问Amount变量可分别写为DB10.DBW 2或Process.Stack_2.Amount。
建立用户数据类型的目的是为了将UDT作为一种数据类型使用,以方便定义多个结构相同的构造变量。图5.9建立的Stack_2与图5.7建立的Stack_1相比,不仅大小结构*相同,而且对Stack_1和Stack_2中元素的访问方法也*相同。在建立DB10时,由于使用了UDT而使得数据块建立过程方便快捷。在多处使用同样的UDT时,这一优点将更加突出。
程序结构设计
STEP 7不仅从不同层次充分支持合理的程序结构设计,而且也简化了结构设计的复杂程度。
一个复杂的自动化过程可以被分解并定义为一个或多个项目(PROJECT);而对于每个项目,又可以进一步分解并定义给一个或多个CPU,每个CPU都有一个控制程序(CPU_PROGRAM)。图5.10显示了一个样本过程,它分成4个不同的项目:项目1和项目2只有一个CPU,而项目3和项目4有多个CPU。这样,一个很复杂的控制任务的结构设计,就被简化为各个CPU程序的结构设计。项目间或项目中的各CPU程序之间,能以某种方式联网,实现信息共享。如在S7协议支持下,用MPI网以全局数据通信的方式可方便地建立起联系,实现一个项目中各CPU共享信息
典型的情况是一个过程控制任务只有一个项目,该项目下也仅有一个CPU程序,每一个CPU程序又可依据时间特性或事件触发特性的差异分类编入不同的组织块(OB)中。例如,需要以固定时间间隔循环执行的那部分程序编入组织块OB35中,为PLC正常运行而需进行初始化的程序编入组织块OBl00中。又如,由硬件触发的中断服务程序编入组织块OB40中,对程序执行中产生的同步错误的响应处理程序编入组织块OB121或OB122中。
咸阳西门子PLC代理商