本发明涉及一种用消除编码工作来自动产生程序的自动程序产生方法和装置。 在通常的产生程序的方法中,提出了计算机程序的方案,回顾了程序的说明,进行了基本和详细的设计。所提出的计算机程序被编码成一种特殊语言并检查不正确编码。如图1所示,然而被编码的程序(A1)通过例如键盘的装置存入(A2)计算机以产生源程序正文(A3)。接着,操作者检查源程序正文的语法并编译或组合(A4),不正确的键盘输入和语法错误被检查(A5),被识别的不正确地键盘输入和语法错误被打印出来(A6),校正,重新编码,并且再重复上述步骤。在消除了不正确的键盘输入和语法错误后,程序的值被评价(A7)并且模拟出控制目标的系统(A8)。程序通常被按上述方法改进和产生。
但是,在通常的程序产生方法中,操作者必须十分熟悉特殊语言,例如汇编语言,FORTRAN语言和C语言,并且大量语句必须被编成这种语言,并伴随着经常会发生的书写错误例如“θ”与“0”。
已有一些方法提出来以不用上述编码而产生程序,但不能说这些方法总不能满足目的。
本发明的一个目的是提供一种不要必需熟悉程序语言就能产生程序、消除编码的自动产生程序的方法和装置。
本发明是一种自动程序产生方法,其中,
被处理的整个工作的内容被分成几个任务,其中的每个任务被指派给矩阵或表格中的行或列,
与每个任务所共有的自由设置任务分量被指派给矩阵或表格的列或行,
用于识别被处理任务的内容与自由设定任务分量的固定任务分量标记被指派给对应每个被处理任务的矩阵或表格的特殊位置,
该标记的形式和位置被读出,并且,
依靠得到前面已准备好的不完整程序语句以产生对应于被识别内容的程序。
此外,本发明的自动程序产生装置包括
一信息保持结构体,它具有:
被指派为构成被处理的整个工作的内容的几个任务的矩阵或表格的行或列,
被指派为与每个任务共有的自由设定任务分量的矩阵或表格的列或行,以及,
指派的用于识别被处理的任务内容与自由设定任务分量的固定任务分量标记的矩阵或表格的内部构件,
用于读出所述信息保持结构体的固定任务分量标记的形式和位置的标记读出装置,
用于事先存贮对应于固定任务分量标记的不完整程序语句的存贮装置,以及,
用于取出上述事先准备好的程序语句,根据由标记读出装置读出的形式和位置而产生程序的语句产生装置,
此外,根据本发明的自动程序产生装置包括:
信息保持结构体,它具有:
被指派为构成被处理的整个工作内容的多个任务的矩阵或表格的行或列,
被指派为与每个任务共存的自由设定的任务分量的矩阵或表格的列或行,以及,
指定的用以识别被处理的任务内容和自由设应任务分量的固定任务分量标记的矩阵或表格的内部构件,
用以读出所述信息保持体结构体的固定任务分量标记的形式和位置的标记读出装置,
用以预先存贮、对应于固定任务分量标记的不完整程序语句的存贮装置,以及,
用以取出上述事先准备好的程序语句,根据标记读出装置读出的形式和位置而产生程序的语句产生装置。
图1是惯用的程序产生方法的流程图;
图2是根据本发明的自动程序产生装置的一个实施例的方框图;
图3是用于上述实施例中的信息保持结构体的平面图;
图4是用于上述实施例中的另一信息保持结构体的平面图;
图5是图4所示信息保持结构体中所用的支架的平面图;
图6是说明本发明的另一实施例的方框图;
图7(a),(b),(c)是说明本发明的自动程序产生装置的另一实施例的运行链的原理示意图;
图8是说明用于上述实施例中的固定任务分量标记种类的构成图;
图9-16是上述实施例中所用的信息保持结构体的平面图;
图17是上述实施例的链运行路线的平面图;
图18是上述实施例中所用的信息保持结构体的平面图;
用以说明本发明的另一实施例的方框图。
图19和20是说明上述实施例的链运行情况的流程图。
下面将参照附图所示的实施例对本发明作详细说明。
图2是根据本发明的自动程序产生装置的实施例方块图。图3是用于图2所示的实施例的信息保持结构体1的平面图,图4是显示图3所示的信息保持结构体1的结构具体情况的部分平面图。信息保持结构体1包括了片状体如纸、木、塑料、金属和其他材料构成的,或者由屏幕例如阴极射线管、液晶屏幕和其他图象显示装置构成的机体。或者,这样的结构体可以是一厚的结构体如由上述材料或任何能够保存信息的如立方体(cube)或鼓状体构成的黑板。在结构体1上形成有矩阵5。
每一行的设计都能使构成被处理的整个工作的内容的多个任务a0-a1234相互对应。当该任务a0-a1234分别被执行时,被处理的整个任务将被执行,该任务a0-a1234被收集在一起作为一个单元被处理以分别得出中间结果或最终结果。例如,如图4所示的,在执行任务“人从外面进入一地方和人在具有第一、第二门的双门系统的地方”这个情况中,上述任务是一单元,其中“如果第一门外有东西,其重量超过30公斤,该单元将识别那东西不是一只狗或一只猫而是一个人在门外并且使电动机接通,使第一门打开“(任务a0),“如果某东西在第一门外并且其重量超过30公斤,并且如果有人位于第一、第二门之间并在第一门内的话,该单元驱动电动机来打开门1,并驱动阀门来关闭第二门”(任务a1),“如果第一门外无东西而人在第一门和第二门之间并在第一门内,该单元驱动电动机来关闭第一门,并驱动阀门来打开第二门”(任务a2),“如果该单元驱动电动机来打开第一门,则该单元驱动阀门来关闭第二门”,等等。为了更适当地实现上述被执行的任务,对于任务必须进一步分析其它关系和条件。
如图3所示,在上述矩阵5的列中,设计成使与矩阵5的每个任务a0-a1234共存的多个自由设定任务分量b0-b9相互对应。自由设定任务分量是在构成每个任务内容的所有分量中有共同特点的分量,并且可以由用户自由设定。例如,这样的自由设定任务分量能对应于程序语句的算量区域的整个或部分。更特别地,例如在上述门的任务中,这样的自由设定任务分量包括“用于检测第一门外的东西的出现的传感器1”(任务分量b0),”用于检测第一门和第二门间的某人出现的传感器2(任务分量b1),“检测第一门外某人的重量的传感器3”(任务分量b2),“打开或关闭第二门的阀门”(任务分量b3,以及“用于打开和关闭第一门的电动机”(任务分量b4)。上述自由设定任务分量具有条件字符,数据产生字符,结果字符,运算判定字符以及其它字符。例如,自由设定任务分量的条件字符用上述的任务分量b0即“检测第一门外的东西出现的传感器1”,任务分量D1即“检测第一门和第二门间的某人出现的传感器2”以及任务分量b2即“检测在第一门外某人的重量的传感器3”来表示,而结果字符用上述任务分量b3即“用来打开和关闭第二门的阀门”以及任务分量b4即“用来打开和关闭第一门的电动机”来表示。
上述自由设定任务分量b0-b9的条件字符,数据产生字符以及结果字符等是相互有关的并且对于a0-a1234中的每个任务是不同的。例如在任务a3中,“用以打开的关闭第一门的电动机”(任务分量b4)具有条件字符,那就是说,某一任务的结果可以是其它任务的条件或假想的分量。
上述所自由设定任务分量b0-b9被通过上述固定字符集中起来并设置在如图3所示的区域中,例如6表示了开/关字符区域,7表示了结果字符区域,8表示了输入/输出字符区域。
上述矩阵5的内部被设计成使固定任务分量标记9能用于识别a0-a1234每个任务的上述内容和自由设定任务分量b0-b9。固定任务分量标记9具有多种形式,其中每个都分别有预定内容。例如,固定任务分量标记9对应于程序语句的运算区域。这里提到的运算部分并不是仅意味着公共所用的运算部分而且还表示在某些情况下与部分或全部固定算符相加的运算部分。在图4中,O表示它具有条件字符而该O使条件字符读出该标记所属的矩阵列的自由设定任务分量的数据,并检查条件字符是否为“ON”,(例如BTST指令)。□表示它是结果字符并且它驱动标记所属的矩阵列的自由设置任务分量(例如BSET指令)。表示它是结果字符并且它停止驱动标记所属的矩阵列的自由设定任务分量(例如BCLR指令)。此外,任务a3中的O表示条件字符并且表示它能读出条件字符所属的自由设定任务分量并检查条件字符是否为“ON”。
上述任务的被处理的内容识别表示,例如上述运算部分与上述算符组合以完成整个程序语句(例如,BTST#$θ,(Aθ),通过机器语言98c400000004来表示)。参照上述例子,这样的识别意味着完成了整个程序语句,它对应于具体的内容即“用于检测第一门和第二门之间有人出现的传感器2的输出被读出以决定传感器2是否为“ON”。
固定任务分量标记9可以是任何手段,例如公式、汉字、数字、符号、几符形状或者圆形或彩色标记。
固定任务分量标记9的内容包括,例如,如上述所述的多种形式的运算部分,它包括了用于设定位(图3中93)的指令,清除位的指令(图3中92),设定位的指令(图3中91),用于比较数据和固定值d1的指令(图3中94),比较数据和固定值d4和d5(图3中95)的指令,把绝对值的设定数据给变量d2(图3中96)的指令,以及设定相对值(图3中97)数据的指令。
在图1中,标记读出装置2是读出上述信息保持结构体1的固定任务分量标记9的型式和位置的装置。信息保持结构体1′包括信息结构保持体1和信息。作为它的一个例子,如果上述信息保持结构体1是一片状结构则该装置是光读出装置,如果结构体1是阴极射线管的屏幕的话,它是一个用以读出信息如所述屏幕上所产生的固定任务分量标记9的CPU(中央处理单元)。此外,也可以是磁和空气压力型式的标记读出装置。此外,上述标记读出装置2可与模式识别函数极匹置。
存贮装置3是如ROM(只读存储器)形式的装置,它预先存贮了多种不完整的程序语句,它们对应于所述固定任务分量标记9。
语句产生装置4是这样一种装置,它根据上述标记读出装置2读出的标记的型式和位置把预先准备好的不完整程序语句从上述存贮装置3中取出,以通过把所取得的程序语句和自由设定任务分量的内容相组合以完整一个程序。
本发明的第二自动程序产生装置与本发明的第一自动程序产生装置不同之处仅在于信息保持结构体1。换句话说,在第二自动程序产生装置中,为了替换上述信息保持结构体1,可用存贮有任务a0~a1234,自由设定任务分量b0~b9,和固定任务分量标记9的信息保持结构体1′。
下面是本发明的上述第一自动程序产生装置的工作情况的实施例和本发明所述方法的实施例。
首先,接通器(maker)使存贮装置3预先存贮一定数目的不完整程序语句,例如机器语言,汇编语言或对应于多种运算部分(指令)的以允许进行各种变形任务处理的高级语言。该接通器还使这样的不完整程序语句对应于符号或数目如○,□,△和用以执行上述固定任务分量9。接通器还能使上述矩阵5的每个矩阵列根据一对一原则对应于控制计算机的外部输入和输出的接口。
用户把被处理的任务的内容分成多个任务a0~a1234。上述a0~a1234的每个任务根据一对一原则对应于上述信息保持结构体1的矩阵5的行并按此安排。在上述例子中,任务被安排成这样的顺序,如“如果在第一门外有某人并该人重量超过30公斤,该任务认为该物体不是狗或猫而是人在门外并驱动电动机打开第一门”(任务a0),“如果有人在第一门外其重量大于30公斤,并且有人在第一门和第二门之间并在第一门内,则任务驱动电动机来打开门1,并驱动阀门来关闭第2门”(任务a1),“如果在第一门外无人并且有人在第一门和第二门间并在第一门内,则任务驱动电动机来关闭第一门,并驱动阀门来打开第二门”(任务a),“如果电动机被驱动来打开第一门,则任务驱动阀门来关闭第二门”(任务a3)。
与任务a0~a1234共存的自由设定任务分量b0~b9被安排成对应于上述短阵5的列。在上述例子中,这样的任务是由以下各步完成的,即“用于检测在第一门外是否有人出现的传感器1”(任务分量60),“用以检测在第一、第二门间有人出现的传感器2”(任务分量b1),“用于检测第一门外人的重量的传感器3”(任务分量62),“用于打开和关闭第2门的阀门”(任务分量b3),以及“用于打开和关闭第一门的电动机“(任务分量b4)。上述控制计算机的外部输入输出端口被连到传感器1、传感器2、传感器3、阀门和电动机上。
接着,识别上述自由设定任务分量b0~b9和任务内容的固定任务分量标记9被设在上述矩阵5或表格中与被处理任务内容相对应的指定位置上。在图4所示的任务a0,标记○与传感器1和传感器3的列配制,标记□与电动机的列相配制,这样的设置将能处理如下任务:“如有东西在第一门外并且该物体重量大于30公斤,任务认为物体不是狗或猫而不是人在门外并且驱动电动机来打开第一门”。在其它任务中,传感器和电动机根据任务的内容按同样方法标出。按上述方法,信息保持结构体1被完成。
接着,标记读出装置2读出存贮有多种信息的信息保持结构体1′上的这个标记的矩阵5上的型式和位置。
本发明的自动程序产生装置的语句产生装置4从上述存贮装置2中取出不完整程序语句(例如MOVE),它对应于上述标记读出装置2读出的标记的型式,并组合了取出的不完整程序语句和作为读出标记的位置的自由设定任务分量的内容(例如#¥01,A0),还完成了程序语句(MOVE#¥01,A0)。如果在程序语句结束期间在存贮装置2中准备有机器语言的不完整语句,有一优点即是包括有机器语言的程序(498F00010000)可直接产生。
按上述方法,当任务程序a0完成时,任务a1的程序语句按同样方法完成。
图5是上述矩阵5的特殊区域(此后称为缓冲区)的平面图。用户用预定线围绕一固定区域,使读出装置2读出该围绕固定区域,并使输出“1”在所围绕的固定区域内的条件满足的情况下发送到任何自由设定任务分量。换句话说,这样的缓冲区域是缓冲区111,对存贮装置3预先能发出“1”的警告的不完整程序语句被准备好,语句产生装置4组合上述读出区域和不完整语句,与固定任务分量标记9一起在图5所示的状态下检查所有条件,并在这些条件满足后完成能产生“1”的语句,缓冲区115与上述缓冲区是同样形式的。缓冲区124表示当上述缓冲区111,115同时产生“1”时它也产生“1”。如上所述,形成了所谓分层结构。在指定缓冲区域时,红色标记可被加到每个标记的一侧而不是用线来围绕,或者缓冲区域可以通过在每个标记的边上加a#标记来分配。
这样,用户可以通过把任务和自由设定任务分量分配给矩阵5的行或列和加上固定任务分量标记来产生程序。
用户把这样产生的程序置入上述控制计算机,它能接着通过程序的重复执行来控制目标。
上述矩阵5可以是被称为表格的形式,此外,上述行和列可以被替代。
同样,上述信息保持结构体1可以被分成一些标记片。
如图6所示,信息结构体1′的信息并不是直接从片状体中读出的,而可以由遥控终端装置55来产生的,并且导致了需用通讯线。信息可以存贮在纸带56和磁记录介质57上以便输入。
图7~20表示了根据本发明的火车服务的第一实施例的示意图。下面将详细说明。
图17是火车服务情况的本质。标号171是一具有给水管和加煤支架的库房,标号172是站台标号173是平台,标号174是铁轨环路。铁轨174在点P(连接处)175处有一叉路176。在叉路端部有缓冲区177(bumping post)。在平台173的前面有一用以控制火车到达的传感器3,在缓冲区177处设有检测火车到达的传感器1,在环路174的中点处设有检测火车到达的传感器2,如图17所示。在箱体171的前面设有脱开车厢的脱离装置178。火车在这样的铁路上运行。
图7说明了火车服务的例子。火车A包括牵引车厢,客车厢X、Y和货车厢X、Y五节车厢,如图7(a)所示。火车B包括牵引车厢和客车厢X、Y三个车厢,顺时针方向的循环是正向行驶而逆时针方向的循环是反向行驶。开关SW是火车电源装置。
火车A如图7(b)所示运行。即火车A是有5节车厢的,它从库房171开始出发并在叉路铁轨176上运行,通过节点175后在铁轨174上正向行驶。火车A在平台173处暂时停留(①-②程序)。接着火车A从平台173处再起动沿正向行驶并通过接点175后停在传感器2的位置(③-④程序)。接着,火车A反向开向节点175并驶入叉路176,停在缓冲带177上(⑤-⑥程序)。
另一方面,火车B沿图7(c)所示的情况行驶。即火车A的5节车厢中的后2节货车厢由脱离器178脱离,余下三节车厢,即火车B从库房171处起动,在叉路176上运行,通过接点175后在铁轨174上正向行驶并不在平台173处暂停而停在传感器2的位置上(①-②程序)。接着,火车B从传感器2处起动反向行驶通过接点175后进入叉路176,停在缓冲区177(③-④程序)。
根据上述火车运行的算法,如图8-16所示的固定任务分量标记被写入图18所示的信息保持结构体中。
这就是说,图8说明了固定任务分量标记的情况。ON、OFF是条件检验的标记,DO,BRK是说明电源接通和切断的输出控制的标记。TMS表示定时设定的标记,TMR表示重新设定定时的标记。对应于这些ON-TMR标记的不完整程序语句事先准备好。
把标记写入信息保持结构体的方法参照火车B的情况加以描述。
首先,各图的自由设定任务分量的列被分配好,火车驱动电源开关SW,传感器1,2,3,前进开关(FRD),后退开关(BAK),接点(P),接触耦合器(UC);定时器10(10秒),定时器3(3秒),选择火车的分量(TRN表示火车A,TRN2表示火车B),传感器2处的通过标记(PAS)等等也都被设定。这些开关,定时器,存贮标记等被连到对应于指定列的计算机的输入/输出端口。
接着,参见任务1,由于SW为接通,所以在火车驱动电源的SW的自由设定任务分量列中写上ON。由于传感器1、传感器2、传感器3没有接通,所以ON不写上(图9)。由于火车开始启动,DO写在FRD列中而不是BRK列中,并且由于接点(P)在叉路的一边,所以接点(P)列没有写入,DO写的UC列中(图10)。由于火车是B,ON写在TRN2中(图12)。参照任务2,火车B起动并通过接点175,当火车B到达传感器3时(传感器3为接通),DO被写入P列,以此交换接点175。由于火车B、TRN2为ON,所以标记PAS为DO(图12)。
下面参见任务3,当火车到达传感器2的位置时(ON被写入(图9)),火车停下(BRK),接点175被交换(BRK)(图10),PAS标记为ON(图12)。
下面参见任务4,由于不向前(FRD为断开),后退(BRK)被执行(DO写入后退列。这样火车反向起动进入叉路176,并最终到达缓冲区177。接着参见任务5,传感器1为接通(图9),反向驱动停止。定时器S3被设定(图11)。
接着参见任务6,当传感器1为接通且定时器S3为接通时,火车B结束工作(BRK写入图12中的TRN2中)。通过标记PAS放下(图12)。
最后,参见任务7,定时器3被设定(图11),并且确定TRN2为断开。
这样火车B运行所需的信息保持结构体被完成。
对于火车A运行情况的信息结构体,可参见图13~16所示的,用同样方法完成。
由于上述结构,根据本发明的自动程序产生装置不需要操作者懂得程序语言,也不需要他做大量的编码工作。因此,程序可以容易地产生而不需校正错误的编码。
对于本领域的人员来说可以理解到上述说明只不过是一最佳实施例而已,在本发明的精神和范围内还可以有许多变化和变形。