5 S7-200可编程控制器 编程
S7--200周而复始地执行应用程序,控制一个任务或过程。利用STEP 7--Micro/WIN可以创建一个用户程序并将它下载到S7--200中。STEP 7--Micro/WIN软件中提供了多种工具和特性用于完成和调试应用程序。
主要内容 5.1 设计一个微型PLC系统的指导原则 5.2 程序的基本组件 5.3 用STEP 7--Micro/WIN创建用户程序 5.4 选择SIMATIC和IEC 1131--3指令集 5.5 理解程序编辑器中使用的惯例 5.6 使用向导帮您创建控制程序 5.7 S7--200中的出错处理 5.8 在数据块中指定地址和初始值 5.9 用符号表来定义变量的符号地址 5.10 使用局部变量 5.11 用状态图来监视用户程序 5.12 创建一个指令库 5.13 应用程序的调试
5.1 设计一个微型PLC系统的指导原则 1 分解控制过程或者机器 2 创建功能说明 3 安全电路的设计 4 指定操作员站 5 创建配置图 6 建立符号名表(可选)
1 分解控制过程或者机器 将控制过程或者机器分解成相互独立的部分。分解决定了控制器之间的界限,并将影响功能描述和资源的分配。
2 创建功能说明 写出过程或者机器每一部分的操作描述。它包括以下内容:I/O点、操作的功能描述、每个执行机构(例如线圈、电机和驱动器等)在动作之前需要满足的状态、操作员接口的描述以及过程或机器与其他部分的接口。
3 安全电路的设计 识别要求设计硬件安全线路的设备。控制设备在不安全的条件下出现故障,会造成不可预料的启动或者机器操作的变化。在不可预料或者不正确的机器操作会造成人身伤害或严重的财产损失的场合,应该考虑采用独立于S7--200的机电超驰控制来防止不安全的操作。在设计安全电路时,应考虑以下几点:
识别有可能不合适或者不可预料操作有可能会造成危害的执行机构。 识别确保操作不发生危害的条件,并决定如何独立于CPU来检测这些条件。 识别上电或断电时,CPU和I/O对过程有何影响,识别错误何时被检测出来。这个信息只能用于常规的和可以预料的异常操作,不能用于保障安全的目的。 设计独立于CPU的手动或机电超驰控制来阻止危险的操作。 向CPU提供独立电路的状态信息,便于程序和操作员界面得到需要的信息。 识别其它与过程安全操作相关的安全要求。
4 指定操作员站 根据功能描述的要求建立操作员站的配置图。包括如下内容: 与过程或者机器有关的每个操作员站的位置总图。 操作员站 与CPU或扩展模块有关的电气图
5 创建配置图 根据功能描述的要求建立控制设备的配置图。包括如下内容: 和过程或者机器有关的每个CPU的位置图。 CPU和扩展I/O模块的机械布局图(包括控制柜和其它设备)。 每个CPU和扩展模块的电气图(包括设备型号、通讯地址和I/O地址)。
6 建立符号名表(可选) 如果选择了符号名寻址,需要对绝对地址建立一个符号名表。符号名表不仅包括物理输入/输出信号,还包括程序中用到的其它元件。
5.2 程序的基本组件 一个程序块由 可执行代码和注释组成。 可执行代码由 主程序和若干子程序或者中断服务程序组成。 可执行代码被编译并下载到S7--200中,而程序注释不会被下载。您可以使用组织组件(主程序、子程序和中断服务程序)来结构化您的控制程序。 以下例子程序包括一个子程序和一个中断服务程序。该例子程序使用一个定时中断,每100 ms读一次模拟量的输入值。
⑴主程序 ⑵子程序 主程序中包括控制应用的指令。S7--200在每一个扫描周期中顺序执行这些指令。主程序也被表示为OB1。 子程序是应用程序中的可选组件。只有被主程序、中断服务程序或者其它子程序调用时,子程序才会执行。当希望重复执行某项功能时,子程序是非常有用的。与其在主程序中的不同位置多次使用相同的程序代码,不如将这段程序逻辑写在子程序中,然后在主程序中需要的地方调用。
⑶中断服务程序 中断服务程序是应用程序中的可选组件。当特定的中断事件发生时,中断服务程序执行。可以为一个预先定义好的中断事件设计一个中断服务程序。当特定的事件发生时,S7--200会执行中断服务程序。 中断服务程序不会被主程序调用。只有当中断服务程序与一个中断事件相关联,且在该中断事件发生时,S7--200才会执行中断服务程序。
其它块中也包含了S7--200的信息。当下载程序时,可以选择同时下载这些块。 ⑷程序中的其它组件 其它块中也包含了S7--200的信息。当下载程序时,可以选择同时下载这些块。 系统块 系统块允许您为S7--200配置不同的硬件参数。 数据块 数据块存储应用程序中所使用的不同变量值(V存储器)。可以用数据块输入数据的初始值。
5.3 用STEP 7--Micro/WIN创建用户程序 要打开STEP 7--Micro/WIN,可以双击STEP 7--Micro/WIN图标,也可以在命令菜单中选择开始 >SIMATIC > STEP 7 MicroWIN 32 V4.0。如图5-1所示,STEP 7--Micro/WIN项目窗口为创建控制程序提供了一个便利的工作环境。 工具栏提供有常用的菜单命令的快捷按钮。可以显示或者隐藏任意工具栏。
操作栏为访问STEP 7--Micro/WIN中不同的程序组件提供了一组图标。 指令树显示了所有的项目对象和创建控制程序所需要的指令。可以将指令从指令树中拖到应用程序中,也可用双击指令的方法将该指令插入到程序编辑器中的当前光标所在地。
程序编辑器中包括程序逻辑和局部变量表。可以在局部变量表中为临时的局部变量定义符号名。在程序编辑器的底部有子程序和中断服务程序的标签。点击这些标签,可以在主程序、子程序和中断服务程序之间切换。
STEP 7--Micro/WIN提供三种编辑器来创建用户程序:梯形图(LAD)、语句表(STL)和功能块图(FBD)。尽管有一定限制,但是用任何一种程序编辑器编写的程序都可以用另外一种程序编辑器来浏览和编辑。
STL编辑器的特点 STL编辑器按照文本语言的形式显示程序。STL编辑器允许输入指令助记符来创建控制程序。语句表也允许创建用LAD和FBD编辑器无法创建的程序。这是因为在使用S7--200的本族语言进行编程,而在图形编辑器中,为了正确地画出图形,必须遵守一些规则。如图5-2所示,文本方式与汇编语言的编程方式十分相象。
S7--200从上到下按照程序的次序执行每一条指令,然后回到程序的开始重新执行。STL使用一个逻辑堆栈来分析控制逻辑。插入STL指令来处理堆栈操作。
LAD编辑器的特点 LAD编辑器以图形方式显示程序,与电气接线图类似。梯形图程序允许程序仿真来自电源的电流通过一系列的逻辑输入条件,决定是否使能逻辑输出。一个LAD程序包括左侧提供能流的能量线。闭合的触点允许能量通过它们流到下一个元素,而打开的触点阻止能量的流动。
逻辑控制是分段的,程序在同一时间执行一段,从左到右,从上到下。图5-3给出了LAD程序的一个例子。不同的指令用不同的图形符号表示。它包括三种基本形式。 触点代表逻辑输入条件,例如;开关、按钮或者内部条件等。 线圈通常表示逻辑输出结果,例如:灯负载、电机启动器、中间继电器或者内部输出条件。 盒表示其它一些指令,例如:定时器、计数器或者数学运算指令。
FBD编辑器的特点 FBD编辑器以图形方式显示程序,由通用逻辑门图形组成。在LAD编辑器中看不到触点和线圈,但是有等价的、以盒指令形式出现的指令。 图5-4中给出了FBD程序的一个例子。 FBD不使用左右能量线,因此“能流”这个术语用于表示通过FBD逻辑块控制流这样一个类似的概念。
逻辑“1”通过FBD元素称为能流。能流的原始输入和最终的输出可以直接分配给操作数。 程序逻辑由这些盒指令之间的连接决定。也就是说,一条指令(例如AND盒)的输出可以用来允许另一条指令(例如定时器),这样可以建立所需要的控制逻辑。这样的连接概念使我们可以解决各种各样的逻辑问题。
5.4 选择SIMATIC和IEC 1131--3指令集 大部分PLC产品提供相似的基本指令,但是不同厂商的PLC产品在它们的表示和操作上常常有小的差别。近年来,国际电工委员会(IEC)推出了一个有关PLC编程各个方面的一个全球标准。这个标准鼓励不同的PLC厂商向用户提供与IEC指令集的表示和操作一致的指令。 S7--200提供两种指令集用于完成各种自动化任务。IEC指令集符合PLC编程的IEC 1131--3标准,而SIMATIC指令集是专门为S7--200设计的。
5.5 理解程序编辑器中使用的惯例 STEP 7--Micro/WIN在所有程序编辑器中使用以下惯例: 在符号名前加#(#Var1)表示该符号为局部变量。 在IEC指令中 % 表示直接地址。 操作数符号“?.?”或“????”表示需要一个操作数组态。
LAD程序被分为程序段。一个程序段是按照顺序安排的以一个完整电路的形式连接在一起的触点、线圈和盒,不能短路或者开路,也不能有能流倒流的现象存在。STEP 7--Micro/WIN允许您为LAD程序中的每一个程序段加注释。FBD编程使用程序段的概念对程序进行分段和注释。 STL程序不用分段,但是您可以用关键词NETWORK将程序分段。
LAD编辑器中使用的惯例 FBD编辑器中使用的惯例(省略) 在LAD编辑器中,您可以使用F4、F6和F9来快速输入触点、盒和线圈指令。LAD编辑器使用下列惯 例: 符号“------>>”表示开路或者需要能流连接。 符号“ ”表示指令输出能流,可以级连或串联。 符号“>>”表示您可以使用能流。 FBD编辑器中使用的惯例(省略)
S7--200编程的通用惯例 EN/ENO的定义 EN(使能输入)是LAD和FBD中盒的布尔输入。要使盒指令执行,必须使能流到达这个输入。在STL中,指令没有EN输入,但是要想使STL指令执行,堆栈顶部的逻辑值必须是“1”。 ENO(使能输出)是LAD和FBD中盒的布尔输出。如果盒的EN输入有能流并且指令正确执行,则ENO输出会将能流传递给下一元素。如果指令的执行出错,则能流在出错的盒指令处被中断。 在STL中没有使能输出,但是STL指令象相关的有ENO输出的LAD和FBD指令一样,置位一个特殊的ENO位。这个位可以用AND ENO(AENO)指令访问,并且可以产生与盒的ENO位相同的作用。
5.6 使用向导创建控制程序 STEP 7--Micro/WIN提供向导编程变得更自动更容易。在第6章中,具有相关向导的指令会有以下指令向导图标:
5.7 S7--200中的出错处理 S7--200将错误分为致命错误和非致命错误。可以通过选择PLC > Information菜单命令,来查看因错误而产生的错误代码。 图5-6给出了PLC信息对话框,其中包括错误代码和错误描述。 Last Fatal 区显示S7--200发生的前一致命错误代码。如果RAM区是掉电保持的,这个数据也会保持。当S7--200全清或者RAM区掉电保持失败时,该区也被清除。 Total Fatal区是前一次CPU清除所有存储区后产生致命错误的次数。如果RAM区是掉电保持的,这个次数也会保持。当S7--200全清或者RAM区掉电保持失败时,该区也被清除。
关于错误代码参照SIEMENS公司的手册说明。
5.8 在数据块中指定地址和初始值 数据块编辑器只用于为V存储器(变量存储器)指定初始值。可以以字节、字或者双字的形式来分配V存储器,注释是可选的。 数据块编辑器是一个自由格式的文本编辑器,也就是说,没有特定的区域被定义用于特定类型的信息。当完成一行的输入并按回车键确认后,数据块编辑器将该行格式化(将地址、数据和注释分别列对齐,V存储器地址大写)并重新显示。按下CTRL--ENTER,设置行完成后,地址将自动增加到下一个可用的地址处。
数据块编辑器根据所定义变量的地址和长度(字节、字或者双字)为V存储器分配空间。 数据块的第一行必须有一个明确的地址分配。接下来的行中可以是明确的地址,也可以使用隐含地址。隐含地址是由编辑器分配的。当在一个地址后面输入多个数据或者在一行中只输入数据时使用的是隐含地址。 数据块编辑器接受大小写字母,并且用逗号、制表符或者空格作为地址与数据之间的分隔符。
5.9 用符号表来定义变量的符号地址 符号表允许定义和编辑符号名,使得能在程序中用符号地址访问变量。可以创建多个符号表。也可以在程序中使用系统定义的符号表。符号表还可以作为全局变量表进行参考。 可以使用绝对地址或者符号地址来输入指令操作数。绝对地址用存储区加上位或字节地址来标识地址。符号地址则用一串字母组合来标识地址。
在SIMATIC程序中,可以使用符号表中定义的全局符号。在IEC程序中,可以使用全局变量表中定义的全局符号。 为地址定义符号按如下步骤: 1. 在操作栏中单击符号表图标打开符号表。 2. 在Symbol Name列中输入一个符号名(例如:Input1),符号名的最大长度为23个字符。 3. 在Address列中输入地址(例如:I0.0)。 4. 对于IEC的全局变量表,在数据类型列中输入一个值或者从列表中选择一个。 可以创建多个符号表,但无论是在同一个符号表中还是在不同的符号表中,都不能多次使用同一个字符串作为全局符号。
5.10 使用局部变量 可以使用程序编辑器中的局部变量表来为子程序和中断服务程序分别指定变量,如图5--9所示。 局部变量可用于子程序传递参数,它增强了子程序的可移植性和再利用性。
5.11 用状态图监视用户程序 状态图允许在控制程序运行的过程中对过程变量的值进行监视和修改。可以跟踪程序的输入、输出或者变量,显示它们的当前值。状态表还允许强制或改变过程变量的值。 为了监控应用程序中不同部分的元素,可以创建多个状态图。 在命令菜单中选择View > Component > Status Chart或者在操作过程中单击Status Chart图标来访问状态图。
当创建状态图时,应该输入要监控的过程变量的地址。无法监视常数、累加器和局部变量的状态。可以按位或者字两种形式来显示定时器和计数器的值。以位形式显示的是定时器和计数器的状态位,而以字形式则显示定时器和计数器的当前值。
在命令菜单中选择Edit > Insert > Row可以在状态图中插入一行。 建立一个状态图来监视变量,按以下步骤: 1. 在地址区输入需要的地址。 2. 在格式列中选择数据类型。 3. 在命令菜单中选择 Debug > Chart Status来监视S7--200中过程变量的状态。 4. 要连续采样数值或者单次读取状态,可以点击工具栏中相应的按钮。状态图也允许强制或者修改过程变量的值。 在命令菜单中选择Edit > Insert > Row可以在状态图中插入一行。
5.12 创建一个指令库 STEP 7--Micro/WIN允许创建自己的指令库,也允许使用其它人已建好的库。参见图5-11 为了创建指令库,必须创建标准的STEP 7--Micro/WIN子程序和中断服务程序并把它们组合起来。可以在这些程序中隐藏代码来防止意外的改变或者防止机密技术(know--how)泄露。
在STEP 7--Micro/WIN的在线帮助中,可以得到有关指令库的更多信息。 要创建一个指令库,需要完成以下任务: 1. 创建一个标准的STEP 7--Micro/WIN项目,并且把指令库中包括的功能写入一个子程序或者中断服务程序中。 2. 确保在子程序或中断服务程序中使用的V存储器都定义了符号名。使用连续的V存储区来最小化其要求的数量。 3. 将子程序或者中断服务程序更名为希望在指令库中显示的名称。 4. 在命令菜单中选择File > Create Library来编译新的指令库。 在STEP 7--Micro/WIN的在线帮助中,可以得到有关指令库的更多信息。
用下列步骤访问指令库中的指令: 1. 在命令菜单中选择File > Add Libraries在指令树中增加一个库。 2. 选择特定的指令插入程序。(就象使用任何标准指令一样。) 如果库程序要求V存储器,STEP 7--Micro/WIN会提示分配一个存储器块。用库存储器对话框来分配存储器块。
5.13 应用程序的调试 STEP 7--Micro/WIN具备以下特点有助于调试应用程序: 书签允许在很长的程序中方便地来回移动。 交叉参考表允许检查程序的使用参考信息。 RUN模式下编辑允许在小规模修改程序的过程中,对过程控制产生最小的影响。当在RUN模式下编辑程序时,同样可以下载程序块。
谢谢, 欢迎批评指正!