首页 PLC中文手册与结构化文本编程

PLC中文手册与结构化文本编程

举报
开通vip

PLC中文手册与结构化文本编程PLC中文手册与结构化文本编程 第一章 PLC编程人员参考概述 此手册供开放式架构数控系统PA 8000的PLC编程人员参考使用,编程人员在进行 PLC编程之前请仔细阅读本手册。 手册中将介绍如何利用系统中自带的PLC编程工具进行编程,同时介绍编程指令及格式等,手册中的编程格式为ST,其它的编程格式不详细介绍。最后将以一铣床的PLC程序为例加深对程序的理解 为了使手册更加通俗易懂,手册中并没有介绍所有的与PLC相关的内容,用户如有需要可向机床制造商索取专门的介绍资料。希望调试人员能通过对本手册的阅读更快地熟...

PLC中文手册与结构化文本编程
PLC中文手册与结构化文本编程 第一章 PLC编程人员参考概述 此手册供开放式架构数控系统PA 8000的PLC编程人员参考使用,编程人员在进行 PLC编程之前请仔细阅读本手册。 手册中将介绍如何利用系统中自带的PLC编程工具进行编程,同时介绍编程指令及格式等,手册中的编程格式为ST,其它的编程格式不详细介绍。最后将以一铣床的PLC程序为例加深对程序的理解 为了使手册更加通俗易懂,手册中并没有介绍所有的与PLC相关的内容,用户如有需要可向机床制造商索取专门的介绍资料。希望调试人员能通过对本手册的阅读更快地熟练PLC编程。 第二章 PLC-1131-3 DS简介 PLC-1131-S3为PLC编程提供了一个完善的环境,为PLC程序员处理各种程序 提供了一个简单而又功能强大的途径,它的编程和调试基于完善的环境和高级 编程语言(类似与Visual C++)。 2.1 PLC-1131-3 DS功能简介 工程文件的结构: 工程文件的后缀名为pro,在新工程中建立的第一个程序结构单元(Program Organization Unit)将被自动命名为PLC_PRG,这个程序结构单元就类似于C 语言中的主程序。在PLC_PRG中可以调用各种函数及功能块,而函数和功能块都属于程序结构单元。 PLC-1131-3 DS能够区分在同一工程中的不同对象: 程序结构单元(POU) 数据类型(data types) 资源(resources) 工程的设置: 1) 首先应该设置PLC的输入输出以保证工程中使用的地址的准确性。 2)接着建立解决问题的程序结构单元 3) 选择适当的语言编写程序 4) 写好程序之后,对程序进行编译去除程序中的所有错误。 工程的测试: 当工程之中的所有错误被去除之后激活仿真模式,就是与仿真PLC连接,与此同时将工程下载到PLC中,这样 PLC-1131-3 DS就处于在线方式了。 现在能以适当的顺序测试工程了,手动改变输入变量的值,观察输出是否正确。 用PLC-1131-3DS调试程序 当程序发生错误时,你可以设置断点。当处理发生中断时,你就可以及时的在断点处检查所有工程变量的值。工作在单步方式(singlestep)下,可以检验程序的逻辑错误。 你可以强制输入或输出变量的值。使用流控制(flowcontrol)可以知道哪些程序段已经执行。采样轨迹(SamplingTrace)显示变量在长时间的变化过程曲线。 整个工程可以以文本文件的形式导出。 总而言之 PLC-1131-3 DS对于PLC编程是一种完善和方便的工具。 2.2 PLC-1131-3 DS基本概念 此节包括一些重要的概念帮助你熟悉PLC-1131-3 DS 2.2.1工程的组成 工程 (Project) 一个工程包括了PLC程序中所有的对象,工程中包含了如下对象: , 程序结构单元 POUs , 数据类型 data types , 资源 resources , 库函数 libraries 程序结构单元(POU) 函数 (Functions), 功能块(function blocks)和程序(programs)都是程序结构单元(POUs)。 每个POU包括了定义变量和程序主体两个部分。程序主体用IEC编程语言编写,其中包括: 指令 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf (IL) 结构文本 (ST) SFC FBD 梯形图(LD). PLC-1131-3 DS 支持所有的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 IEC程序结构单元。 POUs之间能够相互调用,但是不允许递归调用. 函数(Function) 当定义函数的时候,不要忘记函数中必须含有返回值的数据类型,也就是说 在函数名的后面必需紧跟冒号和一个数据类型。 下面是一个正确的函数定义: FUNCTION INDUAL :INT 就是说函数名被用作输出变量。函数定义的以关键字FUNCTION开始,以 END_FUNCTION 结尾。Example in IL of a function that takes three input variables and returns the product of the first two divided by the third: Image 0.1: Function {bmc bild2_1.bmp} , Example of a function in IL 函数没有任何的内部条件,就是说当用相同的输入变量时就会得出相同的结 果(输出)。 , Examples for calling up the function described above Examples for calling up the function described above: in ST: Result := Fct(7, 2, 4); 程序(Program) 程序是一种程序结构单元,在运行过程中返回一定数量的值。程序在整个工 程中都可以被识别。 {bmc bild2_8.bmp} , Example of a program 程序能够被调用,但不允许在函数中调用程序。如果在程序结构单元中调用 程序时程序的返回值有变化,这些变化将保持到下一次程序调用,即使程序 程序是从其它程序结构单元调用的。 程序由起始关键字PROGRAM开始,END_PROGRAM结束。. , Examples of calls of the program described above in ST: PRGExample; Res := PRGexample.PAR; If the variable PAR from the program PRGexample is initialized by a main program with 0, and then one after the other programs are called with above named program calls, then the RES result in the programs will have the values 1, 2, and 3. If one exchanges the sequence of the calls, then the values of the given result parameters also change in a corresponding fashion. PLC_PRG PLC_PRG 是一个特殊的预先定义的程序结构单元,任何工程都必须含有这个 特殊的程序。每次循环的过程中调用一次PLC_PRG 。 在新工程建立之后第一次执行 "Project" "Object Add" 命令时,程序结构单 元对话框中的初始输入项就是名为PLC_PRG的程序类型。 注意: 不要删除或者重命名PLC_PRG Resources 设置和组织工程所需的资源: , 全局变量 Global Variables , PLC设置 PLC Configuration , 任务配置 Task Configuration , 采样轨迹 Sampling Trace , 观察和接收管理器Watch and Receipt Manager 库函数(Libraries) 库函数"standard.lib"是一个标准的函数库,可供程序进行调用。 第三章 结构文本格式编程语言 在此手册中编程语言以 结构文本编程指令为例,其它的指令格式不作详细介绍。 结构文本编程指令(Structured Text)包括了一系列的编程语句,如条件语句 ("IF..THEN..ELSE"),循环语句(WHILE..DO)等等。 下面就是一个结构文本指令格式的一段小程序 IF value < 7 THEN WHILE value < 8 DO value := value + 1; END_WHILE; END_IF; 3.1 表达式 表达式指操作数被赋值后返回一个确定值的结构。 表达式由运算符和操作数组成,操作数可以是常数、变量 、调用函数或则其它 表达式。 3.2 表达式的计算 根据各种运算符优先级别依次运算得到最后的结果。 具有最高优先权的运算符最先计算,接着计算第二优先级别的运算符... 直到得出最后结果。具有相同优先级别的运算符按照从左到右的顺序计算。 下面给出结构文本的运算符: 运算符 符号 优先级别 括号 (表达式) 最高 函数调用 函数名 (参数) ** 求幂 - 求反 NOT * 乘 / 除 MOD 求余 + 加 - 减 <,>,<=,>= 比较 = 等于 <> 不等于 AND 逻辑与 XOR 异或 OR 逻辑或 最低优先级 3.3 结构文本格式编程格式指令 指令类型 例子 A:=B; CV := CV + 1; C:=SIN(X); 赋值 (Assignment) CMD_TMR(IN := %IX5, PT := 300); 调用功能块或者函数的返回 A:=CMD_TMR.Q 值(Calling a function block and use of the FB output) RETURN; 返回 (RETURN) D:=B*B; IF (条件) IF D<0.0 THEN C:=A; ELSIF D=0.0 THEN C:=B; ELSE C:=D; END_IF; CASE INT1 OF CASE(分支) 1: BOOL1 := TRUE; 2: BOOL2 := TRUE; ELSE BOOL1 := FALSE; BOOL2 := FALSE; END_CASE; J:=101; FOR(循环) FOR I:=1 TO 100 BY 2 DO IF ARR[I] = 70 THEN J:=I; EXIT; END_IF; END_FOR; J:=1; WHILE(循环) WHILE J<= 100 AND ARR[J] <> 70 DO J:=J+2; END_WHILE; J:=-1; REPEAT(重复) REPEAT J:=J+2; UNTIL J= 101 OR ARR[J] = 70 END_REPEAT; EXIT; EXIT(退出) ; Empty instruction(空指令) 用结构文本编程格式编写的程序与其它格式的编程语言相比出错概率低,编写的 程序具有可读性高的特点。 赋值运算 (Assignment operator) 此操作将右边表达式的结果赋给左边的操作数。 符号为 := 例: Var1 := Var2 * 10; 调用功能块(Calling a function block , 结构文本编程格式通过在功能块名后面的括号里分配参数值来调用功能块的功能 在下面的例子中通过分配参数IN和PT的值调用一定时器功能块,它的结果变量的值 被赋给变量A 。 CMD_TMR(IN := %IX5, PT := 300); A:=CMD_TMR.Q 返回指令(RETURN instruction ) 返回指令用来结束函数调用,当条件满足时返回主程序 条件指令(IF instruction) 使用IF指令检验是否满足条件,当条件满足时执行相应的的指令 语法: IF <布尔表达式_1> THEN 2> THEN {ELSIF <布尔表达式_ . . ELSIF <布尔表达式_n> THEN ELSE } END_IF; {}里面的内容是可选的 。 如果<布尔表达式1>的返回值为真 (TRUE),那么只有被执行,而其它的指令 不执行。否则检验<布尔表达式2>的返回值是否为真,这样连续判断<布尔表达式n>的返回值,直到返回值为真时执行对应的指令。如果执行到最后表达式的返回值也没有为真,那么执行。 例: IF temp<17 THEN heating_on := TRUE; ELSE heating_on := FALSE; END_IF; 这段程序控制加热功能的开启和关闭,当温度高于17度时不加热,当温度低于17度时就加热。 分支指令(CASE instruction) 使用分支指令可以将一些具有相同条件变量的指令结合在一个结构中 语法: CASE <变量1> OF <=1>: <指令 1> <=2>: <指令 2> ... <=n>: <指令 n> ELSE END_CASE; CASE指令根据下面的模式处理程序: , 如果,变量,,的值为,,i,,那么执行<指令i>中的指 令。 , 如果没有相应的,变量,,的值,那么执行,ELSE 指 令, , 如果需要几个不同的变量值执行相同的指令,那么可以 将几个变量值写在一起用逗号隔开,后面接需要执行的 指令。 例: CASE INT1 OF 1, 5: BOOL1 := TRUE; BOOL3 := FALSE; 2: BOOL2 := FALSE; BOOL3 := TRUE; ELSE BOOL1 := NOT BOOL1; BOOL2 := BOOL1 OR BOOL2; END_CASE; 循环指令(FOR) <步长Step size>} DO <指令Instructions>使用FOR循环指令可以重复程序处理的过程。 语法: 整形变量INT_Var :INT; FOR <整形变量INT_Var>:= <初始值INIT_VALUE> TO < 终止值END_VALUE> {BY END_FOR; {}中的内容可选的. 只要中的计数值不大于就重复执行 中的指令。在执行指令之前就检验这个条件,如果条件得不到满足就不执行 中的指令。当指令被执行一次之后<整形变量INT_Var>就增加 中的相应值。当得到大于的条件时就 停止循环。 例: FOR Counter:=1 TO 5 BY 1 DO Var1:=Var1*2; END_FOR; Res:=Var1; 我们假设Var1的初始值为1,那么循环结束时变量 Var1的值为32。 循环指令( WHILE loop) WHILE循环指令的用法与FOR循环指令相似,它们的不同之处在于WHILE循环的判断条件有些不同,它可以是任何布尔表达式。也就是说只要满足你给定的条件时,就执行循环指令。 语法: WHILE <布尔表达式> <指令> END_WHILE; 只要<布尔表达式>的返回值为真TRUE,也就是条件满足的时候,<指令>将重复执行 ,直到 <布尔表达式>的返回值为假FALSE。 如果在第一次判断条件时就不满足,那么没有执行一次指令循环就结束了。当<布尔表达式>的返回值始终为真时,指令就无限的循环执行下去,进入死循环状态。这在编程时要尽量避免。 例: WHILE counter<>0 DO Var1 := Var1*2; Counter := Counter-1; END_WHILE WHILE循环和REPEAT循环在某种意义上来说比FOR循环更实用,因为在某种情况下我们不能确定循环的次数,在这种情况下只能用WHILE循环指令或者REPEAT循环指令。但是FOR循环指令的循环次数是一定的,所以用 FOR循环指令编程可以避免死循环的出现。 循环指令(REPEAT loop) REPEAT循环指令不同于WHILE循环指令的地方在于指令执行条件的判定顺序,REPEAT循环指令在判断条件之前就执行指令,也就是说REPEAT循环指令至少可以执行一次而不考虑判定条件。WHILE循环指令就不同,可能指令一次也不执行就终止循环。 语法: REPEAT <指令> UNTIL <布尔表达式> END_REPEAT; 当<布尔表达式>的返回值为真时,就是说判定条件满足的时候就终止循环。 如果<布尔表达式>在第一次检验的时候满足条件,那么整个循环只执行一 次。如果条件始终得不到满足,进入死循环状态,编程时需尽量避免这种情况的发生。 例: REPEAT Var1 := Var1*2; Counter := Counter-1; UNTIL Counter=0 END_REPEAT; 退出指令(EXIT instruction) 如果EXIT指令出现在FOR、WHILE、REPET循环指令里面的时候,循环将不考虑中断条件是否满足就无条件中断正在进行中的循环。 第四章 PLC编程界面、环境和命令 4.1 主窗口 打开 PLC-1131-3 DS的主窗口之后,你可以看到下列元件(从上到下) , 菜单栏 , 工具栏(可选) , 对象管理器,有程序结构单元(POUs)选项卡、数据类型 (Data types) 选项卡、资源(Resources) 选项卡 对象管理和编程区域之间的分隔条 , , 编程区域 , 消息窗口(可选) , 状态栏(可选) 菜单栏(menulbar) 菜单栏位于主窗口的最上面,包括所有的菜单命令 工具栏(toolbar) 通过工具栏可以快速选择执行菜单栏中的一些常用的命令。在激活不同的窗口中时菜单栏中的快捷按钮会有所不同,只需用鼠标单击菜单栏中的快捷按钮就相当于执行了菜单栏中的命令。如果将鼠标放在工具栏的按钮上一段时间,会显示出该命令的名称。工具栏是可选的,如果不需要显示工具栏的时候,你可以将"Project"菜单下"Options"目录中的Desktop选项中toolbar去除 为了方便说明,用"Project""Options"表示"Project"菜单下"Options"命令。 对象管理器(Object Organizer) 对象管理器位于主窗口的左边。在对象管理器的下面有4个选项卡, POUs, Datatypes和Resources,用鼠标单击不同的选项卡就改变了相应的对象类型。在说明书的后面将介绍如何建立、删除对象,怎么在对象管理器中管理各种对象。 屏幕分隔栏(Screen divider) 屏幕分隔栏是两个不重叠窗口的分界线,在PLC-1131-3 DS中在对象管理器 窗口与编程区窗口之间有一个屏幕分隔栏。编程区里面的定义变量窗口与程序主体窗口之间也有一屏幕分隔栏。你可以按鼠标左键移动屏幕分隔栏。 编程区域 (Work space) 编程区域位于主窗口的右侧,所有的对象编辑和函数库管理操作都是在这个区域进行操作的。PLC-131-3 DS的程序编辑将在说明书的后面作详细介绍。 在"Window"菜单下,你可以找到所有的窗口管理命令。 消息窗口( Message window) 消息窗口在主窗口编程区的下面,它包含了编译、检验和比较的信息。 当程序编译出错时,鼠标双击消息窗口中的一条错误信息,程序将跳转到对应的程序行自动查找错误。你也可以用"Edit" "Next error"和"Edit" "Previous error"命令实现在相邻两个错误之间迅速跳转。 消息窗口的显示是可选的("Window" "Messages"命令). 状态栏 (Status bar) 在PLC-1131-3DS中,状态栏在主窗口的底部。它显示当前工程的信息和菜单 命令的注释。状态栏的的右边以黑字体显示时,表示工程处在该状态下,灰字体则表示该状态未被激活。例如工程工作在在线方式下,Online变成黑颜色,以离线方式运行时Online就变成灰颜色。 在线模式下,你可以知道现在处于模拟方式(SIM),程序正被处理(RUNS),设置断点 (BP),强制变量(FORCE)。状态栏的显示是可选的,通过"Project" "Options"目录下的Desktop选项决定是否显示。 4.2 工程管理 工程管理的命令可以在"File"和"Project"菜单下找到。 "File" "New" 工具栏中的符号: 建立一个空的工程,文件名为"Untitled",当保存文件时必须改变工程名。 "File" "Open" 工具栏中的符号: 打开一个已经存在的工程。 选择菜单或工具栏命令后弹出一对话框,从中选择已经存在的工程文件,文件后缀名为".pro",对话框如下图所示: {bmc bild4_16.bmp} , Dialog box for opening a file "File" "Close" 关闭当前打开的工程。如果工程被修改过,PLC-1131-3 DS将询问是否保存。 "File" "Save" 在工具栏中的符号: Shortcut: + 保存工程中所做的任何修改。 "File" "Save as" 用此命令可将当前的工程保存为另外一个文件,而不改变原始文件。 当运行此命令之后,在弹出保存对话框中选择已经存在的文件名和文件格式或者重新输入一个文件名。对话框如图所示: {bmc bild4_17.bmp} , Dialog box for Save as "File" "Print" 快捷方式: +

打印当前活动窗口。 运行此命令之后,弹出打印对话框选择打印设置,然后点击OK按钮。 打印对话框如下图所示L: {bmc bild4_18.bmp} , Print dialog box 在打印对话框中可以选择打印范围, number of the copies(副本数量)等。单 击Properties(属性)按钮,打开设置打印机的对话框。 你也可以用"File" "Printer Setup"命令决定打印输出的版面格式 当需要打印整个工程的时候,使用"Project" "Document"命令。 "File" "Printer setup" 运行此命令时弹出如图所示的对话框,可以设置打印页的输出格式。 {bmc bild4_19.bmp} , Page Layout Dialog Box 你可以将页面设置保存为后缀名为".dfr"的文件,初始默认文件名为 DEFAULT.DFR。如果希望改变现有的页面设置,你可以单击Browse(浏览)按钮在弹出的对话框中选择希望的页面设置。 "File" "Exit" 快捷方式: + 退出PLC-1131-3 DS系统。 "Project" "Check all" 运行此命令将检查程序的静态错误。 若在程序中发现错误,将在信息窗口中给出出错信息以及出错的行号。 "Project" "Build" 运用此命令将所有作过修改的程序结构单元重建。这样当载入PLC程序的时候,就只需将作过修改的程序传送到PLC中,而其余的程序在PLC中保持不变。 注意:"Build"命令只有在支持在线修改的PLC-1131-3 DS中才起作用,否则"Build"命令的功能与"Rebuild all"命令的功能完全相同,不起实际作用 "Project" "Rebuild all" 此命令用来重新组织所有的程序结构单元。与此同时信息窗口里显示组织过程的进度和发现程序中的错误。 A list of all error messages is to be found in the appendix. {bmc bild4_21.bmp} , Message window of a project 运行"Online""Login"命令时,如果工程经过最后一次编译之后工程作过修改那么会自动执行"Rebuild all"命令。 "Project" "Document" 打印整个工程。完整的文件包括下列元素: , The POUs(程序组织单元), , the contents of the documentation(文件的内容), , the data types(数据类型), , the resources (资源) {bmc bild4_22.bmp} , Dialog box for project documentation "Project" "Export" 导出工程。在PLC-1131-3 DS中工程能被导入和导出,这样就允许与其它 IEC编程系统进行相互转换。 "Project" "Import" 导入工程。 "Project" "Compare" 用此命令可以将已经打开的工程与其它工程作比较。例如你准备保存而又想知道对当前的工程作了哪些修改,就可将打开的工程与上次保存的版本作比较。 当执行此命令时弹出一对话框,从中选择需要与之相比较的工程后,单击 OK按钮。信息窗口中将显示两个工程的不同之处。 有5种显示信息如下所示: , "Unchanged": 对象没有发生变化 , "Deleted": 对象已经不存在与当前的工程中 , "Implementation changed": 程序组织单元的指令部分 发生了变化 , "Interface changed": 对象的定义变量部分发生了变化 , "Interface and implementation changed": 指令和定义 变量部分都发生了变化 在信息上双击将选择对象中的第一个变化。 "Project" "Merge" 运用此命令能够将其它工程中的对象(程序组织单元,数据类型,资源)合并到当前的工程之中。执行此命令时,在弹出的对话框中选择一个工程文件,在接着出现的对话框中选择希望的对象。如果工程中已经存在同名的对象,那么新对象名后加上一短划线和一阿拉伯数字("_1", "_2" ...).。 "Project" "Project info" 在此菜单中可将有关工程的信息保存起来。当执行此命令时,弹出如下图所示的对话框: {bmc bild4_23.bmp} , Dialog box for entering project information 下列的工程信息能被显示: , File name(文件名) , Directory path(保存目录) , Change date(最近一次改动的时间 ) 这些信息不能被改变. 此外,你可以增加下列信息: , A Title of the project(工程主题), , the name of the Author(作者姓名), , the Version number(版本号), , a Description of the project(工程说明) 这些信息是可选的。当单击Statistics按钮时将得到关于工程的整个信息。 {bmc bild4_24.bmp} , Example of project statistics "Project" "Global Search" 在程序结构单元、数据类型或者全局变量的对象中查找文本格式。 当执行此命令时弹出一个对话框,选择希望查找的对象之后单击OK按钮,然后弹出 查找对话框,如果在对象中找到了对应的文本,那么对象被载入适当的编辑器,同时 显示它的位置。 "Project" "Global replace" 在程序结构单元、数据类型或者全局变量的对象中替换文本格式。 4.3建立和删除对象 此节介绍如何对对象进行处理。 Object 程序结构单元,数据类型,资源(包括存取变量,全局变量,变量设置 ,采样轨迹图,任务设置,PLC设置等)都可被称之为对象。为了构造整个工程可以在中间插入文件夹。所有工程对象都可以在对象管理器中找到。 为了使比较大的工程比较明确清楚,可以将程序结构单元,数据类型,资源和全局变量等系统的结合到一起放进一文件夹中。 你可以按照你的需要设立多级文件夹。如果在文件夹的符号的前面有一加号 就说明这个文件夹中包含了对象或者文件夹,用鼠标单击加号就展开这一层文件夹。展开文件夹之后如果单击文件夹符号前面的减号就文件夹就被关闭。其实这里的操作与windows操作方法很相似。可以用鼠标左键拖动对象到其它的地方。可以用"New folder"命令建立更多的文件夹。 注意:文件夹对程序没有影响,只是使工程结构更加清楚明了。 {bmc bild4_27.bmp} , Example of folders in the Object Organizer "New Folder" 用此命令在一个对象中插入一个新的文件夹。如果此时已经选中了一个文件夹,那么此文件夹是被选中文件夹的下级目录文件夹,否则该文件夹是选中文件夹的同级文件夹目录。 选中对象管理器中的某个对象,用鼠标右键单击该对象后弹出context menu , 其中包含了一些常用的有关对象的命令。 "Expand nodes" 展开选中的目录文件夹,相当于用鼠标左键单击文件夹左面的加号。 "Collapse nodes" 合并已经展开的文件夹目录,相当于用鼠标左键单击文件夹符号左边的减号 "Project" "Object Delete" 快捷方式: 用此命令将选中的对象或者包含几个对象的文件夹从对象管理器中删除。为了安全,系统将询问是否确定从工程中删除此对象,确定之后删除对象。如果用"Edit" "Cut"命令,对象被剪切到粘贴板中。 "Project" "Object Add" 快捷方式: 用此命令建立一个新对象。对象的类型(程序结构单元、数据类型、全局变量等)依赖于在对象管理器中选择的选项卡。在弹出的对话框中输入新对象的名称,且不能与已经存在的文件同名。 如果处理的是程序结构单元,还需选择程序结构单元的类型(程序、函数和功能块)和编程的语言格式。 {bmc bild4_28.bmp} , Dialog box for creating a new POU 如果使用Edit" "Paste"命令将对象从粘贴板中粘贴出来时,就不会弹出对话框。 "Project" "Object Rename" 快捷方式: 用此命令重命名当前选中的对象。对象名不能与已经存在的文件同名。 {bmc bild4_29.bmp} , Dialog box for renaming a POU "Project" "Object Convert" 此命令只能用于程序结构单元,可以将SFC, ST, FBD, LD,和IL编程格式的程序结构单元转换成IL, FBD, 和LD编程格式。 转换之前工程必须经过编译,选择要转换成的编程语言格式之后给程序结构单元重新命名,且不能与已存在的文件同名。接着用鼠标左键单击OK按钮就完成了转换。 {bmc bild4_30.bmp} , Dialog box for converting a POU "Project" "Object Copy" 此命令将选中的对象复制到希望的结构程序结构单元中,且可以以新的名称保存,新的文件名在弹出的对话框中输入。 如果使用"Edit" "Copy"命令将对象复制到剪贴板中,就不会弹出相应的对话框。 {bmc bild4_31.bmp} , Dialog box for copying a POU "Project" "Object Open" 快捷方式: 打开选中的对象。也就是将选中的对象载入到对应的编辑器中。另外还可以用鼠标双击要打开的对象将对象打开。 {bmc bild4_32.bmp} , Dialog box for choosing the object to be opened "Project" "Object Access rights" 此命令打开对话框分配不同用户组对对象的读写权力。对话框如下图所示 {bmc bild4_33.bmp} , Dialog box for assigning access rights 共有三种不同的设置: , No Access: 用户组的成员可以打开对象。 , Read Access:用户组的成员能够打开对象并且读取对象 的内容,但是不能修改对象的内容。 , Full Access: 用户组的成员可以打开对象,并且可对对 象进行读取和修改。 此设置相对于在对象管理器中选中的对象,如果选中Apply to all 选项,设置就 运用于工程中所有的程序结构单元、数据类型和资源。设置用户组的密码,那 么当该用户组中的成员输入正确的密码后就可对对象进行相应的操作。 "Project" "View instance" With this command you can open and show single instances of function blocks. The function block whose instance should be open must first be selected in the Object Organizer before you can execute this command. In the resulting dialog box you can choose the desired instance of this function block. Note: Instances can be opened only after logging in! (Project was correctly compiled and sent with "Online" "Login" to the PLC). {bmc bild4_34.bmp} , Dialog box for opening an instance "Project" "Show call tree" With this command you open a window which shows the call tree of the object chosen in the Object Organizer. For this the project must be compiled (see "Rebuild all"). The call tree contains both calls for POUs and references to data types. {bmc bild4_35.bmp} , Example of a call tree "Project" "Show cross reference list" With this command you open a dialog box which makes possible the output of all application points for a variable, address, or a POU. For this the project must be compiled (see "Rebuild all"). Choose first the category Variable, Address, or POU and then enter the name of the desired element. By clicking on the button Get References you get the list of all application points. Along with the POU and the line or network number, it is shown whether this point has read only access or full access and whether it is a local or global variable. When you select a line of the cross reference list and press the button Go To or doubleclick on the line, then the POU is shown in its editor at the corresponding point. In this way you can jump to all application points without a time-consuming search. In order to make processing easier, you can use the Send to message window button to bring the current cross reference list into the message window and from there change to the respective POU. {bmc bild4_36.bmp} , Dialog box and example of a cross reference list "Project" "Show unused variables" 用此命令显示在工程中定义了但在工程里始终没有使用的变量列表。命令只 有在工程经过编译后才有效。如果没有未使用的变量,将会弹出如下窗口: {bmc bild4_37.bmp} , Unused variables of a project 选择一个变量后按下Go To 按钮或者双击该变量,就会改变含有该变量的对 象的内容。 "Extras" "Previous version" 用此命令恢复当前的对象到上一次保存的状态。对象恢复到最近一次的 "File" "Save"操作或者最近一次自动保存所对应的版本。 4.4 编辑命令 所有编辑命令都在"Edit"菜单下面: "Edit" "Undo" 快捷方式: + 撤销对当前编辑窗口最近所作的一次操作。重复这个命令可以撤消所做的操作直到编辑的起始点。。 注意: 命令"Undo" 和 "Redo"只运用于当前窗口。每个窗口都有自己的动作列表。如果需要在数个窗口中执行撤消和重复命令时,就必须激活对应的窗口。 "Edit" "Redo" 快捷方式 : + 重做撤销命令所做的操作。 "Edit" "Cut" 在工具栏中的符号: 快捷方式: ++ 剪切命令。将当前编辑器中选中的内容剪切到粘贴板中,且删除编辑器中的内容。对于对象管理器的操作情况类似,选中需要剪切的对象执行剪切操作,但是并不是所有的对象都会被删除,例如PLC Configuration被剪切到粘贴板中,其本身并不被删除。 "Edit" "Copy" 在工具栏中的符号: 快捷方式: + 复制编辑器中选中的内容到剪贴板中。该命令不删除编辑器中选中的内容,所以编辑窗口中的内容不发生变化。对对象管理器的操作与编辑器的操作类似。 "Edit" "Paste" 在工具栏中的符号: 快捷方式: + 粘贴命令。将剪贴板中的内容粘贴到编辑窗口的当前位置,同样粘贴命令可 "Edit" "Delete" 快捷方式: 删除命令。删除在编辑窗口中选中的内容,此命令不影响剪贴板中的内容。对于对象管理器此命令将删除选中的对象。 "Edit" "Find" 工具栏中的符号: 查找命令。在当前的编辑窗口中寻找特定的文本信息,执行此命令时将弹出查找对话框,在Find what输入域中输入想要查找的文本信息。 {bmc bild4_38.bmp} , Find dialog box "Edit" "Find next" 工具栏中的符号: 快捷方式: 查找下一个命令。此命令以最近一次"Edit" "Find"命令中的查找文本为对象查找下一个与该文本一致的文本信息。 "Edit" "Replace" 替换命令。查找文本对象的同时将其转换为制定的格式。替换对话框如下图所示。 {bmc bild4_39.bmp} , Dialog box for find and replace "Edit" "Input Assistant" 快捷方式: 此命令提供一个对话框,此对话框中包括了所有可能的输入。这个对话框的左列是可 供选择的输入类别,右列则是该类中包含的输入。确定之后鼠标单击OK按钮,输入 就被插入到当前编辑窗口的光标处。对话框如下图所示: {bmc bild4_40.bmp} , Input Assistant Dialog Box In some positions (e.g. in the watch list) multilevel variable names are necessary. At first the Input Assistant dialog box contains a list of all POUs along with a single point for the global variables. After each POU name there is a point. Doubleclicking with the mouse or pressing opens a list of the variables for a selected POU. Instances and data types can, when appropriate, be opened again. By pressing OK you accept the selected variable. {bmc bild4_41.bmp} , Input Assistant dialog box with multilevel variable names "Edit" "Next error" 快捷方式: 当工程编译出错时执行此命令,程序将跳转到下一个错误对应编辑窗口的出 错处,与此同时出错处被选中,消息窗口中显示相应的出错信息。 "Edit" "Previous error" 快捷方式: + 当工程编译出错时执行此命令,程序将跳转到前一个错误对应编辑窗口的出 错处,与此同时出错处被选中,消息窗口中显示相应的出错信息。 4.5 选项设置 (Options) 在 PLC-1131-DS中,主窗口的界面并不是一成不变的,你可以根据自己的喜 好选择自己喜欢的界面,此外还可以作其它的设置。这是通过"Project" Options"命令来实现的。 "Project" "Options" 启动此命令时就打开了设置选项对话框。选项分成几个不同的种类,在设置框中选择希望改变的种类。 其中包括以下几种类别: , Load & Save (载入&保存) , User information (用户信息) , Editor (编辑) , Desktop (桌面) , Color (颜色) , Directories (目录) , Build (构造) , Passwords (密码) Load & Save选项 如果选择此选项,你可以看到如下图所示的对话框: 在选项复选框中选择希望激活的选项,在选项前打(,)。 选中Create Backup选项,PLC-1131-3 DS将每次存盘的同时建立一个后 缀名为".bak"的备份文件。当文件损坏时,就可以恢复备份文件,恢复最后一次保存的文件。 选中AutoSave选项,在编程的同时以一定的时间间隔将工程以后缀名为".asd"的文件自动保存,时间间隔由Auto Save Interval设定 。 如果某些不正常的原因而导致PLC-1131-3 DS关闭(如电源掉电),文件一般不会损坏,当再次打开此文件的时候将会显示下面的信息。你可以决定是打开原始的文件还是打开自动保存的备份文件。 选Ask for project info选项,那么当你保存一个新工程或者以一个新的工程 名保存工程时,将自动调出工程信息对话框。你也可以用"Project" "Project info"命令处理工程信息。 User information选项 在选项对话框中选此选项,你就可以看到如下对话框: {bmc bild4_7.bmp} , Options dialog box of the category User information 用户信息包括用户名称,公司名称等与工程一起保存的信息。 Desktop选项 对话框如下所示: {bmc bild4_10.bmp} , Options dialog box of the category Desktop 选择Tool bar选项,具栏快捷方式按钮将显示工在菜单栏的下面: 选择Status bar选项,将显示状态栏 Online in Security mode(在线安全模式)选项 Colors选项 选项对话框如下所示: {bmc bild4_11.bmp} , Options dialog box of the category Color 你可以编辑PLC-1131-3 DS的颜色设置,你可以改变 Line numbers(行号), Breakpoint positions(断点位置),Set breakpoint (设置断点),the Current position(当前位置),Reached Positions(到达位置),Monitoring of Boolean values(布尔变量值)的显示颜色。 选择对应的指示按钮,就会弹出颜色设置对话框,如下图所示 {bmc bild4_12.bmp} , Dialog box for setting colors Directories选项 对话框如下图所示: {bmc bild4_13.bmp} , Options dialog box of the category Directories 指定函数库和编译文件存放的目录。 Build选项 Build选项对话框如下图所示: {bmc bild4_14.bmp} , Options dialog box of the category Build 选中Save before compile选项,在工程每次编译之前都进行保存 。 Number of the data segments决定为你的PLC工程保留多少空间,如果在Build 的过程中,出现了"The global variables need too much memory"的提示信息,你 就可以通过增加data segment数量的方法来解决。 Passwords选项 在选项对话框中选择此选项,就可以看到如下所示的对话框: {bmc bild4_15.bmp} , Options dialog box of the category Passwords 为了保护你的文件,可以设置密码防止你的文件不被其他人打开或修改。 在Password输入域中输入你希望设置的密码(以*号显示),接着在 Confirm Password中再次输入确认密码,最后关闭对话框。假如出现提示信息"The password does not agree with the confirmation",说明键入密码时两次输入不 相同。建立密码后只有在输入正确的密码时,才可以打开工程文件。 Write Protection Password中的输入是工程写保护密码,这样保护工程不被修改。你可以编译工程,载入PLC,仿真等操作,但是不可以作修改。 4.6 在线命令(Online Functions) 所有的在线命令都可以在"Online" 命令菜单中找到。某些命令只有在激活某些特定的编辑窗口之后才有效,在线命令只有在上位编程系统与PLC连接好之后才有效。 "Online" "Login" 在工具栏中的符号: 登陆命令。此命令将上位机与PLC通过总线进行连接(或者启动仿真程序),系统进入在线模式。 如果对工程做过修改之后没有经过编译,那么首先需要进行编译(需要通过"Project" "Rebuild all"命令)。假设编译过程中发生错误PLC-1131-3 DS 就不会转换成在线模式。 成功登陆之后,所有的在线命令变有效,所有定义变量的当前值被监视。用"Online" "Logout" 命令将在线模式转换成离线模式 "Online" "Logout" 在工具栏中的符号: 注销命令。用此命令断开与PLC之间的连接,仿真模式中止,转换到离线模式。 "Online" "Download" 此命令将编译过的工程下载到PLC中。 如果使用的是C代码生成器,就具有就较高的下载优先权,并调用建立下载文件的C语言编译器 。否则下载文件在编译的过程中建立。 "Online" "Run" 在工具栏中的符号: 快捷方式: 此命令启动PLC中或者仿真模式下的程序。此命令在执行了"Online" "Download"命令之后就可立即执行,或者PLC中的用户程序被"Online" "Stop"命令终止,用户程序停止在断点处,循环结束等情况下用此命令 启动程序的执行。 "Online" "Stop" 在工具栏中的符号: 停止PLC中或者仿真模式下两个循环之间程序的执行,用"Online" "Run"命 令重新启动程序。 "Online" "Reset" 如果用特殊值初始化变量。If you have initialized the variables with a specific value, then this command will reset the variables to the initialized value. All other variables are set at a standard initialization (for example, integers at 0). As a precautionary measure, the PLC-1131-3 DS asks you to confirm your decision before all of the variables are overwritten. Use the "Online" "Run" command to restart the program. "Online" "Toggle Breakpoint" 在工具栏中的符号: 快捷方式: 此命令在当前活动窗口设置断点。如果已经在当前窗口设置了断点,断点将 被去处。断点位置取决于当前窗口中程序结构单元的编程格式。 在文本结构编程语言格式中,断点设在当前光标所在的行,若此行前面的行 号为深灰色则该行被设置为断点。在文本编辑器中,可以通过鼠标单击行号 来设置或者去除断点。 如果设置了断点,断点所对应的行号将以蓝色背景色显示。当程序执行到断 点的时候 ,对应的区域将以红色背景色显示。可以用"Online" "Run", "Online" "Step in"或者 "Online" "Step Over"命令继续执行中断了的程序。 你也可以通过断点设置对话框来设置或者去除断点 Online "Breakpoint Dialog Box" 此命令打开一对话框来编辑整个工程的断点,对话框将显示最近设置的断点。为了设置断点先在POU组合框中选择一个程序结构单元,然后在Location组合框中选择行号,最后用鼠标单击Add按钮,这样断点就被添加到列表中。单击Delete按钮将删除列表中突出显示的断点,Delete All按钮将删除所有的断点。,你可以在断点列表中选择一断点,然后单击Go to按钮跳转到文本编辑器中相应的位置。 {bmc bild4_42.bmp} , Breakpoint Editing Dialog Box To set or delete breakpoints, you can also use the "Online" "Toggle Breakpoint" command. "Online" "Single Cycle" 快捷方式: + 此命令执行一个PLC循环,一个循环结束后程序将停止执行。 单循环状态将在执行了"Online" "Run"命令之后停止。 "Online" "Write Values" or "Force Values" 快捷方式: + (写入变量值) Shortcut: (强制变量值) 为了改变变量的值,你可以在login之后用鼠标双击该变量或者选中后用键来改变变量的值。你可以在弹出的对话框中输入希望的值,如果是布尔变量将不会弹出对话框 ,新的布尔变量将会以红色显示。完成了变量的输入之后,用此命令就可以强制修改变量的值。 {bmc bild4_43.bmp} , Dialog Box for Writing a New Variable Value. "Online" "Release Force" 快捷方式: + 此命令结束PLC中的变量强制,所有的被强制修改的变量将恢复其初始值。如果没有变量被强制,该命令将没有实际效果。 In order to force the values, use the "Force Values" command. "Online""Show Call Stack" 当处于仿真模式(Simulation Mode)在断点处终止执行时,运行该命令将弹出一对话框,里面包含了在当前调用堆栈中的程序结构单元列表。 {bmc bild4_44.bmp} , Example of a Call Stack 第一个程序结构单元总是PLC_PRG,因为PLC_PRG是程序执行的起始点。最后的程序结构单元是正在被执行的程序结构单元。当你选择一个程序结构单元,然后用鼠标单击Go to按钮的时候,被选中的程序结构单元将被载入到其编辑器中。 "Online" "Simulation" 如果选中了仿真模式 (Simulation Mode) ,菜单项的前面将出现 (,) 标志程序处于仿真状态。 仿真模式用来测试工程,计算机和仿真模的通信是通过信息窗口机构。如果程序不是在仿真模式下运行的时候,程序将在PLC中运行。 4.7 窗口设置命令(Window set up) 在 "Window" 菜单条下,包括了所有的管理窗口的命令。在菜单条的末尾包含了所有的打开的窗口。你可以用鼠标单击的方法切换到相应的窗口。 "Window" "Tile Horizontal" 水平平铺工作区中的所有窗口。 "Window" "Tile Vertical" 垂直平铺工作区中的所有窗口。 "Window" "Cascade" 层叠工作区中的所有窗口。 "Window" "Close All" 关闭工作区中的所有窗口。 "Window" "Messages" 快捷方式: + 用此命令打开或者关闭信息窗口。 第五章 PLC-1131-3 DS中的文本编辑器 5.1 定义变量编辑器 定义变量编辑器用来定义程序结构单元的变量、全局变量、数据类型的定义等。 所有的程序结构单元包括定义变量部分和程序主体部分。它们中间由屏幕分隔栏分开且可以自由拖放。单击鼠标右键,回弹出context menu ,其中包含了一些极为常用的命令。 定义变量部分(Declaration Part) 在程序中将要使用的变量必须在定义变量部分进行定义,否则程序对未定义的变量将不能进行识别。变量包括:输入变量、输出变量、局部变量、保持变量和常量。定义变量的语法是根据IEC1131-3的标准,下面是一个正确的定义变量的例子 Image 0.1: Declaration Editor 关键字(Keywords) 在所有的编辑器中,关键字均以大写字母的形式编辑。关键字不用作为变量。 变量定义 (Variables declaration) 变量定义的语法如下所示:A variables declaration has the following syntax: <标识符> {AT <地址>}:<数据类型> {:=<初始值>}; {}里面的内容是可选的 。. 变量标识符中不能包括空格键或者其它特殊字符但可以包含下划线(如"A_BCD"和"AB_CD"是两个不同的标识符),不能多次定义同一个变量标识符,变量标识符不可以与关键字同名,不区分大小写字母字符。 变量定义中可包含初始化值。它是通过":="操作符来实现的 例: var1:INT:=12; (*整形变量,初始值为12*) AT Declaration 如果希望将变量直接与PLC输入输出地址产生关系,可以用AT关键字实现。这样用的好处就是用一个有意义的名称来代表地址,便于修改程序和增加程序的可读性。 例: Home_X_Switch AT %IX6.3:BOOL; Machine_Stop_Lamp AT %QX101.6:BOOL; "Insert" "Declarations keywords" 用此命令可以打开一个包含所有关键字列表的对话框,从中选定一关键字,按确定按钮就将所需的关键字插入到光标当前位置。通过Input Assistant命令中的Declarations类,可以得到同样的效果。 语法颜色 (Syntax Coloring) 在文本编辑器和定义变量编辑器中,可以通过文本的颜色知道文本的编辑是否存在语法上的错误。这样可以 尽量避免错误的产生和较快的发现错误。 下列颜色将被使用: , 蓝色 关键字 , 绿色 注释 , 粉红色 常量(如布尔变量值(TRUE/FALSE)) Red , 输入错误 (如关键字、字母大小写等等) Black , 变量、常量、赋值操作符等。 定义变量向导(Autodeclaration) 如果对定义变量不是很熟悉,可以用Option对话框Editor类中的Autodeclaration 命令。执行该命令之后,弹出一对话框 ,在该对话框的帮助下可以方便的定义变量了。对话框如下图所示: {bmc bild5_2.bmp} , Dialog Box for Declaration of Variables 变量中可以包含变量标识符、地址、数据类型、初始值、注释等内容。 注释(Comment) 用户注释内容倍加在两个"*"之间,这样增加程序的可读性。还可以用注释符号将一段程序屏蔽,便于调试。 5.2 文本编辑器 PLC-1131-3 DS中的文本编辑器的使用是相当方便的,支持句法颜色功能。 Image 0.2: Text Editors for the Instruction List and Structured Text 单击鼠标右键会弹出context 菜单,里面包含了一些最为重要和常用的命令。 文本编辑器使用下列菜单命令: "Insert" "Operator" 执行此命令之后,弹出一对话框,里面包括了所有的运算符。从列表中选择一运算符后,单击OK按钮,运算符被插入到光标的当强位置。 "Insert" "Operand" 执行此命令之后,弹出一对话框,里面包含了所有的变量。你可以选择是否显示全局变量、局部变量和系统变量。从列表中选择一变量,然后用鼠标左键单击OK按钮后,变量被插入到光标的当前位置。 "Insert" "Function" 插入函数。 "Insert" "Function Block" 插入功能块。 "Extras" "Monitoring Options" 用此命令设置监视窗口。在文本编辑器中窗口在监视时被分为两个部分,程序位于窗口的左面,窗口的右面是对应程序中含有的变量的监控。 你可以指定监控窗口的宽度(Width)和位于同一行中的两个变量之间的距离。 , Monitoring Options Dialog Box {bmc bild5_5.bmp} 如何设置断点? 如果想要在程序中设置断点,用鼠标左键单击希望设置断点的那一行的行号,然后用设置断点命令("Online" "Toggle Breakpoint")设置断点。若该行被设置成为断点,那么行号的颜色将从暗灰色变成深蓝色,断点将在 PLC中被激活。 删除断点 如果希望删除已经设置的断点,同样先选中断点所在的行,通过("Online" "Toggle Breakpoint")命令,或者功能键或工具栏中的快捷方式删除断点。 文本编辑器中的行号 离线模式下单击行号将选中整行。 在线模式下,行号的背景色表示每一行的断点状态: , 暗灰色: 此行可能为断点位置 , 深蓝色: 此行设置了断点 , 红色: 程序执行到此点 第六章 cnc –plc接口 6.1 信号接口概述 PLC与数控系统通过总线连接,这样就可以在PLC 与数控系统之间进行通信。这样就可以将数控系统的状态通知给PLC,也可以用PLC来影响数控系统的的相关操作。CNC-interface是传递信息的接口,是通过对应位的电平信号的高低来传递信息,32位组成一"DWORDS"。 典型的运用有: - 启动和停止NC程序 - 断开和闭合 CNC 控制环 - 识别NC程序中的辅助功能代码(BCD码) … 信号接口由两部分组成 - CNC inputs,PLC程序能指定,CNC只能读; - CNC outputs,PLC只能读,CNC能指定。 某些信号可以被单独处理,有一些信号要与其它信号结合起来一起考虑,而有些信号只能共同考虑。 有些信号是静态的,而有些信号是动态的。换句话说,有些信号只关心其值,而有些信号我们主要关心的是它们的值的变化。 正负逻辑: 有一些接口信号是负逻辑,就是低电平触发信号 。这些信号在信号名的后面用"n"做标记,与正逻辑区分开来。 例: INEMERGENCn 0: 激活警停状态 1: 不激活警停状态 ON_RESET 0: 非复位状态 1: 复位状态被激活 6.2 信号接口一览 输入CNC的信号和对应的DWORDs使用的符号的前缀为 IN ( Input to the CNC). 从CNC 输出的信号和对应的DWORDs 使用的符号前缀为 ON ( Output from the CNC). 因为接口扩展到128个DWORD,这样就使得CNC中所有功能同时可用成 为可能。一个DWORDS包含了32个信号。 后面是接口信号集合: NC-Input NC-output -------------------------------------------------------------------------------------- INGENERAL1 DWORD 1 ONGENERAL1 Bitn 1 INEMERGENCn ON_CYCLEON 2 IN_START ON_STOPNCn 3 IN_STOPn ON_STARTNC 4 IN_TRANSF ON_AUTO 5 ENABLE ON_SINGLE 6 free ON_MDI 7 free ON_JOGMODE 8 INPLAYBACK ON_HOMING 9 IN_AFC_EN free 10 free free 11 free free 12 free ON_EMERGn 13 free ON_PRG_STP 14 free ON_PRG_END 15 free ON_RESET 16 free ON_NO_CNTR 17 free ON_HOME_OK 18 free ON_NCERROR 19 free ON_ADDKEY1 20 free ON_ADDKEY2 21 free ON_PROGRAM 22 free ON_ADMISSN 23 free ON_PANEL 24 free ON_RETREAT 25 free ON_BACKW 26 free ON_TEACHED 27 free ON_BLKCHNG 28 free free 29 free free 30 free free 31 free free 32 free free NC-Input NC-output ------------------------------------------------------------------------------------ INGENERAL2 DWORD 2 ONGENERAL2 Bitn 1 IN_REPEAT ON_STAND 2 IN_INTERVA ON_RAPID 3 IN_INSPECT ON_THREAD 4 free ON_HOMEOK 5 free ON_INTVEND 6 free ON_INTRET 7 free ON_INTVHLD 8 free free 9 IN_MIRR_STROBE free 10 ... free free 28 29 free ON_STROBE1 30 free ON_STROBE2 31 free ON_STROBE3 32 free ON_STROBE4 NC-Input NC-output -------------------------------------------------------------------------------------- IN_DRIVEON DWORD 3 ONBCDWORD1 Bitn 1 IN_DRON01 ON_BCD01 2 IN_DRON02 ON_BCD02 3 IN_DRON03 ON_BCD03 4 IN_DRON04 ON_BCD04 5 IN_DRON05 ON_BCD05 6 IN_DRON06 ON_BCD06 7 IN_DRON07 ON_BCD07 8 IN_DRON08 ON_BCD08 9 IN_DRON09 ON_BCD09 10 IN_DRON10 ON_BCD10 11 IN_DRON11 ON_BCD11 12 IN_DRON12 ON_BCD12 13 IN_DRON13 ON_BCD13 14 IN_DRON14 ON_BCD14 15 IN_DRON15 ON_BCD15 16 IN_DRON16 ON_BCD16 17 IN_DRON17 ON_BCD17 18 IN_DRON18 ON_BCD18 19 IN_DRON19 ON_BCD19 20 IN_DRON20 ON_BCD20 21 IN_DRON21 ON_BCD21 22 IN_DRON22 ON_BCD22 23 IN_DRON23 ON_BCD23 24 IN_DRON24 ON_BCD24 25 IN_DRON25 ON_BCD25 26 IN_DRON26 ON_BCD26 27 IN_DRON27 ON_BCD27 28 IN_DRON28 ON_BCD28 29 IN_DRON29 ON_BCD29 30 IN_DRON30 ON_BCD30 31 IN_DRON31 ON_BCD31 32 IN_DRON32 ON_BCD32 NC-Input NC-output -------------------------------------------------------------------------------------- IN_DRIVEEN DWORD 4 ONBCDWORD2 Bitn 1 IN_DREN01 ON_BCD33 2 IN_DREN02 ON_BCD34 3 IN_DREN03 ON_BCD35 4 IN_DREN04 ON_BCD36 5 IN_DREN05 ON_BCD37 6 IN_DREN06 ON_BCD38 7 IN_DREN07 ON_BCD39 8 IN_DREN08 ON_BCD40 9 IN_DREN09 ON_BCD41 10 IN_DREN10 ON_BCD42 11 IN_DREN11 ON_BCD43 12 IN_DREN12 ON_BCD44 13 IN_DREN13 ON_BCD45 14 IN_DREN14 ON_BCD46 15 IN_DREN15 ON_BCD47 16 IN_DREN!6 ON_BCD48 17 IN_DREN17 ON_BCD49 18 IN_DREN18 ON_BCD50 19 IN_DREN19 ON_BCD51 20 IN_DREN20 ON_BCD52 21 IN_DREN21 ON_BCD53 22 IN_DREN22 ON_BCD54 23 IN_DREN23 ON_BCD55 24 IN_DREN24 ON_BCD56 25 IN_DREN25 ON_BCD57 26 IN_DREN26 ON_BCD58 27 IN_DREN27 ON_BCD59 28 IN_DREN28 ON_BCD60 29 IN_DREN29 ON_BCD61 30 IN_DREN30 ON_BCD62 31 IN_DREN31 ON_BCD63 32 IN_DREN32 ON_BCD64 NC-Input NC-output ------------------------------------------------------------------------------- IN_HOMING DWORD 5 ONINPOS Bitn 1 IN_HOME01n ON_INP01 2 IN_HOME02n ON_INP02 3 IN_HOME03n ON_INP03 4 IN_HOME04n ON_INP04 5 IN_HOME05n ON_INP05 6 IN_HOME06n ON_INP06 7 IN_HOME07n ON_INP07 8 IN_HOME08n ON_INP08 9 IN_HOME09n ON_INP09 10 IN_HOME10n ON_INP10 11 IN_HOME11n ON_INP11 12 IN_HOME12n ON_INP12 13 IN_HOME13n ON_INP13 14 IN_HOME14n ON_INP14 15 IN_HOME15n ON_INP15 16 IN_HOME16n ON_INP16 17 IN_HOME17n ON_INP17 18 IN_HOME18n ON_INP18 19 IN_HOME19n ON_INP19 20 IN_HOME20n ON_INP20 21 IN_HOME21n ON_INP21 22 IN_HOME22n ON_INP22 23 IN_HOME23n ON_INP23 24 IN_HOME24n ON_INP24 25 IN_HOME25n ON_INP25 26 IN_HOME26n ON_INP26 27 IN_HOME27n ON_INP27 28 IN_HOME28n ON_INP28 29 IN_HOME29n ON_INP29 30 IN_HOME30n ON_INP30 31 IN_HOME31n ON_INP31 32 IN_HOME32n ON_INP32 NC-Input NC-output ------------------------------------------------------------------------------ IN_SWLIMIT DWORD 6 ONHOMINGOK Bitn 1 IN_LIMIT01 ON_HOME01 2 IN_LIMIT02 ON_HOME02 3 IN_LIMIT03 ON_HOME03 4 IN_LIMIT04 ON_HOME04 5 IN_LIMIT05 ON_HOME05 6 IN_LIMIT06 ON_HOME06 7 IN_LIMIT07 ON_HOME07 8 IN_LIMIT08 ON_HOME08 9 IN_LIMIT09 ON_HOME09 10 IN_LIMIT10 ON_HOME10 11 IN_LIMIT11 ON_HOME11 12 IN_LIMIT12 ON_HOME12 13 IN_LIMIT13 ON_HOME13 14 IN_LIMIT14 ON_HOME14 15 IN_LIMIT15 ON_HOME15 16 IN_LIMIT16 ON_HOME16 17 IN_LIMIT17 ON_HOME17 18 IN_LIMIT18 ON_HOME18 19 IN_LIMIT19 ON_HOME19 20 IN_LIMIT20 ON_HOME20 21 IN_LIMIT21 ON_HOME21 22 IN_LIMIT22 ON_HOME22 23 IN_LIMIT23 ON_HOME23 24 IN_LIMIT24 ON_HOME24 25 IN_LIMIT25 ON_HOME25 26 IN_LIMIT26 ON_HOME26 27 IN_LIMIT27 ON_HOME27 28 IN_LIMIT28 ON_HOME28 29 IN_LIMIT29 ON_HOME29 30 IN_LIMIT30 ON_HOME30 31 IN_LIMIT31 ON_HOME31 32 IN_LIMIT32 ON_HOME32 NC-Input NC-output ---------------------------------------------------------------------------------- IN_STRTPOS DWORD 7 ONPOSAXES Bitn 1 IN_POS_01 ON_POS_01 2 IN_POS_02 ON_POS_02 3 IN_POS_03 ON_POS_03 4 IN_POS_04 ON_POS_04 5 IN_POS_05 ON_POS_05 6 IN_POS_06 ON_POS_06 7 IN_POS_07 ON_POS_07 8 IN_POS_08 ON_POS_08 9 IN_POS_09 ON_POS_09 10 IN_POS_10 ON_POS_10 11 IN_POS_11 ON_POS_11 12 IN_POS_12 ON_POS_12 13 IN_POS_13 ON_POS_13 14 IN_POS_14 ON_POS_14 15 IN_POS_15 ON_POS_15 16 IN_POS_16 ON_POS_16 17 IN_POS_17 ON_POS_17 18 IN_POS_18 ON_POS_18 19 IN_POS_19 ON_POS_19 20 IN_POS_20 ON_POS_20 21 IN_POS_21 ON_POS_21 22 IN_POS_22 ON_POS_22 23 IN_POS_23 ON_POS_23 24 IN_POS_24 ON_POS_24 25 IN_POS_25 ON_POS_25 26 IN_POS_26 ON_POS_26 27 IN_POS_27 ON_POS_27 28 IN_POS_28 ON_POS_28 29 IN_POS_29 ON_POS_29 30 IN_POS_30 ON_POS_30 31 IN_POS_31 ON_POS_31 32 IN_POS_32 ON_POS_32 NC-Input NC-output -------------------------------------------------------------------------------------- IN_CYCLEB DWORD 8 ONCYCBYTE Bitn 1 IN_CYCB_01 ON_CYCB01 2 IN_CYCB_02 ON_CYCB02 3 IN_CYCB_03 ON_CYCB03 4 IN_CYCB_04 ON_CYCB04 5 IN_CYCB_05 ON_CYCB05 6 IN_CYCB_06 ON_CYCB06 7 IN_CYCB_07 ON_CYCB07 8 IN_CYCB_08 ON_CYCB08 9 IN_CYCB_09 ON_CYCB09 10 IN_CYCB_10 ON_CYCB10 11 IN_CYCB_11 ON_CYCB11 12 IN_CYCB_12 ON_CYCB12 13 IN_CYCB_13 ON_CYCB13 14 IN_CYCB_14 ON_CYCB14 15 IN_CYCB_15 ON_CYCB15 16 IN_CYCB_16 ON_CYCB16 17 IN_CYCB_17 ON_CYCB17 18 IN_CYCB_18 ON_CYCB18 19 IN_CYCB_19 ON_CYCB19 20 IN_CYCB_20 ON_CYCB20 21 IN_CYCB_21 ON_CYCB21 22 IN_CYCB_22 ON_CYCB22 23 IN_CYCB_23 ON_CYCB23 24 IN_CYCB_24 ON_CYCB24 25 IN_CYCB_25 ON_CYCB25 26 IN_CYCB_26 ON_CYCB26 27 IN_CYCB_27 ON_CYCB27 28 IN_CYCB_28 ON_CYCB28 29 IN_CYCB_29 ON_CYCB29 30 IN_CYCB_30 ON_CYCB30 31 IN_CYCB_31 ON_CYCB31 32 IN_CYCB_32 ON_CYCB32 NC-Input NC-output ---------------------------------------------------------------------------------- IN_EXTMODE DWORD 9 ONEXTMODE Bitn 1 IN_EXT_01 ON_EXT_01 2 IN_EXT_02 ON_EXT_02 3 IN_EXT_03 ON_EXT_03 4 IN_EXT_04 ON_EXT_04 5 IN_EXT_05 ON_EXT_05 6 IN_EXT_06 ON_EXT_06 7 IN_EXT_07 ON_EXT_07 8 IN_EXT_08 ON_EXT_08 9 IN_EXT_09 ON_EXT_09 10 IN_EXT_10 ON_EXT_10 11 IN_EXT_11 ON_EXT_11 12 IN_EXT_12 ON_EXT_12 13 IN_EXT_13 ON_EXT_13 14 IN_EXT_14 ON_EXT_14 15 IN_EXT_15 ON_EXT_15 16 IN_EXT_16 ON_EXT_16 17 IN_EXT_17 ON_EXT_17 18 IN_EXT_18 ON_EXT_18 19 IN_EXT_19 ON_EXT_19 20 IN_EXT_20 ON_EXT_20 21 IN_EXT_21 ON_EXT_21 22 IN_EXT_22 ON_EXT_22 23 IN_EXT_23 ON_EXT_23 24 IN_EXT_24 ON_EXT_24 25 IN_EXT_25 ON_EXT_25 26 IN_EXT_26 ON_EXT_26 27 IN_EXT_27 ON_EXT_27 28 IN_EXT_28 ON_EXT_28 29 IN_EXT_29 ON_EXT_29 30 IN_EXT_30 ON_EXT_30 31 IN_EXT_31 ON_EXT_31 32 IN_EXT_32 ON_EXT_32 NC-Input NC-output ----------------------------------------------------------------------------------- IN_DISABLE DWORD 10 ONREADY Bitn 1 IN_DIS_01 ON_READY01 2 IN_DIS_02 ON_READY02 3 IN_DIS_03 ON_READY03 4 IN_DIS_04 ON_READY04 5 IN_DIS_05 ON_READY05 6 IN_DIS_06 ON_READY06 7 IN_DIS_07 ON_READY07 8 IN_DIS_08 ON_READY08 9 IN_DIS_09 ON_READY09 10 IN_DIS_10 ON_READY10 11 IN_DIS_11 ON_READY11 12 IN_DIS_12 ON_READY12 13 IN_DIS_13 ON_READY13 14 IN_DIS_14 ON_READY14 15 IN_DIS_15 ON_READY15 16 IN_DIS_16 ON_READY16 17 IN_DIS_17 ON_READY17 18 IN_DIS_18 ON_READY18 19 IN_DIS_19 ON_READY19 20 IN_DIS_20 ON_READY20 21 IN_DIS_21 ON_READY21 22 IN_DIS_22 ON_READY22 23 IN_DIS_23 ON_READY23 24 IN_DIS_24 ON_READY24 25 IN_DIS_25 ON_READY25 26 IN_DIS_26 ON_READY26 27 IN_DIS_27 ON_READY27 28 IN_DIS_28 ON_READY28 29 IN_DIS_29 ON_READY29 30 IN_DIS_30 ON_READY30 31 IN_DIS_31 ON_READY31 32 IN_DIS_32 ON_READY32 NC-Input NC-output ------------------------------------------------------------------------------ IN_SW_AXES DWORD 11 free Bitn 1 IN_SWAX01 free 2 IN_SWAX02 free 3 IN_SWAX03 free 4 IN_SWAX04 free 5 IN_SWAX05 free 6 IN_SWAX06 free 7 IN_SWAX07 free 8 IN_SWAX08 free 9 IN_SWAX09 free 10 IN_SWAX10 free 11 IN_SWAX11 free 12 IN_SWAX12 free 13 IN_SWAX13 free 14 IN_SWAX14 free 15 IN_SWAX15 free 16 IN_SWAX16 free 17 IN_GEAR01 free 18 IN_GEAR02 free 19 IN_GEAR03 free 20 IN_GEAR04 free 21 IN_GEAR05 free 22 IN_GEAR06 free 23 ... free free 32 NC-Input NC-output ----------------------------------------------------------------------------------- IN_SPINDLE DWORD 12 ONSPINDLE Bitn 1 IN_NULLV01 ON_STAND01 2 IN_NULLV02 ON_STAND02 3 IN_NULLV03 ON_STAND03 4 IN_NULLV04 ON_STAND04 5 IN_NULLV05 ON_STAND05 6 IN_NULLV06 ON_STAND06 7 IN_NULLV07 ON_STAND07 8 IN_NULLV08 ON_STAND08 9 IN_NULLV09 ON_STAND09 10 IN_NULLV10 ON_STAND10 11 IN_NULLV11 ON_STAND11 12 IN_NULLV12 ON_STAND12 13 IN_NULLV13 ON_STAND13 14 IN_NULLV14 ON_STAND14 15 IN_NULLV15 ON_STAND15 16 IN_NULLV16 ON_STAND16 17 IN_REV_01 ON_MOVE01 18 IN_REV_02 ON_MOVE02 19 IN_REV_03 ON_MOVE03 20 IN_REV_04 ON_MOVE04 21 IN_REV_05 ON_MOVE05 22 IN_REV_06 ON_MOVE06 23 IN_REV_07 ON_MOVE07 24 IN_REV_08 ON_MOVE08 25 IN_REV_09 ON_MOVE09 26 IN_REV_10 ON_MOVE10 27 IN_REV_11 ON_MOVE11 28 IN_REV_12 ON_MOVE12 29 IN_REV_13 ON_MOVE13 30 IN_REV_14 ON_MOVE14 31 IN_REV_15 ON_MOVE15 32 IN_REV_16 ON_MOVE16 NC-Input NC-output ------------------------------------------------------------------------------------ IN_PARKING DWORD 13 ONCONTROL Bitn 1 IN_PARK01 ON_CONTR01 2 IN_PARK02 ON_CONTR02 3 IN_PARK03 ON_CONTR03 4 IN_PARK04 ON_CONTR04 5 IN_PARK05 ON_CONTR05 6 IN_PARK06 ON_CONTR06 7 IN_PARK07 ON_CONTR07 8 IN_PARK08 ON_CONTR08 9 IN_PARK09 ON_CONTR09 10 IN_PARK10 ON_CONTR10 11 IN_PARK11 ON_CONTR11 12 IN_PARK12 ON_CONTR12 13 IN_PARK13 ON_CONTR13 14 IN_PARK14 ON_CONTR14 15 IN_PARK15 ON_CONTR15 16 IN_PARK16 ON_CONTR16 17 IN_PARK17 ON_CONTR17 18 IN_PARK18 ON_CONTR18 19 IN_PARK19 ON_CONTR19 20 IN_PARK20 ON_CONTR20 21 IN_PARK21 ON_CONTR21 22 IN_PARK22 ON_CONTR22 23 IN_PARK23 ON_CONTR23 24 IN_PARK24 ON_CONTR24 25 IN_PARK25 ON_CONTR25 26 IN_PARK26 ON_CONTR26 27 IN_PARK27 ON_CONTR27 28 IN_PARK28 ON_CONTR28 29 IN_PARK29 ON_CONTR29 30 IN_PARK30 ON_CONTR30 31 IN_PARK31 ON_CONTR31 32 IN_PARK32 ON_CONTR32 NC-Input NC-output --------------------------------------------------------------------------------- IN_MIRROR DWORD 14 ONMIRROR Bitn 1 IN_MIRR01 ON_MIRR01 2 IN_MIRR02 ON_MIRR02 3 IN_MIRR03 ON_MIRR03 4 IN_MIRR04 ON_MIRR04 5 IN_MIRR05 ON_MIRR05 6 IN_MIRR06 ON_MIRR06 7 IN_MIRR07 ON_MIRR07 8 IN_MIRR08 ON_MIRR08 9 IN_MIRR09 ON_MIRR09 10 IN_MIRR10 ON_MIRR10 11 IN_MIRR11 ON_MIRR11 12 IN_MIRR12 ON_MIRR12 13 IN_MIRR13 ON_MIRR13 14 IN_MIRR14 ON_MIRR14 15 IN_MIRR15 ON_MIRR15 16 IN_MIRR16 ON_MIRR16 17 IN_MIRR17 ON_MIRR17 18 IN_MIRR18 ON_MIRR18 19 IN_MIRR19 ON_MIRR19 20 IN_MIRR20 ON_MIRR20 21 IN_MIRR21 ON_MIRR21 22 IN_MIRR22 ON_MIRR22 23 IN_MIRR23 ON_MIRR23 24 IN_MIRR24 ON_MIRR24 25 IN_MIRR25 ON_MIRR25 26 IN_MIRR26 ON_MIRR26 27 IN_MIRR27 ON_MIRR27 28 IN_MIRR28 ON_MIRR28 29 IN_MIRR29 ON_MIRR29 30 IN_MIRR30 ON_MIRR30 31 IN_MIRR31 ON_MIRR31 32 IN_MIRR32 ON_MIRR32 NC-Input NC-output ------------------------------------------------------------------------------------ IN_OVERRIDE DWORD 15 ONCMND_P Bitn 1 IN_OVERR01 ON_CMNDP01 2 IN_OVERR02 ON_CMNDP02 3 IN_OVERR03 ON_CMNDP03 4 IN_OVERR04 ON_CMNDP04 5 IN_OVERR05 ON_CMNDP05 6 IN_OVERR06 ON_CMNDP06 7 IN_OVERR07 ON_CMNDP07 8 IN_OVERR08 ON_CMNDP08 9 IN_OVERR09 ON_CMNDP09 10 IN_OVERR10 ON_CMNDP10 11 IN_OVERR11 ON_CMNDP11 12 IN_OVERR12 ON_CMNDP12 13 IN_OVERR13 ON_CMNDP13 14 IN_OVERR14 ON_CMNDP14 15 IN_OVERR15 ON_CMNDP15 16 IN_OVERR16 ON_CMNDP16 17 IN_OVERR17 ON_CMNDP17 18 IN_OVERR18 ON_CMNDP18 19 IN_OVERR19 ON_CMNDP19 20 IN_OVERR20 ON_CMNDP20 21 IN_OVERR21 ON_CMNDP21 22 IN_OVERR22 ON_CMNDP22 23 IN_OVERR23 ON_CMNDP23 24 IN_OVERR24 ON_CMNDP24 25 IN_OVERR25 ON_CMNDP25 26 IN_OVERR26 ON_CMNDP26 27 IN_OVERR27 ON_CMNDP27 28 IN_OVERR28 ON_CMNDP28 29 IN_OVERR29 ON_CMNDP29 30 IN_OVERR30 ON_CMNDP30 31 IN_OVERR31 ON_CMNDP31 32 IN_OVERR32 ON_CMNDP32 NC-Input NC-output ------------------------------------------------------------------------------------- free DWORD 16 ONCMND_M Bitn 1 free ON_CMNDM01 2 free ON_CMNDM02 3 free ON_CMNDM03 4 free ON_CMNDM04 5 free ON_CMNDM05 6 free ON_CMNDM06 7 free ON_CMNDM07 8 free ON_CMNDM08 9 free ON_CMNDM09 10 free ON_CMNDM10 11 free ON_CMNDM11 12 free ON_CMNDM12 13 free ON_CMNDM13 14 free ON_CMNDM14 15 free ON_CMNDM15 16 free ON_CMNDM16 17 free ON_CMNDM17 18 free ON_CMNDM18 19 free ON_CMNDM19 20 free ON_CMNDM20 21 free ON_CMNDM21 22 free ON_CMNDM22 23 free ON_CMNDM23 24 free ON_CMNDM24 25 free ON_CMNDM25 26 free ON_CMNDM26 27 free ON_CMNDM27 28 free ON_CMNDM28 29 free ON_CMNDM29 30 free ON_CMNDM30 31 free ON_CMNDM31 32 free ON_CMNDM32 NC-Input NC-output ------------------------------------------------------------------------------------ IN_HDWHEEL DWORD 17 ONHANDWH Bitn 1 IN_HDAX01 ON_HANDW01 2 IN_HDAX02 ON_HANDW02 3 IN_HDAX03 ON_HANDW03 4 IN_HDAX04 ON_HANDW04 5 IN_HDAX05 ON_HANDW05 6 IN_HDAX06 ON_HANDW06 7 IN_HDAX07 ON_HANDW07 8 IN_HDAX08 ON_HANDW08 9 IN_HDAX09 ON_HANDW09 10 IN_HDAX10 ON_HANDW10 11 IN_HDAX11 ON_HANDW11 12 IN_HDAX12 ON_HANDW12 13 IN_HDAX13 ON_HANDW13 14 IN_HDAX14 ON_HANDW14 15 IN_HDAX15 ON_HANDW15 16 IN_HDAX16 ON_HANDW16 17 IN_HDAX17 ON_HANDW17 18 IN_HDAX18 ON_HANDW18 19 IN_HDAX19 ON_HANDW19 20 IN_HDAX20 ON_HANDW20 21 IN_HDAX21 ON_HANDW21 22 IN_HDAX22 ON_HANDW22 23 IN_HDAX23 ON_HANDW23 24 IN_HDAX24 ON_HANDW24 25 IN_HDAX25 ON_HANDW25 26 IN_HDAX26 ON_HANDW26 27 IN_HDAX27 ON_HANDW27 28 IN_HDAX28 ON_HANDW28 29 IN_HDAX29 ON_HANDW29 30 IN_HDAX30 ON_HANDW30 31 IN_HDAX31 ON_HANDW31 32 IN_HDAX32 ON_HANDW32 6.3 常用接口信号 由于系统使用的接口信号数量很多,且较为繁杂,说明书中只对一些实际编程过程中最为常用的接口信号作说明。 6.3.1 常用的输入到CNC的接口信号 输入到CNC 的接口信号符号和对应的DWORDs(双字节)由IN ( Input to the CNC)开头。 INGENERAL 1 (dword 1), 一般的控制信号1 用这些控制信号PLC程序能实现相应的CNC基本功能, 在dword1中包括如下的接口信号: Bit 1 INEMERGENCn -- 警停n 2 IN_START -- 启动 3 IN_STOPn -- 进给停止n 4 IN_TRANSF -- 传送使能 5 IN_ENABLE -- 所有轴进给使能 6 free 7 free 8 INPLAYBACK -- 录返 9 IN_AFC_EN -- 模拟量进给控制使能10 ... 32 free 每个信号接口可以相互独立的被设置成0或者1而不互相干扰。 后面将详细介绍每个接口的功能: INEMERGENCn -- EMERGENCY STOP 此信号用来通知CNC机床是否处于警停状态。通常情况下在机床面板上安装一个警停按钮,以便出现警急情况时便于作相应的处理。 值 含义 ------------------------------------------------------------------------ 0 警停状态被激活 1 警停状态未被激活 值 对CNC的影响 ------------------------------------------------------------------------ 0 - 所有D/A模块的输出为0. - 终止NC程序的处理 - ON_NO_CNTR接口信号的值变成1 - 数控人机界面上显示机床处于警停状态 机床实际位置替代预设位置 1 没有实际影响 注意: , 激活警停状态的时候,位置反馈环仍然保持有效,所以解除警停状态之后不需要重新会原点。 IN_START -- NC-START 通过此信号,PLC程序可以要求CNC执行启动命令。该接口信号可用于 - 启动NC程序 - 启动回原点循环 值 对CNC的影响 ----------------------------------------------------------------------- 0 没有直接影响 1 没有直接影响 0-> 1 CNC启动状态激活 1-> 0 没有直接影响 注意: , IN_START (NC-启动)信号 不予考虑,如果: - 如果CNC处于警停状态(INEMERGENCn=0) - 测试"without motion"状态激活; - 进给停止信号IN_STOPn 的值为 0 IN_STOPn -- 进给停止n 通过这个信号,PLC程序可以指示CNC执行进给停止命令。主要用来中断IN_START信号激活的动作 。 值 含义 ------------------------------------------------------------------------ 0 激活进给停止状态 1 不激活进给使能状态 值 在CNC中的影响 ------------------------------------------------------------------------- 0 IN_START (NC启动)信号不予处理 1 没有直接影响 1-> 0 所有的轴进给停止 注意: 如果螺纹切屑(G33, G34)激活,那么IN_STOPn接口信号由1变0时机床不会马上就停止运动,而是等待螺纹切屑程序处理完之后才停止机床的进给。 此信号并不是在任何情况之下都可以使机床停止。如果螺纹切屑激活的情况之下,只能用IN_NULL01...06接口信号立即停止机床的运行。 在测试状态、激活定位轴的情况下,IN_STOPn (进给停止)接口信号同样起作用。ON_CYCLEON接口信号不受IN_STOPn 信号的影响,就是说IN_STOPn信号变为0时,ON_CYCLEON(驱动使能)信号仍然保持。 IN_TRANSF -- 传送使能 用此信号可以阻断NC程序段由准备状态转变成执行状态的过程,主要用来短时间中断NC程序段的转换为执行状态,例如需要等待外部事件的结束得出结果的情况下,可以先通过将此信号置0,外部事件结束后再置`1,这样在等待外部事件结束的同时NC程序并不执行,而是保存在缓冲区中,直到外部事件结束才转变成执行状态。 值 含义 ------------------------------------------------------------------------- 0 阻断NC程序的转换 1 NC程序段转换使能 注意: , 在下列情况下即使IN_TRANSF信号的值为0,并不一定能够阻断程序段从准备状态转换到执行状态: 1) G09(预读)功能被激活。 2)螺纹切屑(G33, G34)被激活,即使IN_TRANSF信号被置0,程序段继续执行从准备状态到执行状态的转换。 ,当CNC处于手动方式或者手动回原点状态时,IN_TRANSF接口信号不予考虑。 ,当系统处于测试状态时,IN_TRANSF信号保持有效 , 定位轴的插补不受IN_TRANSF接口信号的影响 ,ON_CYCLEON 信号不受IN_TRANSF信号的影响 ,循环程序段不受IN_TRANSF信号的影响 IN_ENABLE -- 所有轴进给使能 在NC程序段执行时,用此信号使能或者中断CNC的路径插补。此信号不仅用来中断NC程序段的执行而且终止轴的运动。 值 含义 0 路径插补被中断 1 路径插补使能 值 对CNC的影响 0 路径插补不被执行,所有参与路径插补的 轴停止运动 1 无直接影响 0-> 1 如果CNC工作在自动方式下,且 ON_CYCLEON 信号的值为1,插补被激活 参与路径插补的轴开始运动。 1-> 0 无连续的影响 注意: , 如果螺纹切屑功能(G33, G34)被激活,路径插补中断不是马上就起作用的, 而是G33/G34程序段执行完毕之后才有效,所以该信号并不适用于在任何情况下终止程序段的执行。 , 螺纹切屑功能被激活时,只有通过IN_NULL01…06信号提前停止路径插补。 , 在手动方式或回原点方式下,IN_ENABLE信号不被处理。 , 在测试状态下,IN_ENABLE信号也在工作。 , 位置轴(position axis)的插补不受IN_ENABLE信号的影响。 , ON_CYCLEON信号不受IN_ENABLE 信号的影响。 IN_DRIVEON -- 控制环使能信号 控制环使能信号总共有32个: 位: 1 IN_DRON01 -- 第1根轴驱动使能 2 IN_DRON02 -- 第2根轴驱动使能 3 IN_DRON03 -- 第3根轴驱动使能 ... 32 IN_DRON032 -- 第32根轴驱动使能 除了同步轴以外,每根轴的控制环都是相互独立的,所以每个信号都可以单独处理。此信号主要用在控制回路开环而又不希望激活警停状态的情况下。 值 含义 0 控制回路开环 1 控制回路闭环 值 对CNC的影响 0 -轴控制回路开环,D/A模块的输出为0V - 如果非警停状态,在手动或自动方式下将显示“无驱动能使信号” IN_DRIVEEN -- 进给使能 这个Dword(双字)中包含了32根轴的路径插补使能信号,也称为进给使能信号。 位 1 IN_DREN01 -- 第1根轴进给使能信号 2 IN_DREN02 -- 第2根轴进给使能信号 3 IN_DREN03 -- 第3根轴进给使能信号 ... 32 IN_DREN32 -- 第32根轴进给使能信号 值 含义 0 对应轴的插补被中断 1 对应轴插补使能 值 对 CNC的影响 0 阻止对应轴的插补 1 无直接影响 0-> 1 如果相应轴参与插补过程且ON_CYCLEON的值为1,该轴将 执行插补过程开始运动 注意: , IN_DREN01…32进给使能信号即使在测试状态?without motion?的情况下也 同样有效。 , ON_CYCLEON信号不受进给使能信号的影响。 IN_HOMING (dword 5) -- 回原点控制信号 此Dword中共包含了32个回原点控制信号: 位 1 IN_HOME01n -- 第1根轴回原点控制信号 2 IN_HOME02n -- 第2根轴回原点控制信号 ... 32 IN_HOME32n -- 第32根轴回原点控制信号 这些信号用来控制相应轴的回原点过程,而这些信号有与原点接近开关产生联系,当轴碰到接近开关时CNC会做相应的处理。 值 含义 -------------------------------------------------------------------------------------------------- 0 使用原点接近开关 1 未使用原点接近开关 IN_NULLV01 .. 06 -- 主轴停止信号 用来停止主轴的旋转,若值为1则对应的主轴模拟量输出为0V。 位 1. IN_NULLV01 -- 主轴 1 2 IN_NULLV02 -- 主轴 2 3 IN_NULLV03 -- 主轴 3 4 IN_NULLV04 -- 主轴 4 5 IN_NULLV05 -- 主轴 5 6 IN_NULLV06 -- 主轴6 7 ... 16 保留 含义 值 ----------------------------------------------------------------------- 0 主轴的转速与编程值一致 1 主轴模拟量输出为0V IN_REV_01 .. 06 -- 主轴反转信号 对应位被1,相应的主轴改变旋转方向 位 17 IN_REV_01 -- 主轴 1 18 IN_REV_02 -- 主轴 2 19 IN_REV_03 -- 主轴 3 20 IN_REV_04 -- 主轴 4 21 IN_REV_05 -- 主轴5 22 IN_REV_06 -- 主轴 6 23 ... 32 保留 值 含义 ----------------------------------------------------------------------- 0 主轴的转速与编程值一致 1 主轴的旋转速度大小与编程值一致,但是方向相反 常用CNC输出信号(CNC outputs) CNC 用这些信号通知PLC数控所处的状态 信号 值为1时表示的含义 ON_EMERG CNC处于警停状态 ON_CYCLEON 数控程序启动 ON_STOPn 进给不停止 ON_AUTO 系统处于自动方式 ON_SINGLE 系统处于单段运行方式 ON_MDI 系统处于手动编程方式 ON_JOGMODE 系统处于手动方式 ON_HOMING 系统处于手动回原点方式 ON_EMERGn 不处于警停状态 ON_PRG_STP 数控程序停止(M00/M01) ON_PRG_END 数控程序执行完毕(M02/M30) ON_RESET 处于复位状态 ON_NO_CNTR 处于测试状态 ON_HOME_OK 回原点过程结束 ON_ERROR 数控程序出错 ON_RETREAT 处于断点返回状态 ON_BACKW 处于原轨迹返回状态 ON_THREAD 螺纹切销状态(G33/G34)激活 ON_STROBE1..4 M,T,S,U代码被激活 ONBCDWORD1..4 存放的BCD码值 … … VAR_INPUT BCD_word: DWORD; END_VAR VAR Units: DINT; Tens:DINT; Hundreds:DINT; Thousands:DINT; END_VAR Units := BCD_word AND 15; Tens := ((BCD_word / 16) AND 15) * 10; Hundreds := ((BCD_word / 256) AND 15) * 100; Thousands := ((BCD_word / 4096) AND 15) * 1000; := DINT_TO_INT(Thousands + Hundreds + Tens + Units); PROGRAM PLC_PRG VAR Feedrate_1 AT %IX1.1 : BOOL; Feedrate_2 AT %IX1.2 : BOOL; Feedrate_3 AT %IX1.3: BOOL; Feedrate_4 AT %IX1.4: BOOL; Feedrate_5 AT %IX1.5: BOOL; Jog_minus AT %IX1.7: BOOL; Jog_plus AT %IX1.8:BOOL; Spindle_1 AT %IX2.1:BOOL; Spindle_2 AT %IX2.2:BOOL; Spindle_3 AT %IX2.3:BOOL; Spindle_4 AT %IX2.4:BOOL; Spindle_5 AT %IX2.5:BOOL; NC_stop AT%IX2.7:BOOL; NC_Start AT%IX2.8:BOOL; I_Machine_Power AT %IX3.1:BOOL; Spindle_Jog AT %IX3.2:BOOL; Alarm_Y AT %IX3.5:BOOL; Servo_Ready_Y AT %IX3.6:BOOL; Alarm_X AT %IX3.7:BOOL; Servo_Ready_X AT %IX3.8:BOOL; HW_Select_X AT %IX4.3:BOOL; HW_Select_Y AT %IX4.2:BOOL; HW_Select_Z AT %IX4.1:BOOL; HW_1 AT %IX4.6:BOOL; HW_10 AT %IX4.5:BOOL; HW_100 AT %IX4.4:BOOL; Alarm_Z AT %IX4.7:BOOL; Servo_Ready_Z AT %IX4.8:BOOL; Brake_Alarm AT %IX5.4:BOOL; Cool_Pump_Alarm AT %IX5.5:BOOL; Servo_Alarm AT %IX5.6:BOOL; Spindle_Alarm AT %IX5.7:BOOL; Spindle_Speed AT %IX5.8:BOOL; Home_X_Switch AT %IX6.3:BOOL; Home_Y_Switch AT %IX6.2:BOOL; Home_Z_Switch AT %IX6.1:BOOL; Z_Brake_Release AT %IX6.4:BOOL; Pump_run AT %IX6.5:BOOL; Spindle_run AT %IX6.6 :BOOL; Machine_run AT %IX6.7:BOOL; Emergency AT %IX6.8:BOOL; O_Machine_Power AT %QX100.1:BOOL; O_Spindle_Power AT %QX100.2:BOOL; O_Pump_Cool AT %QX100.3:BOOL; O_Z_Axis_Brake AT %QX100.4:BOOL; Spindle_Plus AT %QX100.6:BOOL; Spindle_Minus AT %QX100.5:BOOL; O_NCSP_Lamp AT %QX100.7:BOOL; O_NCST_Lamp AT %QX100.8:BOOL; O_Machine_Lamp AT %QX101.1:BOOL; X_Home_Lamp AT %QX101.2:BOOL; Y_Home_Lamp AT %QX101.3:BOOL; Z_Home_Lamp AT %QX101.4:BOOL; Machine_Run_Lamp AT %QX101.5:BOOL; Machine_Stop_Lamp AT %QX101.6:BOOL; Machine_Alarm_Lamp AT %QX101.7:BOOL; Z_Zerospeed AT %QX102.3:BOOL; Z_Servo_Enable AT %QX102.4:BOOL; Y_Zerospeed AT %QX102.5:BOOL; Y_Servo_Enable AT %QX102.6:BOOL; X_Zerospeed AT %QX102.7:BOOL; X_Servo_Enable AT %QX102.8:BOOL; Change_M_strobe: R_TRIG; Spindle_Code_03:R_TRIG; Spindle_Code_05:F_TRIG; Time1:TON; E_stop:BOOL; Send_alarm:BOOL; M03:BOOL; M04:BOOL; M05:BOOL; M08:BOOL; M09:BOOL; M_decoded:WORD; Ext_speed:WORD; Ext_axis:WORD; S_Code:INT; Spindle_Step:INT; Alarm_number: INT; Alarm:INT; Alarm_text:STRING; SWORD:REAL; END_VAR(*==============================================*) (*PLC program for Fuan Automation Factory Version1.0 06/15/1999 Milling Machine By Zhongxin Capital Automation Tel: 0086-21-62274827 Fax: 0086-21-62764828 E-mail: repair@zxauto.com*) (*===============================================*) (*Edge detections*) Change_M_strobe(CLK:=ON_STROBE1); Spindle_Code_03(CLK:=Spindle_Jog); Spindle_Code_05(CLK:=Spindle_Jog); (*Machine Power*) IF I_Machine_Power THEN O_Machine_Power:=TRUE; O_Spindle_Power:=TRUE; END_IF; (*Lamp of Machine*) (*EMERGENCY*) IF Emergency =FALSE THEN INEMERGENCn :=TRUE; IN_DRON01 :=TRUE; IN_DRON02 :=TRUE; IN_DRON03 :=TRUE; IN_DREN01 :=TRUE; IN_DREN02 :=TRUE; IN_DREN03 :=TRUE; IN_DREN04 :=TRUE; ELSE INEMERGENCn :=FALSE; IN_DRON01 :=FALSE; IN_DRON02 :=FALSE; IN_DRON03 :=FALSE; IN_DREN01 :=FALSE; IN_DREN02 :=FALSE; IN_DREN03 :=FALSE; IN_DREN04 :=FALSE; END_IF; IF NOT Emergency THEN IN_TRANSF:=TRUE; IN_ENABLE:=TRUE; ELSE IN_TRANSF:=FALSE; IN_ENABLE:=FALSE; END_IF; (*JOG*) (*NC_START AND NC_STOP*) IF NC_START =TRUE THEN IN_START :=TRUE; O_NCST_Lamp:=TRUE; ELSE IN_START :=FALSE; O_NCST_Lamp:=FALSE; END_IF; IF NC_STOP =FALSE THEN IN_STOPn :=TRUE; O_NCSP_Lamp:=FALSE; ELSE IN_STOPn:=FALSE; O_NCSP_Lamp:=TRUE; END_IF; (*SERVO_ENABLE*) Time1(IN:=O_Machine_Power, PT:=T#1500ms); IF ((ON_NO_CNTR =FALSE) AND (INEMERGENCn =TRUE) AND (Time1.Q=TRUE)) THEN X_Servo_Enable :=TRUE; Y_Servo_Enable :=TRUE; Z_Servo_Enable :=TRUE; ELSE X_Servo_Enable :=FALSE; Y_Servo_Enable :=FALSE; Z_Servo_Enable :=FALSE; END_IF; (*M_DECODED*) IF Change_M_strobe.Q =TRUE THEN M_decoded :=INDUAL(ONBCDWORD1); END_IF; (*M function*) (* Cool Pump*) IF M_decoded =8 THEN M08:=TRUE; END_IF; IF M_decoded =9 THEN M09:=TRUE; END_IF; IF M08 =TRUE THEN O_Pump_Cool:=TRUE; END_IF; IF M09 =TRUE THEN O_Pump_Cool:=FALSE; END_IF; (*Spindle*) IF M_decoded =3 THEN Spindle_Plus:= TRUE; Spindle_Minus:=FALSE; IN_REV_01:=FALSE; END_IF; IF M_decoded =4 THEN Spindle_Plus:= FALSE; Spindle_Minus:=TRUE; IN_REV_01:=TRUE; END_IF; IF M_decoded =5 THEN Spindle_Plus:= FALSE; Spindle_Minus:=FALSE; END_IF; (*Home function*) IN_HOME01n:=NOT Home_X_Switch; IN_HOME02n:=NOT Home_Y_Switch; IN_HOME03n:= NOT Home_Z_Switch; X_Home_Lamp:= ON_HOME01; Y_Home_Lamp:= ON_HOME02; Z_Home_Lamp:= ON_HOME03; (*Alarm Message*) CASE Alarm OF 0: (* IF NOT Servo_Ready_X THEN Alarm_number :=1001; Alarm:=1; END_IF; IF NOT Servo_Ready_Y THEN Alarm_number :=1002; Alarm:=1; END_IF; IF NOT Servo_Ready_Z THEN Alarm_number :=1003; Alarm:=1; END_IF; *) IF Alarm_X THEN Alarm_number :=1004; Alarm:=1; END_IF; IF Alarm_Y THEN Alarm_number :=1005; Alarm:=1; END_IF; IF Alarm_Z THEN Alarm_number :=1006; Alarm:=1; END_IF; IF Spindle_Alarm THEN Alarm_number :=1007; Alarm:=1; END_IF; IF Servo_Alarm THEN Alarm_number :=1008; Alarm:=1; END_IF; (*IF Cool_Pump_Alarm THEN Alarm_number :=1009; Alarm:=1; END_IF; IF Brake_Alarm THEN Alarm_number :=1010; Alarm:=1; END_IF; *) 1: Send_alarm:=WRITE_ERROR_MESSAGE(Alarm_number,3,Alarm_ text); Alarm:=2; 2: IF ON_RESET THEN Alarm:=0; Alarm_number:=0; END_IF; END_CASE; (*Alarm_text*) CASE Alarm_number OF (*1001: Alarm_text:='Drive axis X is not ready'; 1002: Alarm_text:='Drive axis Y is not ready'; 1003: Alarm_text:='Drive axis X is not ready';*) 1004: Alarm_text:='Drive axis X alarms'; 1005: Alarm_text:='Drive axis Y alarms'; 1006: Alarm_text:='Drive axis Z alarms'; 1007: Alarm_text:='Spindle power supply alarms'; 1008: Alarm_text:='Servo power supply alarms'; (*1009: Alarm_text:=' Cooling Pump alarms'; 1010: Alarm_text:='Brake power supply alarms';*) END_CASE; (*Spindle*) IF Spindle_Code_03.Q = TRUE THEN Spindle_Step := 1; Spindle_plus:=TRUE; S_Code :=3; END_IF; IF Spindle_Code_05.Q = TRUE THEN Spindle_Step := 2; Spindle_plus:=FALSE; S_Code :=5; END_IF; CASE Spindle_Step OF 1:IF WRITE_SWORD(SPINDLE_NUMBER:=1,SWORD:=1000.0)=TRUE THEN Spindle_Step :=2; END_IF; 2: IF WRITE_SPINDLE_CODE(SPINDLE_CODE:=S_Code) = TRUE THEN IF S_CODE =5 THEN Spindle_Step :=3; ELSE Spindle_Step :=0; END_IF END_IF; 3: IF DEACTIVATE_SWORD(SPINDLE_NUMBER:=1) = TRUE THEN Spindle_Step :=0; END_IF; END_CASE; (* Handwheel external*) IF HW_Select_X=TRUE THEN Ext_axis:=0; END_IF; IF HW_Select_Y=TRUE THEN Ext_axis:=32; END_IF; IF HW_Select_Z=TRUE THEN Ext_axis:=64; END_IF; IF HW_1 =TRUE THEN Ext_speed:=0; END_IF; IF HW_10 =TRUE THEN Ext_speed:=8; END_IF; IF HW_100 =TRUE THEN Ext_speed:=16; END_IF; IF ON_HANDW01 OR ON_HANDW02 OR ON_HANDW03 THEN IN_EXTMODE :=Ext_speed+Ext_axis+7; END_IF; IF ONEXTMODE=IN_EXTMODE THEN IN_EXTMODE:=0; END_IF; (*Brake release*) IF Z_Servo_Enable=TRUE THEN O_Z_Axis_Brake:=TRUE; ELSE O_Z_Axis_Brake:=FALSE; END_IF;

本文档为【PLC中文手册与结构化文本编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_477730
暂无简介~
格式:doc
大小:174KB
软件:Word
页数:73
分类:企业经营
上传时间:2017-09-16
浏览量:184