西门子6ES7222-1HF22-0XA8详细使用
数控机床控制系统中并非单纯的轨迹及定位控制,往往还有一些机床的逻辑动作需要相应的控制,这就要求在机床的电气控制中既有数字控制系统NC又有逻辑控制系统PLC,两者之间实现信息交换有多种方法。本文介绍了在实际设计、研制半自动提速铁路轴承内、外滚道超精机项目中,数控系统在机床伺服电机进给数控程序和机床其他动作的PLC程序控制两者之间的通信联络方法,此方法能有效地将上述两者的控制结合起来。该机床目前已制造完成用于轴承生产加工中,实践证明,该方法简单、实用,效果良好。
1 数控系统简介
数控系统中,执行数控NC功能的NCK软件程序和执行逻辑功能的PLC程序,需由用户根据机床的实际情况加以编制。软件设计中,主控程序是NcK软件程序;机床逻辑动作由NCK软件程序输出给PLc的辅助功能来完成。
1.1 输出给PLC的辅助功能
辅助功能又称M功能或M指令,是控制机床加工操作时作一些辅助动作的开/关功能,其主要用于机床加工时的工艺性指令,靠继电器的通断来实现其控制过程。辅助功能M代码是以地址M为首后跟2位数字组成,共100种(M00一M99)。机床上的各种开关操作可以通过零件程序中的M功能指令激活。M功能在使用时,每个程序段可以有5个M指令。M指令的值从O到99,为整数。其中少数几个M指令已经由系统生产厂商设置了一些固定功能,具体参见表1,其余部分可供机床生产厂商使用。
表1M功能表
1.2 PLC向NCK传送的信号
PLC用户程序和NcK(数控核心)之间通过不同的数据区可进行信号和数据的交换,PLC用户程序与交换无关,对使用者来说这是自动进行的。PLC/NCK的控制信号和状态信号会循环刷新。信号分为普通信号、运行方式信号、通道信号和进给轴/主轴信号。其中,在PLC-NcK的通道控制信号中,3200的PLC变量中的V32000006.1是读入使能禁止信号,其含义及使用方法如表2所示。
V32000006.1含义及使用方法
从表2可以看到,当对V32000006.1置“1”,禁止下一个程序段的数据传送到插补器,这时NC程序处于停止等待状态;当对v32000006.1复位清“0”,下一个程序段的数据传输给插补器,这时NC程序开始继续执行该下一程序段,通过对v32000006.1的置“1”和复位清“0”就可以实现对NC程序段的运行控制。在机床设计中,某些情况下只有结束辅助功能才可以执行下一个NC程序段,这时可以通过禁止读入信号阻止程序段的自动转换执行。
2 应用实例
半自动提速铁路轴承内、外滚道超精机的自动控制中,具有一个往复进给轴,由数控系统的进给轴输出接口控制伺服驱动系统,再由驱动系统控制交流伺服电动机,从而控制机床的进给轴往复进给运动,其余的电动机或动作由PLC输出,通过控制继电器或电磁阀来控制,其动作流程图如图1所示。
超精机动作流程(图1)中,所有的机床动作除了往复进给运动和工作轴电动机的粗、精超启动及停止由数控程序控制外,其余所有的机床动作皆以M功能的形式由数控程序输出到PLC。从动作流程图可以看出,芯轴插人、油石跳进等动作的命令输出后,不能马上执行下一个NC程序段,需等动作到位后才能继续NC程序,这时可在PLC程序中加入传送给NCK的读入禁止命令,停止NC程序的继续向下执行,直到该动作完成后,再由PLC向NCK发出读入使能命令,NC才能继续控制程序的执行。
这里,以油石跳进动作为例来加以说明。辅助功能M16是油石跳进命令,数控程序命令为在N20语句的程序命令中,油石跳迸命令以辅助功能M16形式给出,N30和N35语句的程序命令是进行超精加工的伺服电动机往复进给控制命令,从滚道超精机动作流程图可知,数控系统在发出油石跳进命令后,不能马上执行超精加工的伺服电动机往复进给数控动作,必须等到油石跳进到位开关动作后才能执行下面的N30和N35动作。正常情况下,NCK是一条接一条连续地读人数控程序命令并往下执行的,执行速度很快,在发出M功能指令后,NC紧接着就执行下一句程序段,这时PLC接受到的M功能指令可能还未来得及执行,数控程序已继续向下执行了。而机床要求NcK在执行完N20语句后,不能马上执行N30语句,在PLC接收到NcK发来的M16命令后,可以通过PIJC梯形图(图2),将PLC-NcK的通道控制信号中的v32000006.1设置为读人使能禁止,禁止下一个程序段的数据传送到插补器,这样,NcK不再执行下面的N30语句,当油石跳进动作完成,油石跳进到位开关动作后,取消读人使能禁止,允许NcK读入程序即v32000006.1设置为读入使能,NcK再继续执行N30语句。
图2油石跣进动作相关梯形图
冗余设计其实是一个很宽泛的技术概念,而不是大家理解中的技术方法,冗余原始概念是重复配置系统的一些部件,当系统发生故障时,冗余配置的部件介入并承担故障部件的工作,由此减少系统的故障时间。冗余按类型分为主动和被动形式,所谓主动和被动主要是主从切换的能动性上来分析,主动冗余是可以主动切换,就是可以随时自行切换;被动冗余是指当正在运行的组件坏掉或者不正常的时候才会切换到备用组件,其中也包括用户手动或者用户程序切换方式,按照功能来分又分成Hotstandby、Warm standby 和 Coldstandby,整理以后见下图:
1、 clod standby
冷备用,其实说白了就是backup,他是通过备份所有正常运行的组件放在一旁或者仓库里,等运行的组件坏了以后更换新的组件来完成系统的正常运行,这个冗余时间和更换时间息息相关。这种冷备用方式很少去关注响应时间,并且需要运维人员干预操作。举个例子,一套PLC运行系统,在做备件时做了完全的配置备件,当PLC在运行时因为夜晚雷电发现有一块AI卡件烧毁了,运维人员马上把系统断电,更换卡件,在上电运行,这就是一个完整的coldstandby的过程,至于其中耽误的时间,只能视运维人员的对系统的熟练程度而定并且必须被动接受。
2、 warm standby
温备用,是两套完全一样的配置组件,一个正常运行被视为主,另一个带机并不运行备用被视为从,每隔一段时间,主从的内容相互交换一次,当运行组件出现故障,备用组件才会运行承担工作。举个例子,西门子的300软冗余系统,两台微处理器的冗余方式就是温备,主处理器控制系统的输入和输出(I/ O),而备用处理器上电和主处理器停止控制过程中的等待时间。当发生这种情况,备用处理器承担的I / O控制,并采取指定的主处理器,处理器允许脱机成为次要处理器,并可以在不牺牲过程控制维护。
在正常操作中,主处理器提供定期更新的备用处理器。这些更新通常发生在每个程序扫描结束,并可能在任何时间只涉及了部分数据。当转换发生时,备用处理器可以工作过的数据不完整,因为它可能会采取一些备用处理器程序扫描追上来这里的主要是前转换。这可能有助于在转换过程中颠簸。
从硬件的角度来看,温,热冗余系统几乎相同,很容易混淆。
3、 hot standby
热备用,是两套完全一样的组件,全部都是上电并运行的状态,两个组件进行数据采集、数据处理和计算,只是主组件担任输出控制任务,两个组件实时交互,当主从切换的时候必须完成无扰动切换。热备组件系统是随时切换检测组件状态并报告。
热备系统在一瞬间也不能让系统godown,当主从切换的时候,需要完成系统通讯消息和数据更新以及堆栈的同步,从而苛刻实现程序执行的速度和堆栈段内容都是一致的,为了确保热备系统的操作正确性,全部数据需要实时主从交互,其交互方法有两种,种就是常规的扫描和传输方法,这种技术早期被施耐德的PLC广泛使用,先是在程序扫描结束后传输所改变的内容,程序扫描时间是程序执行和传输的时间组合,这也就是PLC的执行周期为什么有时间周期定义之说了,这样就不是每次把PLC内全部程序进行交互,减少同步任务复合,但当从plc内没有程序的时候,主plc会把全部内容同步过去,但这个过程只是上电或者运行时候做一次比较。这种热备方式是一种经典和准确的热备方法,并且这种方法延续至今。
第二种方法就是异步传输方法,在异步传输,主系统中在其电路有两个独立的微处理器。个微处理器执行程序。在执行结束,所有数据被传递给第二个微处理器。这第二个微处理器处理所有的传输任务,而个微处理器执行下一个程序扫描。一个微处理器是执行,而另一种是传输到备用处理器的数据。 由于这种从主处理器辅助处理器的数据传输是异步的程序扫描,它随时的数据传输,而不会影响程序执行和系统负荷。这种热备异步传输的方式是AB的Contrologix一项技术,他的冗余配置中主从系统各有三个CPU,个就是执行程序的CPU,第二个就是起到数据总线的背板CPU,第三个就是同步模块RM的CPU,他的任务被分配在多个CPU当中。
后还是要说一下,其实大家理解中的冗余技术其实就是热备的方法,因为传统DCS进入大家视野比较早,DCS厂家把冗余概念做到了,它把两套物理硬件在逻辑上封装成为一个独立体,造成很多技术人员认为只有物理上两个组件但在逻辑上是一个组件被称为冗余,逻辑上是两个组件的叫做热备。
常常遇到客户咨询自由口编程中字符中断的相关问题,比如“字符中断是什么?”,“字符中断怎么用?”,“用SMB接收多个字符,如何编程?”,“字符中断和RCV指令之间有什么关系?”。为了帮助您深入了解以上问题,我们就一起就这几个问题进行讨论,以达到抛砖引玉的效果!
常问问题一:字符中断是什么?
通过阅读系统手册,我们知道使用字符中断方式接收数据,接收每个字符时都会产生中断。在执行与接收字符事件相连的中断程序前,接收的字符存入SMB2寄存器中,校验状态存入SM3.0。 SMB2、SM3.0都是只读的。Port0/Port1共用SMB2/SMB3。Port0对应于中断事件8。Port1对应于中断事件25。
常问问题二:字符中断怎么用?
以端口0接收字符为例:
当CPU通过端口0接收到一个字符后,会将该字符存入接收字符缓冲区SMB2,进入相连接的中断程序中。
注意,对于这段程序,如果在中断程序中不作任何编程,那么当CPU接收n个字符时,中断程序将被执行n次,SMB2寄存器存储接收到的后一个字符。如上位机通过串口调试软件给CPU发送3个字符16#AA、16#BB和16#CC,
那么与接收字符事件相连的中断程序将被执行3次,SMB2中只能保存后一个接收到的字符16#CC。
常问问题三:用SMB接收多个字符,如何编程?
由于SMB2只能存储一个字符(一个字节),如果要想接受多个字符,则应当在CPU接收下一个字符之前,在中断程序中通过指针编程将SMB2中存储的字符移出来,以便下一次接收字符。以一个例程说明:
VD0作为地址指针指向VB100,当端口0接收到个字符,将个字符存入SMB2,进入接收中断,将SMB2中的字符复制到指针VD0指向的地址字节VB100中,指针地址加1,VD0指向下一个字节VB101。当接收第二个字符,将字符存入SMB2,进入接收中断,将SMB2中的第二个字符复制到指针VD0指向的地址字节VB101中,指针地址加1,VD0指向下一个字节VB102。当接收第三个字符时以此类推。
如果需要接收n个字符就结束接收,或者需要接收n个字符后循环接收,可以在中断程序中设置一个标志位,下面我们试举例说明:
例程1,接收到5个字符就结束接收的程序:
例程2,接收到5个字符后循环接收的程序:
后要提醒您注意的是,程序中的的指针不要选择累加器AC,因为累加器不能在主程序和中断程序中传递参数。
常问问题四:字符中断和RCV指令之间有什么关系?
简单地说,当RCV指令使能时,接收字符不进入SMB缓冲区。
我们可以设计个实验分析一下:
在主程序中我们既定义PLC执行RCV接收指令的起始结束条件(起始条件为起始字符16#AA,结束条件为结束字符16#BB),又建立字符中断事件8,上升沿条件触发RCV指令。
上位机通过串口调试软件给CPU发送字符。
程序如下图:
状态表监控结果:
结论:
当RCV指令不触发的话,接收字符只进入SMB2缓冲区,不进入RCV指令的接收缓冲区。
当RCV指令触发后,满足CPU接收的起始和结束条件的字符存入RCV指令对应的TBL缓冲区。起始条件之前的字符既不存入RCV缓冲区,也不存入SMB2缓冲区。结束条件之后接收到的字符,存入SMB2缓冲区。
通过以上几个问题的分析,我们对于字符中断和SMB2的基本用法和特点做了介绍,相信在实际项目中会有更多灵活的应用等待我们去发掘。