控制装置及控制方法与流程

文档序号:17184132发布日期:2019-03-22 21:11阅读:156来源:国知局
控制装置及控制方法与流程

本发明涉及一种用于对控制对象进行控制的控制装置及控制方法。



背景技术:

在各种生产现场,使用可编程逻辑控制器(programmablelogiccontroller,plc)(可编程控制器)等控制装置的工厂自动化(factoryautomation,fa)技术已广泛普及。此种控制装置也有时不仅直接对控制对象进行控制,而且还通过对其他装置给予控制指令而间接对控制对象进行控制。例如日本专利特开2013-134786号公报(专利文献1)中公开了一种由工作机械及连接于工作机械的可编程逻辑控制装置构成的系统。

另一方面,随着近年来的信息及通信技术(informationandcommunicationtechnology,ict)的进步,控制装置的处理能力也不断飞跃性地提高。也产生了欲将现有技术中使用多个专用装置实现的控制系统合并成数量更少的控制装置等需求(needs)。例如日本专利特开2012-194662号公报(专利文献2)中公开了一种由plc的中央处理器(centralprocessingunit,cpu)单元同步执行动作运算程序及用户程序的构成。根据日本专利特开2012-194662号公报(专利文献2)中公开的构成,能够联合/互相同步执行顺序程序等用户程序与动作运算程序。



技术实现要素:

设想以下需求高涨:欲利用单一控制装置来实现执行形态不同的多种程序的控制运算。在利用单一控制装置执行多种程序时,有时也要求一面使程序间彼此联合一面加以执行。本发明面向此种需求,其一个目的在于提供一种能容易地联合执行多种程序的环境。

本公开的一例的控制装置包含:第一程序执行部,在每个第一控制周期中执行顺序程序而算出第一指令值;第二程序执行部,执行以依次解释的代码记述的应用程序,在每个第一控制周期中算出第二指令值;共享存储器,构成为能从第一程序执行部及第二程序执行部均进行存取。第一程序执行部按照顺序程序所含的命令,将程序执行过程中所用的第一共享变量值写入共享存储器中。第二程序执行部按照应用程序中记述的代码,一面参照共享存储器中保持的第一共享变量值一面执行应用程序。

根据本公开,能利用对共享存储器中保持的第一共享变量值的写入及参照,容易地联合执行顺序程序及应用程序。

所述公开中,第二程序执行部也可包含:解释器,在第一控制周期的整数倍的每个第二控制周期中依次解释应用程序而生成中间代码;指令值运算部,根据由解释器生成的中间代码,在每个第一控制周期中算出第二指令值。也可与解释器的处理完成对应,在每个第二控制周期中在第一程序执行部及第二程序执行部与共享存储器之间执行数据同步处理。

根据本公开,能避免如下事态:在并行执行控制周期不同的多个处理的第一程序执行部及第二程序执行部之间,共享变量值在处理中途变化。

所述公开中,数据同步处理也可在解释器的处理完成后、随后到来的第一控制周期内执行。

根据本公开,若能进行数据同步,则能够尽早执行数据同步处理,从而能更迅速地更新第一程序执行部与第二程序执行部之间的共享变量。

所述公开中,第一程序执行部也可一面参照共享存储器中保持的值一面执行顺序程序。

根据本公开,第一程序执行部执行顺序程序时,能一面参照解释器等第二程序执行部中的处理状态,一面提供适当的时机及内容的处理。

所述公开中也可为:解释器按照应用程序中记述的代码,将程序执行过程中参照的第二共享变量值写入所述共享存储器中,应用程序中记述的代码包含特殊代码,此特殊代码用于在更新第二共享变量值之后,等待由第一程序执行部更新第二共享变量值。

根据本公开,通过在应用程序中使用特殊代码,无需制作用于使处理时机同步的命令,能减少程序开发工作量。

所述公开中,特殊代码也可按用于记述应用程序的语言形式预先定义。

根据本公开,通过采用按用于记述应用程序的语言形式定义的特殊代码,应用程序的开发者能利用特殊代码而并无违和感。

所述公开中,解释器也可在第一程序执行部及指令值运算部均不执行处理的期间中执行处理。

根据本公开,即便是运算资源有限的程序执行环境,也能实现顺序程序及应用程序的联合执行。

所述公开中,应用程序也可为按预定的语言记述的数控程序。

根据本公开,能更高精度地实现依数控进行控制的工作机械等的控制。

根据本公开的一例,提供一种控制装置的控制方法。控制方法包括以下步骤:在每个第一控制周期中执行顺序程序而算出第一指令值;以及执行以依次解释的代码记述的应用程序,在每个第一控制周期中算出第二指令值。控制装置包含共享存储器,此共享存储器构成为能从顺序程序的执行主体及应用程序的执行主体均进行存取。算出第一指令值的步骤包括:按照顺序程序所含的命令,将程序执行过程中所用的第一共享变量值写入共享存储器中的步骤。算出第二指令值的步骤包括:按照应用程序中记述的代码,一面参照共享存储器中保持的第一共享变量值一面执行应用程序。

根据本公开,能利用对共享存储器中保持的第一共享变量值的写入及参照,容易地联合执行顺序程序及应用程序。

根据本发明的一例,能提供一种能容易地联合执行多种程序的环境。

附图说明

图1为表示本实施范例的控制装置的应用场景的一例的示意图。

图2为表示本实施范例的控制系统的整体构成例的示意图。

图3为表示本实施范例的控制装置的硬件构成例的方块图。

图4为表示本实施范例的控制装置的程序执行机构的构成例的示意图。

图5为用于对本实施范例的控制装置中的中间代码的生成例进行说明的示意图。

图6为表示本实施范例的控制装置中的程序执行及数据同步的周期的时间图。

图7为用于对本实施范例的控制装置中联合执行顺序程序及nc程序的情况的程序的一例进行说明的示意图。

图8为表示图7所示的联合执行顺序程序及nc程序的情况的处理的时间图。

图9为表示本实施范例的控制装置中联合执行顺序程序及nc程序的处理顺序的流程图。

[符号的说明]

1:控制系统;

2:现场网络;

6:上级网络;

10:第一程序执行部;

12:第二程序执行部;

14:第一指令值;

16:第二指令值;

18:第一共享变量值;

20:共享存储器;

30:顺序程序;

32:应用程序;

34:nc程序;

36:系统程序;

100:控制装置;

102:处理器;

104:芯片组;

106:主存储器;

108:存储部;

110:上级网络控制器;

112:usb控制器;

114:存储卡接口;

116:存储卡;

120:内部总线控制器;

122:i/o单元;

130:现场网络控制器;

142:顺序指令值;

144:动作指令值;

150:顺序程序执行部;

152:顺序命令处理部;

154:动作指令值运算部;

160:nc程序执行部(数控程序执行部);

162:解释器;

164:中间代码缓冲器;

166:中间代码;

168:cnc指令值运算部;

170:cnc指令值;

180:输入输出刷新处理;

182、184、186:共享变量;

188:数据同步处理;

200:支援装置;

300:伺服装置;

302:cnc_coordcontrol(cnc坐标控制)命令;

304:cnc_coordcatchmcode(cnc坐标撷取m代码)命令;

306:处理;

308:cnc_coordresetmcode(cnc坐标重置m代码)命令;

342:特殊代码;

400:显示装置;

500:现场设备;

510:远程i/o装置;

520_1、520_2、520_3、530:伺服驱动器;

522_1、522_2、522_3:伺服电机;

540:工作机械;

550:搬送装置;

554:作业台;

fx1(t)、fx2(t)、fx3(t):函数;

s100~s124、s200~s214:步骤;

t1:控制周期;

t1、t2、t3:时间

t2:应用周期;

w:工件。

具体实施方式

一方面参照附图一方面对本发明的实施范例进行详细说明。此外,对图中的相同或相当部分标注相同符号,不重复进行说明。

<a.应用例>

首先参照图1,对应用本发明的场景的一例进行说明。图1为表示本实施范例的控制装置100的应用场景的一例的示意图。本实施范例的控制装置100控制任意的控制对象(例如制造装置或设备)。

如图1所示,控制装置100包含:第一程序执行部10,在每个第一控制周期中执行顺序程序30而算出第一指令值14;以及第二程序执行部12,按照以依次解释的代码记述的应用程序32,在每个第一控制周期中算出第二指令值16。

控制装置100还包含共享存储器20,此共享存储器20构成为能从第一程序执行部10(即顺序程序30的执行主体)及第二程序执行部12(即应用程序32的执行主体)均进行存取。第一程序执行部10按照顺序程序30所含的命令,将程序执行过程中所用的第一共享变量值18写入共享存储器20中。

第一指令值14及第二指令值16是通过未图示的输入输出刷新处理部而输出给作为控制对象的设备或装置等。写入共享存储器20中的第一共享变量值18也能由第二程序执行部12参照。即,第二程序执行部12也能按照应用程序32中记述的代码,一面参照共享存储器20中保持的第一共享变量值18一面执行应用程序32。

本说明书中,“顺序程序”为包含每当执行时被整体扫描且每当执行时算出一个或多个指令值的程序的概念。“顺序程序”包含由按国际电工委员会(internationalelectrotechnicalcommission,iec)规定的国际标准iec61131-3记述的一个或多个命令组成的程序。“顺序程序”中可包含顺序命令和/或动作命令。此外,“顺序程序”不限于按国际标准iec61131-3记述的命令,也可包含plc(可编程控制器)的制造商或供应商(vendor)等独自规定的命令。如此,“顺序程序”适于要求即时性及高速性的控制。

本说明书中,“顺序命令”基本上为包含由算出输入值、输出值、内部值等的一个或多个逻辑回路所记述的一个或多个命令的术语。基本上在一次控制周期中将“顺序命令”从最初开始执行到最末,并在下一控制周期中再次将“顺序命令”从最初开始执行到最末。本说明书中,“动作命令”为包含用于对伺服电机等致动器算出位置、速度、加速度、急动度、角度、角速度、角加速度、角急动度等数值作为指令的一个或多个命令的术语。“动作命令”也是在一次控制周期中,将由功能块或数值算出式等记述的动作命令的程序(动作程序)从最初开始执行到最末。即,在每个第一控制周期中算出(更新)指令值。

典型而言,由第一程序执行部10算出的第一指令值14包含按照顺序命令决定的数字输出的开/关、及按照动作命令算出的模拟输出。

本说明书中,“应用程序”包含依次解释的任意程序。即,“应用程序”包含能以逐行依次解释并执行的解释器方式执行的以任意语言记述的程序。以下的说明中,作为此种“应用程序”的一例,设想记述计算机数控(computernumericalcontrol,cnc)的行为的程序(以下也称为“nc程序”)。nc程序是按预定的语言记述。

但是不限定于此种nc程序,例如也能应用于用于控制机器人的程序等。作为一例,nc程序是使用“g语言”记述,用于控制机器人的程序大多是使用专用的机器人语言记述。

如下文将述,本实施范例的应用程序被转换成“中间代码”后,根据“中间代码”在每个第一控制周期中算出第二指令值16。本说明书中,“中间代码”为包含用于按照依次解释的程序(原本不适于在每个固定周期中更新指令值等处理)在每个第一控制周期中算出指令值的任意命令的概念。即,只要第二程序执行部12能在每个第一控制周期中算出指令值,则中间代码可为任何代码。典型而言,“中间代码”包含一个或多个命令或者一个或多个函数。

本实施范例的控制装置100执行在每个第一控制周期中被整体扫描的顺序程序30、及依次解释的应用程序32,并在每个第一控制周期中算出按照各程序的指令值。此时,按照顺序程序30算出或更新第一共享变量值18。另一方面,第二程序执行部12能参照第一共享变量值18控制应用程序32的执行。例如,能实现在第一共享变量值18变更为预定值之前中断下一行的解释等处理。

如此,本实施范例中,通过经由顺序程序30适当更新第一共享变量值18的值,能间接控制应用程序32的执行开始、执行中断、执行待机、执行结束等。因此,可在将顺序程序30及应用程序32组合的系统中容易地实现依各程序的同步处理等。

另外,也可根据应用程序32更新共享存储器20中保持的共享变量值,此情况下,应用程序32能主导控制顺序程序30的执行开始、执行中断、执行待机、执行结束等。

本实施范例的控制装置100中,在执行顺序程序30及应用程序32两者时,能从各程序存取共享存储器20上的任意的共享变量值,通过适当利用此种共享存储器20中保持的共享变量值,能实现将多种程序组合的任意系统。

以下,作为本发明的更具体的应用例,对本实施范例的控制装置100的更详细的构成及处理进行说明。

<b.控制系统的整体构成例>

其次,对包含本实施范例的控制装置的控制系统1的整体构成例进行说明。图2为表示本实施范例的控制系统1的整体构成例的示意图。图2中示出以本实施范例的控制装置100为中心的控制系统1。

控制装置100相当于控制各种设备或装置等控制对象的工业用控制器。控制装置100为执行下文将述那样的控制运算的一种计算机,典型而言能以plc(可编程控制器)的形式具体化。

图2所示的构成中,控制装置100执行顺序程序30及作为应用程序32的一例的nc程序34。

控制装置100也可经由现场网络2与各种现场设备500连接。控制装置100经由现场网络2等在与一个或多个现场设备500之间交换数据。通常“现场网络”也被称为“现场总线”,但为了简化说明,在以下的说明中统称为“现场网络”。即,本说明书的“现场网络”为除了狭义的“现场网络”以外还可包括“现场总线”的概念。

控制装置100所执行的控制运算包括:收集现场设备500所收集或生成的数据(输入数据)的处理(输入处理)、生成对现场设备500的指令值等数据(输出数据)的处理(运算处理)、将所生成的输出数据发送给对象的现场设备500的处理(输出处理)等。

现场网络2优选采用进行固定周期通信的总线或网络。此种进行固定周期通信的总线或网络已知以太网控制自动化技术(ethercontrolautomationtechnology,ethercat)(注册商标)、以太网工业协议(ethernetindustryprotocol,ethernet/ip)(注册商标)、设备网(devicenet)(注册商标)、混合网(componet)(注册商标)等。在保证数据到达时间的方面,优选ethercat(注册商标)。

现场网络2上能连接任意的现场设备500。现场设备500包含对处于现场侧的制造装置或生产线等给予某些物理作用的致动器、及在与现场之间交换信息的输入输出装置等。

虽经由现场网络2在控制装置100与现场设备500之间进行数据交换,但这些交换数据是以几百微秒(μsec)级~几十毫秒(msec)级的极短周期更新。

图2所示的构成例中,控制装置100控制cnc工作机械540及对cnc工作机械540供给工件w的搬送装置550。

cnc工作机械540按照指定位置或速度等的nc程序34来控制加工中心(machiningcenter)等,由此对任意对象物进行加工。cnc工作机械540不限于图示,能应用于车床加工、铣床、放电加工等的任意加工装置。

cnc工作机械540及搬送装置550是按照来自控制装置100的指令值而被驱动。将由搬送装置550搬送的工件w配置在作业台554上,并由cnc工作机械540进行指定的加工。

图2所示的构成例中,现场设备500包含远程输入/输出(input/output,i/o)装置510、伺服驱动器520_1、伺服驱动器520_2、伺服驱动器520_3及伺服电机522_1、伺服电机522_2、伺服电机522_3、以及伺服驱动器530。

典型而言,远程i/o装置510包含经由现场网络2进行通信的通信耦合器、及用于进行输入数据的取得及输出数据的输出的输入输出部(以下也称为“i/o单元”)。远程i/o装置510上,连接有输入继电器或各种传感器(例如模拟传感器、温度传感器、振动传感器等)等收集输入数据的装置,以及输出继电器、接触器、伺服驱动器及其他任意致动器等对现场给予某些作用的装置。

现场设备500不限于所述设备,能采用收集输入数据的任意设备(例如视觉传感器等)、给予依输出数据的某些作用的任意设备(例如逆变器装置等)、各种机器人等。

伺服电机522_1、伺服电机522_2、伺服电机522_3是作为cnc工作机械540的一部分而组入。伺服驱动器520_1~伺服驱动器520_3按照来自控制装置100的指令值(例如位置指令值或速度指令值等)驱动对应的伺服电机。图2所示的构成例中,伺服电机5221、伺服电机522_2、伺服电机522_3为cnc工作机械540的x轴、y轴、z轴的驱动源,所述三轴优选一体控制。

伺服驱动器530驱动用于更换cnc工作机械540的前端工具的机构中组入的伺服电机(未图示)。前端工具的更换必须与cnc工作机械540的x轴、y轴、z轴的控制同步执行。

本实施范例的控制装置100不仅能通过执行顺序程序30而生成按照顺序命令及动作命令决定的指令值,而且能通过执行nc程序34而生成用于控制cnc工作机械540的行为的指令值。其中,通过顺序程序30所含的控制命令来控制nc程序34的执行开始及执行结束等。

以下的说明中,cnc工作机械540的x轴、y轴、z轴主要是按照nc程序34进行控制,cnc工作机械540的前端工具的更换动作主要是按照顺序程序30进行控制。

控制装置100也经由上级网络6连接于其他装置。上级网络6也可采用作为普通网络协议的以太网(ethernet)(注册商标)或ethernet/ip(注册商标)。更具体而言,上级网络6上也可连接着一个或多个伺服装置300及一个或多个显示装置400。

关于伺服装置300,设想数据库系统(databasesystem)、制造执行系统(manufacturingexecutionsystem,mes)等。制造执行系统取得来自控制对象的制造装置或设备的信息并监视及管理整个生产,也能操作订货(order)信息、品质信息、出货信息等。不限于此,也可将提供信息系统服务的装置连接于上级网络6。关于信息系统服务,设想取得来自控制对象的制造装置或设备的信息并进行宏观分析或微观分析等的处理。例如设想数据挖掘(datamining)或机械学习工具等,所述数据挖掘提取来自控制对象的制造装置或设备的信息中所含的某些特征性倾向,所述机械学习工具用于根据来自控制对象的设备或机械的信息进行机械学习。

显示装置400接受来自用户的操作,对控制装置100输出与用户操作相应的命令等,并且以图形(graphical)的形式显示控制装置100中的运算结果等。

控制装置100上能连接支援装置200。支援装置200为对控制装置100对控制对象进行控制所需要的准备给予支援的装置。具体而言,支援装置200提供:控制装置100所执行的程序的开发环境(程序制作编辑工具、剖析器(parser)、编译器(compiler)等)、用于设定控制装置100及连接于控制装置100的各种设备的构成信息(配置(configuration))的设定环境、将所生成的用户程序输出给控制装置100的功能、在线(on-line)修正/变更控制装置100上执行的用户程序等的功能等。

<c.控制装置的硬件构成例>

其次,对本实施范例的控制装置100的硬件构成例进行说明。

图3为表示本实施范例的控制装置100的硬件构成例的方块图。参照图3,控制装置100为被称为cpu单元的运算处理部,包含处理器102、芯片组(chipset)104、主存储器106、存储部(storage)108、上级网络控制器110、通用串行总线(universalserialbus,usb)控制器112、存储卡接口114、内部总线控制器120及现场网络控制器130。

处理器102是由cpu(centralprocessingunit)、微处理器(microprocessingunit,mpu)、图形处理器(graphicsprocessingunit,gpu)等构成。处理器102也可采用具有多核(core)的构成,也可配置多个处理器102。芯片组104通过控制处理器102及周边元件(element)而实现整个控制装置100的处理。主存储器106是由动态随机存取存储器(dynamicrandomaccessmemory,dram)或静态随机存取存储器(staticrandomaccessmemory,sram)等挥发性存储装置等构成。存储部108例如是由硬盘驱动器(harddiskdrive,hdd)或固态驱动器(solidstatedrive,ssd)等非挥发性存储装置等构成。

处理器102读取存储部108中存储的各种程序并在主存储器106中展开执行,由此实现与控制对象相应的控制及下文将述那样的各种处理。存储部108中除了存储用于实现基本功能的系统程序36以外,还存储根据控制对象的制造装置或设备而制作的用户程序(顺序程序30及nc程序34)。

上级网络控制器110经由上级网络6而控制与伺服装置300或显示装置400(参照图3)等之间的数据交换。usb控制器112经由usb连接而控制与支援装置200之间的数据交换。

存储卡接口114构成为可装卸存储卡116,且能对存储卡116写入数据,从存储卡116读取各种数据(用户程序或跟踪数据(tracedata)等)。

内部总线控制器120控制与控制装置100上安装的i/o单元122之间的数据交换。现场网络控制器130控制经由现场网络2的与现场设备之间的数据交换。

图3中示出了通过处理器102执行程序而提供必要功能的构成例,但也可使用专用的硬件电路(例如专用集成电路(applicationspecificintegratedcircuit,asic)或现场可编程门阵列(field-programmablegatearray,fpga)等)来安装所述提供的功能的一部分或全部。或者,也可使用按照通用体系结构(architecture)的硬件(例如以通用个人计算机为基础的工业个人计算机)来实现控制装置100的主要部分。此情况下,也可使用虚拟化技术并行执行用途不同的多个操作系统(operatingsystem,os),并且在各os上执行必要的应用。

图2所示的控制系统1中,控制装置100、支援装置200及显示装置400是分别以个体的形式构成,但也可采用将所述装置的全部或一部分功能归集到单一装置中那样的构成。

<d.程序执行机制>

然后,对本实施范例的控制装置100的程序执行机构例进行说明。

图4为表示本实施范例的控制装置100的程序执行机制的构成例的示意图。参照图4,控制装置100具有作为第一程序执行部10的具体例的顺序程序执行部150、及作为第二程序执行部12的具体例的数控程序执行部160(以下也称为“nc程序执行部”)。

顺序程序执行部150在每个第一控制周期中执行顺序程序30而算出第一指令值14。具体而言,顺序程序执行部150具有顺序命令处理部152及动作指令值运算部154,执行顺序程序30。

顺序命令处理部152解释顺序程序30所含的顺序命令,执行指定的顺序运算(逻辑运算),在每个第一控制周期中算出或更新顺序指令值142。顺序程序执行部150按照顺序程序30所含的命令,将程序执行过程中使用的第一共享变量值(例如共享变量184)写入共享存储器20中。

以下为了便于说明,将与第一控制周期对应的周期简称为“控制周期”,将与第二控制周期对应的周期(典型而言为第一控制周期的整数倍)也称为“应用周期”。

动作指令值运算部154按照顺序程序30所含的动作命令算出动作指令值144。动作命令利用一个命令在多个控制周期中定义动作指令值144的算出,动作指令值运算部154解释此种动作命令,在每个控制周期中算出动作指令值144。

由顺序命令处理部152算出的顺序指令值142、及由动作指令值运算部154算出的动作指令值144为第一指令值14的一例。

nc程序执行部160执行以依次解释的代码记述的应用程序32(图4所示的示例中为nc程序34),在每个第一控制周期中算出第二指令值16。即,nc程序执行部160以解释器方式执行nc程序34,在每个控制周期中算出对各电机的指令值(以下也称为“cnc指令值170”)。

nc程序执行部160进行的cnc指令值170的算出或更新是在每个控制周期中重复执行。如此,与顺序程序执行部150进行的指令值算出同步,nc程序执行部160算出依nc程序34的cnc指令值170。为了实现每个控制周期的指令值算出,nc程序执行部160中使用中间代码,此中间代码是用于算出指令值。

另外,nc程序执行部160按照应用程序32(图4所示的示例中为nc程序34)中记述的代码,一面参照共享存储器20中保持的第一共享变量值(例如共享变量184)一面执行应用程序32。

更具体而言,nc程序执行部160包含解释器162、中间代码缓冲器164及cnc指令值运算部168。

解释器162在控制周期(第一控制周期)的整数倍的每个应用周期(第二控制周期)中依次解释应用程序32(图4所示的示例中为nc程序34)而生成中间代码166。解释器162将生成的中间代码166依次存储在中间代码缓冲器164中。解释器162以某种程度事先根据nc程序34进行中间代码166的生成。因此,中间代码缓冲器164中有时也存储着多个中间代码166。本实施范例中,解释器162生成用于算出cnc指令值170的轨道,因此有时也被称为“规划器(planner)”。

解释器162进行的nc程序34的解释是在每个应用周期(第二控制周期)中重复执行。此外,在控制装置100的处理器102的资源有限的情况下,在顺序程序执行部150和/或cnc指令值运算部168执行每个控制周期的处理的期间中,中断解释器162的处理。因此,解释器162在应用周期中能完成处理的范围内,读入nc程序34的一部分,执行中间代码的生成等处理。

cnc指令值运算部168按照由解释器162生成的中间代码166在每个控制周期(第一控制周期)中算出cnc指令值170(第二指令值)。通常nc程序中记述的命令(代码)是依次解释,因此并不保证能在每个运算周期中算出cnc指令值170,但通过利用中间代码166,能实现每个控制周期的cnc指令值170的算出。

解释器162将生成的中间代码166在中间代码缓冲器164中依次列队(queueing),cnc指令值运算部168以中间代码缓冲器164中的列队次序读取中间代码166。

共享存储器20构成为能从顺序程序执行部150及数控程序执行部160均进行存取。典型而言,共享存储器20是利用控制装置100的主存储器106(参照图3)等提供的区域实现。共享存储器20中也可保持一个或多个共享变量值。所述共享变量值能从顺序程序执行部150和/或数控程序执行部160存取。

图4所示的示例中,作为一例,示出从顺序命令处理部152写入的共享变量182、从顺序命令处理部152及解释器162均写入的共享变量184、及从解释器162写入的共享变量186。不限于图4所示的示例,也可定义能从顺序程序执行部150和/或数控程序执行部160的任一元件写入/读取的任意的共享变量。

进而,也可对任一共享变量安装用于防止多个元件互相写入值的排外处理等。

<e.中间代码>

然后,对nc程序执行部160的解释器162解释nc程序34而生成的中间代码的一例进行说明。

图5为用于对本实施范例的控制装置100中的中间代码的生成例进行说明的示意图。参照图5的a部分,当nc程序执行部160的解释器162依次执行nc程序34时,nc程序34所含的各命令被解释((1)nc程序解释)。通过此命令解释而在内部生成规定的轨道((2)轨道生成)。在规定了由多个轴组成的群的情况下,可对各轴分别生成轨道,也可生成规定属于此群的轴的整体行为的轨道。

最终,解释器162将生成的轨道分割成既定的区间后,生成规定各区间的轨道的一个或多个函数(中间代码)((3)中间代码生成)。

也可利用共同的中间代码规定多个区间,或也可将一个区间进一步分割并生成各自的共同代码。即,无需使nc程序34的命令或根据此命令规定的轨道的区间与生成的中间代码的个数一致,只要任意生成即可。另外,关于中间代码166的输出形态,也可考虑所要求的控制周期的时间宽等而适当设计。

如图5的a部分所示,中间代码166的一例也可为规定时间与指令值的关系的函数。图5的a部分所示的示例中,在内部生成的轨道能以直线的组合来规定。作为一例,关于x轴,能输出针对每个直线区间(区间1~区间3)的轨道表示时间与速度的关系的函数fx1(t)、函数fx2(t)、函数fx3(t)。关于属于同一群的其他轴(例如y轴及z轴),也可分别同样地输出函数。

如图5的b部分所示,nc程序执行部160的cnc指令值运算部168在每个控制周期中按照生成的中间代码166算出指令值,由此在每个控制周期中算出指令值((4)指令值算出(轴个数))。即,通过在与各区间对应的函数中输入各控制周期的时刻,能唯一地决定此时刻的指令值。在设定了某个群的情况下,优选对属于此群的各轴同步输出指令值。

所述图5中,作为一例,示出利用cnc所用的g语言记述的代码的一例,但不限于此,只要为任意的以解释器方式执行的程序,则也可使用任何语言。另外,也可根据处理对象的语言形式使生成的中间代码的形式不同。

<f.程序执行及数据同步的周期>

接着,对本实施范例的控制装置100中的程序执行及数据同步的周期进行说明。

图6为表示本实施范例的控制装置100中的程序执行及数据同步的周期的时间图。图6中作为一例,示出以不同优先度设定多个任务,且各任务根据各自的优先度共享处理器102的资源的示例。

图6所示的示例中,设定以下4个处理作为高优先任务:(1)输入输出刷新处理180,包含从现场侧取得输入数据的处理及将算出的指令值输出给现场侧的处理;(2)顺序命令处理部152通过执行顺序程序30而算出顺序指令值142的处理;(3)cnc指令值运算部168通过执行nc程序34而算出cnc指令值170的处理;(4)动作指令值运算部154通过执行顺序程序30而算出动作指令值144的处理。

另外,作为低优先任务,设定nc程序执行部160的解释器162进行的nc程序34的依次解释。

高优先任务是在每个预定的控制周期t1中重复执行。图6所示t1、t2与t3表示时间。图6所示的处理例中,低优先任务是在不执行高优先任务的期间中适当执行。即,在每个控制周期中,分配高优先任务的执行时间,在高优先任务的执行时间以外的时间执行低优先任务。更具体而言,nc程序执行部160的解释器162可在顺序程序执行部150及cnc指令值运算部168均不执行处理的期间中执行处理。

其中,在采用多核处理器作为处理器102或配置有多个处理器102的情况下,也可并行执行高优先任务及低优先任务。

首先对高优先任务进行说明,当各控制周期的开始时机到来时,首先执行输入输出刷新处理180后,顺序命令处理部152执行顺序程序30,由此算出顺序指令值142。cnc指令值运算部168根据解释nc程序34生成的中间代码166算出cnc指令值170。另外,动作指令值运算部154按照顺序程序30所含的动作命令,算出动作指令值144。以后,在每个控制周期t1中重复同样的处理。

作为高优先任务,(基本上)在每个应用周期t2中执行数据同步处理188,此数据同步处理188用于在顺序程序执行部150及数控程序执行部160与共享存储器20之间同步共享变量。

通过数据同步处理188,顺序命令处理部152能在顺序指令值142的算出过程等中参照共享存储器20中保持的共享变量。cnc指令值运算部168和/或动作指令值运算部154也能在程序的执行过程等中参照共享存储器20中保持的共享变量。

当各控制周期的高优先任务的执行完成时,算出顺序指令值142、cnc指令值170、动作指令值144的组。所述指令值基本上是在下一控制周期的开始时机到来时,通过输入输出刷新处理180反映给现场侧。另外,应反映给共享存储器20的共享变量的值是通过数据同步处理188而被反映给共享存储器20。

图6中为了便于说明,示出以算出顺序指令值142、算出cnc指令值170、算出动作指令值144的顺序执行处理的示例,但处理的执行顺序也可适当变更,也可将各处理进一步细分化而交替执行。即,只要能在前一次输入输出刷新处理180的执行完成后到下一次输入输出刷新处理180的执行开始前的期间中,算出应作为包含指令值的外部数据而输出的数据即可。

另一方面,对低优先任务进行说明,在每个预定的应用周期t2(基本上为控制周期t1的整数倍)中,触发nc程序执行部160的解释器162进行的处理。nc程序执行部160的解释器162依次解释nc程序34。将解释器162对nc程序34进行分析处理而生成的中间代码166在中间代码缓冲器164(参照图4)中依次列队(入队(enqueue))。cnc指令值运算部168使在中间代码缓冲器164中列队的中间代码166逐一出队(dequeqe)以用于算出cnc指令值170。

解释器162通过对nc程序34事先进行分析处理,能预先多余地生成cnc指令值运算部168算出cnc指令值170所需要的中间代码。

如图6所示,解释器162有时也将nc程序34的依次解释在中途中断且片段地执行。由于采用此种执行形态,因此在每个控制周期t1中执行对共享存储器20的数据同步处理188的情况下,也有可能参照侧的共享变量的值在处理中途变化。

因此,本实施范例中,与解释器162的处理完成对应,在每个应用周期t2中在顺序程序执行部150及数控程序执行部160与共享存储器20之间执行数据同步处理188。通过执行此种对共享存储器20的排外处理,能避免参照侧的共享变量在处理中途变化等事态。

更具体而言,解释器162依次执行在每个应用周期t2中解释nc程序34的至少一部分的处理。解释器162在一次应用周期t2中解释的nc程序34的代码量变化。因此,当解释器162在每个应用周期t2中完成对象代码的处理时,发出执行完成通知。接到此执行完成通知而执行数据同步处理188。

数据同步处理188只要以对象控制周期t1内的任一时机执行即可,本实施范例中,在顺序命令处理部152的处理后、cnc指令值运算部168的处理前执行。其原因在于:将由顺序命令处理部152生成的指令值中作为共享变量而输出的值即刻反映给共享存储器20。

为了使此种向共享存储器20反映共享变量值的时滞最小化,数据同步处理188也可在解释器162的处理完成后、随后到来的控制周期t1内执行。

通过与解释器162的处理完成对应地在每个应用周期t2中执行图6所示那样的共享存储器20的共享变量的写入及参照,在顺序程序30的执行处理与nc程序34的执行处理之间不会产生共享变量的不一致,能实现必要的共享变量的共享或交换。

此外,在顺序程序30与nc程序34之间无需控制严格的处理同步性等的情况下,也可在高优先任务及低优先任务各自的控制周期中,进行对共享存储器20上的共享变量的写入及参照。由于在顺序程序执行部150与数控程序执行部160之间不需要共享存储器20的排外处理,因此能简化控制装置100的系统上的处理。

<g.程序例>

然后,对在顺序程序30与nc程序34之间使用共享变量执行控制的程序的一例进行说明。

图7为用于对本实施范例的控制装置100中联合执行顺序程序30及nc程序34的情况的程序的一例进行说明的示意图。参照图7,控制装置100并行执行顺序程序30及nc程序34。

图7所示那样的两个程序例如可用于如下应用:在图2所示那样的cnc工作机械540中,在按照nc程序34对工件w执行第一加工处理后,更换cnc工作机械540的前端工具,然后按照nc程序34对工件w执行第二加工处理。此种情况下,例如图7所示的nc程序34的前半部分相当于记述第一加工处理的代码,后半部分相当于记述第二加工处理的代码。另外,顺序程序30也可包含用于更换cnc工作机械540的前端工具的命令。

由顺序程序执行部150执行的顺序程序30包含cnc_coordcontrol(cnc坐标控制)命令302。cnc_coordcontrol命令302为开始在数控程序执行部160中执行nc程序34的命令。当指示cnc_coordcontrol命令302的执行时((1)开始触发),将内部的执行指令给予数控程序执行部160((2)nc程序执行开始),开始由数控程序执行部160执行nc程序34((3)执行)。此时,nc程序34所含的代码被依次解释。

nc程序34包含用于控制nc程序34的执行的特殊代码342。此种nc程序34中记述的特殊代码342指示:更新执行中断变量的值(第二共享变量值)之后,等待顺序程序执行部150更新执行中断变量。当解释特殊代码342时,将共享存储器20中保持的对应的共享变量的值更新。图7所示的示例中,以类似于g语言记述的形式记述有“m100”代码作为特殊代码342。如此,特殊代码342也能以用于记述nc程序34(或应用程序32)的语言形式预先定义。

共享变量的数据型可为任何类型,本实施范例中采用被设置(设定为真(true))或重置(设定为假(false))的布尔值。为了便于说明,将此种共享变量也称为“执行中断变量”。即,当由数控程序执行部160解释nc程序34的特殊代码342时,共享存储器20中保持的执行中断变量被设置((4)执行中断变量设置),并且nc程序34的执行被中断。即,nc程序34所含的特殊代码342在执行中断变量被重置之前不响应执行完成,nc程序34的执行在特殊代码342的位置被实质上中断。

另一方面,由顺序程序执行部150执行的顺序程序30包含cnc_coordcatchmcode(cnc坐标撷取m代码,即cnc坐标m代码检测)命令304。cnc_coordcatchmcode命令304在执行过程中(起效期间)监视共享存储器20中保持的执行中断变量的值。而且,当执行中断变量被设置(设定为真(true))时,cnc_coordcatchmcode命令304输出真(true)作为检测结果((5)执行中断变量检测)。

接到来自cnc_coordcatchmcode命令304的真(true)输出,执行顺序程序30中预先规定的处理306((6)必要处理执行)。

当预先规定的处理306的执行完成时,执行顺序程序30所含的cnc_coordresetmcode(cnc坐标重置m代码)命令308。cnc_coordresetmcode命令308将共享存储器20中保持的执行中断变量的值重置((7)执行中断变量重置)。即,通过执行cnc_coordresetmcode命令308,将共享存储器20中保持的执行中断变量的值变更为假(false)。

通过将执行中断变量的值变更为假(false),而响应nc程序34所含的特殊代码342的执行完成,再次开始解释后续代码。即,依次执行nc程序34所含的特殊代码342以后的代码((8)执行)。

如上文所述,从nc程序34侧写入及参照共享存储器20中保持的共享变量(所述示例中为执行中断变量)的值,并且从顺序程序30侧也写入及参照所述共享变量的值,由此能容易且准确地控制顺序程序30与nc程序34之间的执行时机。

图8为表示联合执行图7所示的顺序程序30及nc程序34的情况的处理的时间图。图8中,与图6所示的时间图对应地,对高优先任务及低优先任务分别示出处理的时间变化。

基本上,顺序程序30是作为高优先任务在每个控制周期t1中重复执行。另外,nc程序34的依次解释是作为低优先任务在每个应用周期t2中依次执行。

首先,当以控制周期t1的某个时机给予开始触发时((1)开始触发),以下一控制周期t1的时机指示nc程序34的执行((2)nc程序执行开始)。

然后,作为低优先任务,在每个应用周期t2中依次解释nc程序34。例如在最初的应用周期t2中解释图7所示的nc程序34的第一行代码,在第二个应用周期t2中解释图7所示的nc程序34的第二行代码((3)执行)。

为了便于说明,示出在一次应用周期t2中执行一行代码的解释的示例,但也能在一次应用周期t2中解释多行代码,而且此种形态常见。

然后,当执行nc程序34的第三行代码(即图7所示的特殊代码342)时,作为共享存储器20中保持的共享变量的一例的执行中断变量被设置((4)执行中断变量设置)。即,解释器162按照nc程序34中记述的代码,将程序执行过程中参照的执行中断变量(第二变量值)写入共享存储器20中。此执行中断变量被设置的时机与应用周期t2相应。

此外,利用根据第三行代码之前的第二行代码生成的中间代码进行的cnc指令值170的生成是在多个控制周期t1中作为高优先任务而执行。因此,在执行了特殊代码342时,依然继续根据之前的第二行代码生成cnc指令值170的情况下,此cnc指令值170的生成刚完成之后,执行中断变量立即被设置。

当执行中断变量被设置时,周期执行的顺序程序30中检测出所述执行中断变量的值的变化((5)执行中断变量检测)。高优先任务中,执行以执行中断变量的值变化为条件而开始的处理((6)必要处理执行)。当所述处理的执行完成时,作为共享存储器20中保持的共享变量的一例的执行中断变量被重置((7)执行中断变量重置)。

然而,顺序程序执行部150及数控程序执行部160与共享存储器20之间的数据同步处理是与解释器162的处理完成对应地在每个应用周期t2中执行。因此,即便在某个控制周期t1中顺序程序执行部150输出重置指令,也未必在此控制周期t1内使共享存储器20的执行中断变量重置。此为使执行中断变量不在解释器162的处理中途变化的一种排外处理。

从设置执行中断变量到执行中断变量被重置的期间中,低优先任务的nc程序34成为等待执行完成的状态。

当执行中断变量被重置时,再次开始在每个应用周期t2中依次执行nc程序34的代码((8)执行)。即,开始依次执行nc程序34的第四行以后的代码。

通过以上那样的低优先任务与高优先任务之间的交换,能实现顺序程序30与nc程序34的联合控制。

图8所示的时间图中,例示了当解释用于控制nc程序34的执行的特殊代码342时,解释器162对nc程序34的依次解释成为待机状态的处理,但安装形态不限于此。例如也可生成包含用于生成通常的cnc指令值170的通常代码及特殊代码342的中间代码。此情况下,也能以中间代码的级别(level)使作为共享变量的执行中断变量的值互相变化,由此实现顺序程序30与nc程序34的联合控制。

<h.处理顺序>

然后,对本实施范例的控制装置100中的程序的执行动作例进行说明。

图9为表示本实施范例的控制装置100中联合执行顺序程序30及nc程序34的处理顺序的流程图。图9中分别示出高优先任务及低优先任务的执行。

参照图9,关于高优先任务,当控制周期t1到来时(步骤s100中为是(yes)),执行输入输出刷新处理(步骤s102)。由此,将在前一控制周期中算出的指令值输出给致动器等,并且从现场取得输入数据。

接着,顺序程序执行部150(或nc程序执行部160)判断是否从解释器162接到执行完成通知(步骤s104)。若从解释器162接到执行完成通知(步骤s104中为是),则在顺序程序执行部150及数控程序执行部160与共享存储器20之间执行数据同步处理188(步骤s106)。若未从解释器162接到执行完成通知(步骤s104中为否),则跳过步骤s106的处理。

然后,顺序程序执行部150判断共享存储器20中保持的执行中断变量是否被设置(步骤s108)。若共享存储器20中保持的执行中断变量被设置(步骤s108中为是),则顺序程序执行部150执行与nc程序34的控制对象相关联地预先规定的部分的程序,算出本次控制周期的指令值(步骤s110)。

接着,若与nc程序34的控制对象相关联地预先规定的部分的程序的执行完成(步骤s112中为是),则顺序程序执行部150重置执行中断变量(步骤s114)。若nc程序34的与控制对象相关联地预先规定的部分的程序的执行未完成(步骤s112中为否(no)),则跳过步骤s114的处理。

另外,若共享存储器20中保持的执行中断变量未被设置(步骤s108中为否),则将步骤s110~步骤s114的处理全部跳过。

顺序程序执行部150执行顺序程序30的步骤s110中执行的部分以外,算出本次控制周期的指令值(步骤s116)。

数控程序执行部160的cnc指令值运算部168判断是否有效读入了用于算出指令值所需要的中间代码(步骤s118)。若未有效读入中间代码(步骤s118中为否),则cnc指令值运算部168从中间代码缓冲器164读入中间代码(步骤s120)。若有效读入了中间代码(步骤s118中为是),则跳过步骤s120的处理。

数控程序执行部160的cnc指令值运算部168按照中间代码算出本次控制周期的指令值(步骤s122)。

顺序程序执行部150的顺序命令处理部152按照顺序程序30所含的动作命令,算出本次控制周期的指令值(步骤s124)。

此外,有时也在步骤s116的顺序程序30的执行中途中断而执行步骤s108~步骤s114的处理。

通过以上的处理而运算本次控制周期的指令值。然后,重复步骤s100以后的处理。即,当下一控制周期到来时,将步骤s110、步骤s116、步骤s122、步骤s124中算出的指令值输出给现场。此外,步骤s124之后、下一控制周期到来之前的期间中,执行低优先任务。

另一方面,关于低优先任务,当应用周期t2到来时(步骤s200中为是),nc程序执行部160的解释器162读入nc程序34中本次应用周期内可执行的范围的代码(步骤s202)。解释器162判断读入的内容中是否包含指示执行中断的特殊代码(步骤s204)。若读入的内容中包含指示执行中断的特殊代码(步骤s204中为是),则解释器162设置执行中断变量(步骤s206)。然后,解释器162在执行中断变量被重置之前等待(步骤s208)。

若读入的内容中不含指示执行中断的特殊代码(步骤s204中为否),则跳过步骤s206及步骤s208的处理。

然后,在对低优先任务分配了程序执行时间的期间中,解释器162解释步骤s202中读入的代码(步骤s210),当生成某些中间代码时(步骤s212中为是),将生成的中间代码存储在中间代码缓冲器164中(步骤s214)。随后,重复步骤s200以后的处理。

<i.变形例>

所述说明中,对执行顺序程序30及nc程序34的控制装置100进行了说明,但只要为以解释器方式记述的程序,则无论哪种应用程序均可同样地应用。

<j.备注>

所述那样的本实施范例包含如下技术思想。

[构成1]

一种控制装置,具备:

第一程序执行部10(例如顺序程序执行部150),在每个第一控制周期t1中执行顺序程序30而算出第一指令值;

第二程序执行部12(例如nc程序执行部160),执行以依次解释的代码记述的应用程序32(例如nc程序34),在每个所述第一控制周期中算出第二指令值;以及

共享存储器20,构成为能从所述第一程序执行部及所述第二程序执行部均进行存取;且

所述第一程序执行部按照所述顺序程序所含的命令,将所述第一指令值14及程序执行过程中所用的第一共享变量值18写入所述共享存储器中,

所述第二程序执行部按照所述应用程序中记述的代码,一面参照所述共享存储器中保持的所述第一共享变量值一面执行所述应用程序。

[构成2]

根据构成1所记载的控制装置,其中所述第二程序执行部包含:

解释器162,在所述第一控制周期的整数倍的每个第二控制周期t2中依次解释所述应用程序而生成中间代码;以及

指令值运算部168,按照由所述解释器生成的中间代码在每个所述第一控制周期中算出所述第二指令值,且

与所述解释器的处理完成对应,在每个所述第二控制周期中在所述第一程序执行部及所述第二程序执行部与所述共享存储器之间执行数据同步处理188。

[构成3]

根据构成2所记载的控制装置,其中所述数据同步处理是在所述解释器的处理完成后、随后到来的第一控制周期内执行。

[构成4]

根据构成3所记载的控制装置,其中所述第一程序执行部一面参照所述共享存储器中保持的值一面执行所述顺序程序。

[构成5]

根据构成3或4所记载的控制装置,其中所述解释器按照所述应用程序中记述的代码,将程序执行过程中参照的第二共享变量值写入所述共享存储器中,

所述应用程序中记述的代码包含特殊代码342,所述特殊代码342用于在更新所述第二共享变量值之后,等待所述第一程序执行部更新所述第二共享变量值。

[构成6]

根据构成5所记载的控制装置,其中所述特殊代码是以用于记述所述应用程序的语言形式预先定义。

[构成7]

根据构成2至6中任一项所记载的控制装置,其中所述解释器在所述第一程序执行部及所述指令值运算部均不执行处理的期间中执行处理。

[构成8]

根据构成1至7中任一项所记载的控制装置,其中所述应用程序为按预定的语言记述的数控程序。

[构成9]

一种控制方法,其为控制装置进行的控制方法,且包括:

在每个第一控制周期中执行顺序程序而算出第一指令值的步骤(s100~s120);以及

执行以依次解释的代码记述的应用程序,在每个所述第一控制周期中算出第二指令值的步骤(s200~s216);且

所述控制装置具备共享存储器20,此共享存储器20构成为能从所述顺序程序的执行主体及所述应用程序的执行主体均进行存取,

所述算出第一指令值的步骤包括:按照所述顺序程序所含的命令,将程序执行过程中所用的第一共享变量值写入所述共享存储器中的步骤(s110);

所述算出第二指令值的步骤包括:按照所述应用程序中记述的代码,一面参照所述共享存储器中保持的所述第一共享变量值一面执行所述应用程序的步骤(s206~s210)。

<k.优点>

现有技术中,在控制工作机械等的情况下,采用将plc等控制装置与cnc控制器组合那样的系统。此种系统通过控制器间的通信或连线等而实现联合动作。但是,plc及cnc控制器分别以各自的周期执行程序,且由于通过控制器间的通信或连线等在相互的程序间取得同步,因此程序间产生通信的处理等待等无用的等待时间,需要烦琐的互锁措施等。

相对于此,本实施范例中,能利用单一的控制装置并行执行顺序程序与应用程序,并且能在程序间利用共享存储器相互交换任意的值。通过采用此种构成,不需要烦琐的互锁措施等,且由于直接交换值,因此能使程序间的等待时间最小化。

另外,本实施范例的控制装置中,能使用应用程序的特征性记述(例如所述那样的特殊代码)在任意位置中断应用任务。

另外,本实施范例的控制装置中,能以顺序程序的执行周期(控制周期)控制应用程序的动作,因此能实现更高精度的联合执行。

应认为本次公开的实施范例在所有方面为例示而非限制性。本发明的范围是由权利要求而非所述说明揭示,是指包括与权利要求的范围均等的含意及范围内的所有变更。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1