CN1431570A - 单元和可编程控制器以及用户程序的处理方法 - Google Patents
单元和可编程控制器以及用户程序的处理方法 Download PDFInfo
- Publication number
- CN1431570A CN1431570A CN03101426.7A CN03101426A CN1431570A CN 1431570 A CN1431570 A CN 1431570A CN 03101426 A CN03101426 A CN 03101426A CN 1431570 A CN1431570 A CN 1431570A
- Authority
- CN
- China
- Prior art keywords
- program
- memory storage
- storehouse
- kept
- storehouseization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/058—Safety, monitoring
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13005—Subroutine
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13068—Program divided in operation blocks, groups, tasks each executed
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23232—Execute program from added, expansion rom, memory
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/24—Pc safety
- G05B2219/24164—Parts of program accesible only during execution, no access with programming tool
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种对用户作成的程序的一部分或者全部可以实施简单而确切的保护的可编程控制器用单元。在可编程控制器(PLC)用I/O单元3中,将保存在RAM14中的用户程序的一部分或者全部进行库化并保存在闪存15中,进一步,库化后的程序根据需要被执行。由于闪存不能由开发器访问,第三者不能将其读出,可以确切实施保护。
Description
技术领域
本发明涉及一种单元和可编程控制器以及用户程序的处理方法。
背景技术
众所周知,在工业自动化(FA:Factory Automation)中使用的可编程控制器(PLC),通过输入来自输入仪器(开关或者传感器等)的ON/OFF信息,按照以梯形图(Ladder diagram)语言编写的序列程序(用户程序)执行逻辑运算,根据该运算结果,向输出仪器(继电器或者阀门、执行机构等)输出ON/OFF信息的信号,而进行控制。此外,制作、编辑用户程序时,或者将用户程序写入(下载到)PLC的指定存储器中,或者从PLC的指定存储器中读出(上载)用户程序时,采用专用的装置(开发(ツ一ル)装置)。
然后,作为有关PLC的一方案,准备多个根据每个功能制作的单元,通过电连接、机械连接而构成。作为构成有关类型的单元,是这样的各种单元:向构成PLC的各单元中供给电源的电源单元;根据由IN更新而输入的信号执行保存在程序存储器中的用户程序的CPU单元;与CPU单元可以进行总线通信的、与输入仪器或者输出仪器连接的I/O单元等。
又,在最近,在I/O单元中也搭载CPU(MPU)、程序存储器,同时在该程序存储器中保存所希望的用户程序,在该I/O单元中也运算执行上述用户程序,进行指定的控制。
另一方面,考察PLC(包含各单元)的流通路径,作为一例,首先存在制造PLC的厂商。然后,制造自动包装机器或者注塑成型机以及其它产业机械的公司,从有关厂商购入PLC,根据该产业机械的使用内容和控制动作在编程开发器上编制必要的用户程序,同时将该用户程序下载到PLC中,制造出利用有关PLC控制动作的产业机械。即,制造该产业机械的公司,将成为PLC制造厂商的用户(中间用户)。然后,有关产业机械被设置在最终用户的工厂中,组成生产设备系统,制造出各种产品。
然而,上述用户程序,包括有各中间用户的技术秘诀,是该用户的资产。因此,要求尽可能防止向竞争对手等泄露该用户程序的内容。但是,作为记叙序列程序的语言,一般采用为通用语言的梯形图语言编制用户程序并将其保存在程序存储器中时,可以以开发装置将有关用户程序读出、解析。因此,对于1个最终用户,常常会和多个中间用户交易,这时,各中间用户会进出最终用户的工厂内。这样,就有可能出现在将用PLC控制的产业机械设置之后,生产、交付该产业机械的公司的竞争对手进入到相关的最终用户的工厂内,将控制该产业机械的PLC的用户程序读出,获得该用户程序。
为此,为了防止向第三者泄漏,虽然有通过设置密码等禁止读出用户程序的保护方法,但如果出现密码泄漏,或者被解密的情况,第三者也能获取用户程序。然而,当设置了用密码禁止读出用户程序的保护时,分为用户程序全部禁止读出的方法、和用户程序部分禁止读出(部分保护)的方法。上述中间用户可以提供这样的单元,即只将用户程序中的技术秘诀部分实施部分保护后向最终用户提供,可以防止技术秘诀的泄漏,同时技术秘诀以外的可读出部分可以由最终用户变更。但是,该方法所存在的问题是,部分保护的对象由于是1个用户程序中的部分程序,容易受到保护以外的程序编辑的影响。
另一方面,如果将包含技术秘诀部分的控制(动作控制等)功能部分采用专用微处理板(microcomputer board)实现,虽然可以防止向第三者泄漏,但必须准备微处理板那样的专用品,存在增加了麻烦等问题。又,由于微处理板不能对应梯形图语言和序列编程语言,不能使用在PLC中利用的梯形图语言的用户程序开发环境(包含开发装置),需要微处理板上的程序开发的专用开发环境,存在着成本提高的问题。
又,用户方面如果没有专用的开发环境,或者没有能使用专用的开发环境编制微处理板上的程序的开发人员时,就必须要得到其它厂商(PLC的制造厂商等)的帮助。特别是,如果用户委托PLC的制造厂商编制相当于用户程序的程序时,PLC的制造厂商就可以在单元的系统程序中组合入该用户程序,作为特定用户的专用单元提供。采用这种方式,虽然可以防止泄露,但这不仅需要向有关厂商公开技术秘诀,而且即使公开该技术秘诀,这些厂商要充分把握用户所持有的技术秘诀的知识是很困难的,因此有可能不能实现满足用户的控制、功能。而且,用户不能简单地修改程序,存在着各种这样的问题。
发明内容
本发明的目的在于提供一种单元和可编程控制器(PLC)以及用户程序的处理方法,不需要另外专门准备程序开发环境,对用户编制的程序的一部分或者全部可以简单并且确切地进行保护。
依据本发明的单元,是PLC用单元,包括保存用户程序的第1存储装置、对保存在上述第1存储装置中的上述用户程序的至少一部分进行库化(ライブラリ化)并保存在第2存储装置中的库(ライブラリ)生成装置、执行保存在上述第2存储装置中的库化后的程序的程序执行装置,上述第2存储装置安装在上述单元内,并且不能被上载上述用户程序的开发器所访问。
在此,“单元”是指构成PLC的单元,是具有下载用户作成的用户程序并保存在单元内部、执行该用户程序的功能的单元。具体讲,也包含CPU单元和在实施方案中说明的I/O单元。其它也包括内藏用户程序执行功能、执行处理特殊功能的“特殊功能单元”。作为该特殊功能单元,例如有遥控IO用主单元。
“第1存储装置”与实施方案中的RAM14对应,“第2存储装置”与闪存15对应。在本实施方案中,第1存储装置和第2存储装置虽然采用象RAM和闪存那样的在物理上不同存储器种类的存储器实现,也可以采用2个相同种类的存储器,分别作为第1、第2存储装置实现。进一步,也可以在单个存储器中分割成区域,以开发器可访问的区域作为第1存储装置,开发器不能访问的区域作为第2存储区域。更进一步,也可以在2个存储器的两者上都设置开发器不能访问的区域,这2个区域合起来作为第2存储装置处理。
“库化(ライブラリ化)”是指转换成由MPU等程序执行装置可以调出执行的程序形式并保存到指定存储器中的流程。作为库化的一例,要执行的处理整体的一部分作为给定处理的集合的“子程序形式的程序”,从整体处理用的程序中调出执行该子程序。此外,作为执行库化后的程序的方式,附加识别符号并在给定存储器(第2存储装置:在实施方案中为闪存)中预先保存库化后的程序,将识别符号和专用命令插入到主程序中。然后,通过扫描执行该主程序,也执行该专用命令,从给定存储器中调出执行由识别符号识别的库化程序。(这是实施方案中的部件库的例子)。
又,“库生成装置”,在实施方案中与实施图4的流程图的功能部分对应,“程序执行装置”在实施方案中与实施图8~图10的流程图的功能部分对应。
“开发器不能访问”是指,用开发器不能读出存储装置中的存储内容的构成。“开发器不能访问第2存储装置”是指,单元在接收到来自开发器的读出用户程序的要求或者读出其它数据的要求时,该单元的处理部(在实施方案中为MPU)只进行返送第1存储装置中的相应数据的处理。实际上,由PLC制造厂商,对开发器访问该单元的规则预先如下确定。即,对于来自开发器的读出请求命令可以响应的存储器区域作为第1存储装置,而第2存储装置不能由开发器读出。换言之,通过预先准备了开发器针对第1存储装置的读写请求命令,而针对第2存储装置的读出请求命令或者调出命令没有预先准备实现。这样通过在命令上的设置可以实现。又,也可以用其它方法实现,例如,即使开发器访问单元的第2存储装置,也可以在单元的内部系统处理中,禁止从第2存储装置读出数据。即,通过单元侧的设定,禁止读出存储器的一部分(第2存储装置)。在任何一种方式中,不要在第1存储装置中残留不想让读出的程序,而只保存在不能访问的第2存储装置中。简言之,只要在单元的存储器中设置禁止读出区域,只在该禁止读出的区域中保存不想让读出的程序即可。此外,在实施方案中不可访问的区域是闪存15的库信息区域15c和库数据区域15b。又,不想让读出的程序,在实施方案中相当于库化后的程序。
依据本发明,由于在开发器不能访问的第2存储装置中将用户程序的至少一部分进行库化后保存,该用户程序成为开发器等不能访问的库化后的程序。因此,可以确切保护技术秘诀等需要保密的库化程序。此外,在库化的作业中,库化对象的程序由于是保存在第1存储装置中的用户程序的给定部分,用户等可以直接利用至今用户程序的开发环境(例如采用梯形图语言等作成的开发器等)制作程序。即,不需要专门针对库化的特别的开发环境,就可以确切地保护库化后的程序。
此外,将保存在第1存储装置中的用户程序库化后保存在第2存储装置中,在本发明中所谓的“一部分程序”是指库化时保存在第1存储装置中的库化之前的用户程序的一部分。此外,对于要库化的部分和不要库化的部分采用某种信息进行区分。又,“用户程序的全部”是指库化时保存在第1存储装置中的用户程序的全部。因此,在实施方案中对于整体库是显然的事,即使是部件库化时,只保存在第1存储装置中成为部件库化对象的1个或者多个子程序,将其库化后保存在第2存储装置中时,与本发明中所谓的“将保存在第1存储装置中的用户程序的全部进行库化”相对应。
然后,上述库生成装置可以将上述用户程序编译成执行目标码后保存在上述第2存储装置中。“编译成执行目标码”是指通过程序执行处理编译成可执行的处理语言,具体讲将程序编译成机械语言。这样,即使从第2存储装置万一恶意读出程序信息,也是通常不能理解的语言,不能按通常方式进行反编译,不容易明白,不会泄漏程序中的技术秘诀等,可以让用户程序作成者安心。当然,也可以保存编译成执行目标码之前的用户程序。
又,上述库化程序是子程序,上述程序执行装置,在保存在上述第1存储装置中的主程序中包含上述子程序库调出的专用命令时,执行指定子程序库的子程序,同时包括返回到上述主程序的功能。该构成表示库化处理后的状态下,由单元执行库化程序时的构成。在此所谓的“返回功能”是指,在指定的子程序执行结束后,返回到主程序中,接着前面(即调用该子程序的专用命令的下一命令)执行。通过这样子程序化,作为程序部件,可以反复利用,或者在作成其它程序时利用,可以简化程序开发,并且提高生产效率。
又,上述库化程序是上述用户程序的整体,上述程序执行装置,成为可以执行保存在上述第2存储装置中的库化程序的状态。这相当于在实施方案中说明的整体库的利用。在此所谓的成为可执行状态是指,在实施方案中,如果是库化后保存在存储装置中的库化程序被编译后的程序,通过设置让执行该编译对象的标志位等,或者如果实际保存在第2存储装置中的程序是编译前的程序,将其编译(编译后也可以在第1存储装置中展开)。又,可以对所有的用户程序进行保护。
另一方面,上述库生成装置也可以具有将要库化的程序与用于选定的库名关联并保存在第2存储装置中的功能,包括读出保存在上述第2存储装置中的上述库名并保存在上述第1存储装置中的库名读出装置。
如果将库名等保存在第2存储装置中,根据该库名,可以选定执行库化后的程序。但是,由于保存在第2存储装置中,不能从外部参照。其结果,如果不对库化后的程序另外管理,以后将不能确认。为此,通过设置库名读出装置,在从外部可访问的第1存储装置中写入库名,利用开发器等可以读出库名,用户等可以知道什么样的库(程序)保存在第2存储装置中。
更进一步,也可以让上述库生成装置具有在第2存储装置中保存库化后的程序、同时与选定该库的库识别信息关联进行保存的功能,包括将保存在上述第2存储装置中的信息备份到外部存储装置中的备份装置,上述备份装置,判断所输入的库识别信息是否与预先保存在上述第2存储装置中的正规识别信息是否一致,在一致时将上述信息保存到上述外部存储装置中。
依据有关构成,只有知道库识别信息的被授权的人才可以将库化后的保存在第2存储装置中的信息备份到外部存储装置中,即,因为库识别信息保存在第2存储装置中,即使利用开发器访问单元也不能知道,被授权之外的人不能进行备份。
在此,库识别信息在实施方案中与库ID对应。又,外部存储装置在实施方案中与存储卡对应。外部存储装置可以安装在其它单元上,也可以安装在本身的单元中。此外,作为外部存储装置优选采用可以携带、并可以从单元中装卸的存储卡。
又,本发明并不限定于单个单元,在PLC中也可以包括上述各种机构。作为一例,可以通过包括保存用户程序的第1存储装置、对保存在上述第1存储装置中的上述用户程序的至少一部分进行库化并保存在第2存储装置中的库生成装置、执行保存在上述第2存储装置中的库化后的程序的程序执行装置、上述第2存储装置,上述第2存储装置不能被上载上述用户程序的开发器所访问的构成来实现。当然,在该PLC的发明中,可以附加和上述各单元的发明相同的附带功能。
又,有关本发明的用户程序的处理方法,是在包括保存用户程序的第1存储装置、不能被上载上述用户程序的开发器所访问的第2存储装置的PLC用单元中的用户程序的处理方法,将保存在上述第1存储装置中的上述用户程序的至少一部分进行库化并保存在上述第2存储装置中,保护上述库化后的部分。又,上述用户程序执行时,适当执行保存在上述第2存储装置中的库化后的程序。
在此所谓的“保护”是指,利用上载用户程序的开发器不能读出的事情,所谓施加保护的意思。又,有关本发明的可编程控制器用单元,是包括接收输入信号的输入电路、根据该输入信号执行用户程序的程序执行装置、输出执行结果的输出电路的可编程控制器用单元,包括预先保存部件库化后的程序的第2存储装置、对插入有调出执行所述部件库化后的程序用的专用命令的用户程序利用开发器作成后进行保存的第1存储装置,上述程序执行装置,扫描执行保存在上述第1存储装置中的用户程序,通过执行上述用户程序中的专用命令从上述第2存储装置中调出执行上述部件库化后的程序,当调出执行结束后,返回执行上述用户程序,通过让上述开发器不能访问上述第2存储装置,使得不能读出部件库化后的程序。在此所谓的“输入电路”、“输出电路”也包括连接输入仪器或者输出仪器的电路,或者与由单元之间连接总线连接的其它单元之间进行数据通信的接口部。
又,有关本发明的可编程控制器用单元,是包括接收输入信号的输入电路、根据该输入信号执行用户程序的程序执行装置、输出执行结果的输出电路的可编程控制器用单元,包括预先保存整体库化后的程序的第2存储装置、通过开发器的操作、保存用于调出执行上述整体库化后的程序的设定标志位的第1存储装置,上述程序执行装置,根据上述第1存储装置的设定标志位从第2存储装置中调出执行整体库化后的程序,通过让上述开发器不能访问上述第2存储装置,使得不能读出整体库化后的程序。
又,有关本发明的可编程控制器用单元,其特征是包括保存在开发器上作成的用户程序(在该用户程序中插入有调出执行库化后的程序的专用命令)的第1存储装置;保存预先库化后的程序的第2存储装置;扫描执行上述用户程序、通过执行上述用户程序中的专用命令、从上述第2存储装置中调用执行上述库化后的程序的程序执行装置,上述第2存储装置中的库化程序预先保存,并且通过不能利用作成用户程序时所使用的开发器读出库化程序,可以保护库化程序的内容。
又,有关本发明的可编程控制器用单元,其特征是包括保存在开发器上调出执行库化后的程序的设定标志位的第1存储装置;保存预先库化后的程序的第2存储装置;读出上述第1存储装置的设定标志位、当是表示执行的标志位设定时、从上述第2存储装置中调出执行上述库化后的程序的程序执行装置,上述第2存储装置中的库化程序预先保存,并且通过不能利用对设定标志位进行设定的开发器读出库化程序,可以保护库化程序的内容。
附图说明
图1是系统整体的一例的示意图;
图2是I/O单元的内部构造的一例的示意图;
图3是说明RAM和闪存中的数据结构的示意图;
图4是库生成功能的一例的示意图;
图5是部件库化的一例的示意图;
图6是整体库化的一例的示意图;
图7是部件库的程序执行时的一例的示意图;
图8是说明部件库的读出功能的流程图;
图9是说明返回处理功能的部件库的读出功能的流程图;
图10是说明整体库的使用(执行)功能的流程图;
图11是说明库名读出程序的流程图;
图12是向存储卡备份/上载功能的说明图;
图13是向存储卡中保存的数据结构的一例的示意图。
具体实施方式
图1是本发明的一实施方案的示意图。如图所示,电源(PS)单元1、CPU单元2、I/O单元3等通过各种单元之间的连接总线等进行电连接、机械连接,构成PLC。又,在该例中,在CPU单元2中包括存储卡槽2a,通过在该存储卡槽2a中插入存储卡,可以在所插入的存储卡中保存在CPU单元2、I/O单元3等存储器中存储的信息。
进一步,在本实施方案中,如后面所述,在CPU单元2中安装MPU和用户程序存储器,在I/O单元3中也安装作为微处理器的处理部(MPU)和用户程序存储器,通过在有关用户程序存储器中保存在开发器上编制的用户程序,可以在CPU单元和I/O单元中执行所要求的序列控制。并且,在CPU单元2和I/O单元3中也包括与开发器5通讯的端口P,在开发器5上编制的给定的用户程序通过各单元的端口P可以下载到用户程序存储器中。
此外,在此所说的I/O单元3,是指具有将用户在开发器5上编制的用户程序(编制之后也可以进行变更或者编辑)下载,保存在内部,并在内部执行该用户程序的功能,同时可以进行与连接在该单元上的外部仪器之间的输入输出处理。例如有计数器单元、模拟处理单元、位置控制单元等。“计数器单元”是指,对从编码器等输入的脉冲输入进行计数处理,根据其计数结果执行用户程序,将基于其执行结果的输出信号输出给伺服驱动部(这可以在单元之外,也可以在单元内)等,为控制伺服电机而利用的单元。作为输出给伺服电机的信号的种类,可以是速度控制电机用模拟输出信号,也可以是控制脉冲电机用脉冲信号。此外,输入信号也可以不是脉冲信号,而是从变位传感器等输入的模拟信号。又,“模拟处理单元”是指从压力传感器、变位传感器等输入模拟信号,将该信号进行A/D变换后,根据该变换信号执行用户程序,其执行结果以模拟信号的形式输出的单元。这样的计数器单元、模拟处理单元、位置控制单元等执行某种特定功能的单元也称为“高性能单元”或者“特殊功能单元”。在该实施方案中,也可以适用于被称为高性能单元或者特殊功能单元的单元中。
I/O单元3的内部构造,如图2所示。即,I/O单元3包括接收从传感器等其它输入仪器输入的信号的外部输入电路11、向输出仪器输出给定控制信号的外部输出电路12。I/O单元,通过从与这些外部输入电路11连接的输入仪器(图中未示)输入输入信号,同时向与外部输出电路12连接的输出仪器(图中未示)发送输出信号,进行I/O信息的收发。进一步包括作为存储装置的ROM13、RAM14以及闪存15、执行保存在该存储装置中的程序而控制I/O单元3本身的动作的MPU16,这些通过设置在I/O单元3内的内部总线相互连接。
即,在ROM13中,保存系统程序。系统程序是指,有关在该I/O单元内执行的系统控制处理的程序信息,具体讲,包括后述的用户程序内的一条一条命令本身的处理内容、和后述的为执行库化所必要的控制处理内容。又,在RAM14中,包括执行时保存用户程序等的PRG存储区域14a、I/O单元的系统条件设定用的系统存储区域14b、从外部输入电路11取出的输入信号和作为程序执行结果向外部输出电路12输出的输出信号、即、保存I/O信息的参数存储区域(工作区域)14c。进一步,在闪存15中包括保存库化数据的库数据存储区域15b、保存为读出所保存的库化数据的信息的库信息存储区域15c。
然后,MPU16与连接在I/O单元3上的输入仪器通信(输入处理),根据输入信号适当执行在RAM14上展开的用户程序。该用户程序是保存在RAM14的PRG存储区域14a的程序和从闪存15的库信息15c中传入到RAM14的PRG存储区域14a中的程序中的任一个(后面将详细说明)。然后,MPU16参照保存在ROM13中的系统程序处理该用户程序执行的各命令内容(用户程序执行处理)。然后,根据执行结果向I/O单元3连接的外部输出仪器发送输出信号(输出处理)。I/O单元3,反复执行该输入处理、用户程序执行处理、输出处理的3个处理。
此外,也可以输出处理之后设置周边处理期间,以这4个处理作为循环处理。作为周边处理,包括根据开发器的要求进行的处理,经由PLC的通信单元接收到的要求进行的处理,遥控IO通信等的处理。又,也可以不将输入处理和输出处理分开,作为一系列处理。进一步,也可以在循环处理的前面设置前处理,反复执行前处理、用户程序执行处理、输入输出处理、周边处理的4个处理。此外,前处理是指例如单元本身的异常检查处理等。又,在前处理中也可以包含状态辨别处理。该状态辨别处理是指例如检查后述的库执行标志位的有无或者库读出处理标志位的有无,检查模式设定(编程模式/运行模式)的处理。该前处理的状态辨别处理根据标志位的状态和模式状态对处理进行分支。如果上述标志位没有设立,并且模式为运行模式,进入到用户程序执行处理(这之后进入到输入输出处理),如果各标志位处于设立状态(即有标志位)并且是编程模式,不进行用户程序执行处理,而分支到与标志位对应的处理(标志位执行处理)或者与编程模式对应的处理。在该状态辨别处理中对处理流程分支,但无论怎样,都在后面的周边处理解除分支,之后仍然返回到前处理。结果是,反复执行前面所述的4个处理。此外,后述的特殊中继服务处理,进行循环处理中的状态辨别处理以及标志位执行处理。
此外,作为MPU16的处理,也可以与该循环处理不同步,通过单元间连接总线与CPU单元2等进行信息的收发。这是,作为该信息的发送或者接收,来自CPU单元的I/O信息读出要求由本单元接收后,返回对应的I/O信息的处理(收发处理)。
在本发明中,对保存在RAM14中的用户程序(采用梯形图语言等通用语言编制)的一部分或者全部进行库化,保存在从开发器不能访问的存储区域在本实施方案中为闪存15中。在此所谓的“从开发器不能访问的存储区域”是指,对于I/O单元3的闪存15,由于开发器不带有读出命令,因此成为开发器不能访问的存储区域。作为其它方式,有即使开发器有读出要求,在I/O单元3侧也不处理该要求的方式。无论如何,只要是禁止读出I/O单元3的闪存15的构成即可。
这样,开发器可以以读出命令读出保存在RAM14中的数据等,而不能读出保存在闪存15中的数据。为此,通过对包含技术秘诀的程序部分进行库化后只保存在闪存15中(进一步,将包含技术秘诀的程序信息从RAM14中删除,或者不让其残留),可以确切地保护包含技术秘诀的程序信息。进一步,由于在保存在闪存15中时,不是以用户编制的梯形图语言,而是以执行目标化的状态进行保存,所以万一有人恶意将闪存解析等将其内部的内容读出,也是普通人不能理解的语言,或者不能进行通常的反编译,所以不会泄漏包含技术秘诀的程序信息,具有更高的安全性。当然,象上述那样,由于利用开发器5不能读出闪存15,所以即使保存可复原的状态的用户程序,也就能足够进行保护。所谓可复原,包含复原到梯形图状态,或者复原到助记忆码的状态。
此外,在此所指的用户,当然是指在背景技术栏中说明的中间用户,有时也指可以包含厂商(PLC的制造厂商)、最终用户的总称。即,包含可以开发用户程序,或者将该用户程序下载到单元中,或者进行库化等正当行为的人员。对此,在以后的说明中也相同。
为了实现上述功能,进一步包括,对保存在RAM14中的用户程序进行库化后保存在闪存15中的库生成功能(通过MPU16实现)。库生成功能,在图3、图4中详细说明。在库化中以“部件库”和“整体库”两种情况进行说明。
首先对部件库进行说明。该部件库有多个种类。作为一例,对“主程序构成的用户程序的一部分”进行部件库化。这时,成为部件库化的对象的程序是子程序。即,在主程序中包含子程序,将该子程序作为部件库处理。库化后的子程序的执行,由主程序执行专用的命令将部件库化后的子程序调出进行执行。又,作为另一例,“只由子程序构成的用户程序的全部”进行部件库化。这时,成为部件库化对象的一个或者多个子程序,分别成为作为部件库的子程序。然后,库化后的子程序的执行,通过后面另外编制的主程序执行专用的命令,将该子程序调出进行执行。如这2个例所述,将作为从主程序调出执行的对象程序的进行库化后的程序称为部件库。此外,在该部件库中,在本实施方案中,保存有从主程序将所希望的部件库读出用的专用命令(后面将详细叙述)。将该部件库保存在存储器中,在本实施方案中,在图4的ST4~ST7中说明。又,实际的程序执行在图10的ST32、ST36、ST37中进行说明。
此外,该部件库的优点在于,只要将专用命令插入到用户程序的必要处就可以简单并且有效组成程序,使得用户将多用途处理程序部分作为部件库进行子程序化,在另外编制的用户程序(主程序)中调出该部件库进行执行。即,只要一次做成部件库,而在后面的主程序编制时可以作为1种应用命令活用。又,这样部件库化后的子程序,由于与主程序分离存在,不会受到主程序的编程、编辑的影响。又,单元提供者只是将成为应用程序的核心的处理部分进行部件库化,如果将该实施方案的单元提供给用户,用户可以活用该部件库的程序,自由编制主程序,可以以适合系统的形式简单定制程序。
以下对整体库化进行说明。这是想要对普通的用户程序(即,假定不是只由子程序构成的那样的特别用户程序)的整体进行库化时,该用户程序的整体成为整体库的对象,作为一个库处理。然后对给用户程序整体进行整体库化。在使用该整体库时,作为一个整体的主程序执行。此外,该整体库的存储器保存,在实施方案的图4的ST4~ST7中说明。又,整体库的执行在实施方案的图10的ST34、ST35、ST36、ST37中进行说明。这样,作为一个主程序相同的处理,(与上述的部件库相比),所以称为整体库。该整体库可以适用于下面的情况,即,在用户的控制程序所有都要保护时的情况,或者以预安装所有特定用途的应用程序的形式,由单元提供者以“特殊用途的××控制单元”的形式向用户提供时的情况。
以下说明库生成功能。首先,有关库生成功能的RAM14和闪存15之间的关系如图3所示。RAM14的PRG存储区域14a是在开发器上编制的用户程序变换成中间编码(中间语言)进行保存的区域。RAM14的参数存储器14c的参数存储区域中,由开发器设定以中间语言保存的程序是否是被库化的程序的标志位。又,在系统存储区域14b中,由开发器设定库的种类(整体库/部件库)等进行库化时的各种系统设定信息(在后述的ST3中说明)。这些设定,由I/O单元3在编程模式下进行。
然后,先将I/O单元切换到RUN模式。切换成RUN模式是为了对在RAM14的PRG存储区域14a中保存的用户程序进行编译。通过执行用户程序,所产生的执行目标码数据(编译成机器语言的用户程序)被保存到RAM14的参数存储器14c的执行目标码区域中(此外,如后面所述,在此保存的执行目标码,如果对象的用户程序的种类是部件库,在图4的ST5中利用。进一步,与用户程序编译时同时产生的子程序表等程序执行所必要的信息也保存在系统存取区域14b中)。
又,当切换到RUN模式时,通过MPU16的处理,将RAM14的PRG存储区域14a中的用户程序保存到闪存的PRG存储备份区域15a中。这是为了用于在必要时再现RAM14的PRG存储器的用户程序。例如,作为一例,对于应该进行库化的程序,对编制中的程序进行编辑并下载到单元中,在切换到RUN模式反复执行时,即使由于切断了单元的电源使得编辑中的用户程序从RAM14中删除或者处于不定状态,用户也可以根据需要从所作的备份中再现上次下载的编辑中的程序,进行再现利用。
此外,库化处理结束后,删除该闪存的备份区域的内容,在RAM14中再现展开,不能通过开发器读出。此外,也可以不删除内容,而如实施方案中说明的那样,更新为非秘密的其它程序(只有END命令的程序等)。
再补充说明一下,该RAM14中的内容,当切断单元的电源时全部被删除。因此,即使将用户程序保存在RAM14中,在库化结束后通过切断单元的电源,用户程序(包含需要保密的程序部分的程序)被删除,之后即使通过开发器对RAM14进行访问,也不用担心会被读取需要保密的程序。又,而在闪存15中,即使切断单元的电源,所保存的内容也不会被删除。
又,在RAM14的参数存储区域14c中,保存在图4的ST1中说明的为进行库化的标志位(库化执行标志位)。该标志位,是在用户利用开发器编制用户程序并下载到I/O单元之后,想进行库化时,设置成库化执行标志位。
在有关状态下,库生成功能,通过由MPU16执行图4所示的流程图实现。I/O单元3的模式从RUN模式返回到编程模式后,MPU16,针对用开发器制作的用户程序,读出RAM14的参数存储区域14c中的库化执行标志位。MPU16,在读出的标志位为ON时(第ST1步),将保存在RAM14的系统存储区域14b中的各种系统设定读出(第ST2步),根据读出的设定内容判断库的种类是部件库还是整体库。实际上是判定库的种类是否指定为部件库(第ST3步)。
此外,对于要部件库化的程序,虽然在开发器上作成,作成之后进行库化处理的方法至少有2种。第1种方法是在开发器上选定对象程序,只将部件库对象部分下载到I/O单元中的方法。这时,如上所述,在进行部件库化时,库化对象是保存在RAM中的子程序所构成的用户程序整体。第2种方法,将开发器上作成的用户程序(包括需要库化的部分和不需要库化的部分的程序)全部下载到I/O单元中,然后由开发器选定库化对象部分的方法。这时,只是将保存在RAM中的一部分即库化对象部分进行部件库化。
指定部件库化时,即库化对象是用户程序的一部分或者全部时,跳至第4步,MPU16读出保存在RAM14的PRG存储区域14a中的对象用户程序,同时将读出的程序以中间语言的状态保存在闪存15的库数据存储区域15b中(第ST4步)。该第4步,是将编译成执行目标码之前的用户程序保存在闪存15上。该内容是可以反编译的,根据需要可以复原到梯形图状态,也可以复原到助记忆符状态。
然后,MPU16将保存在RAM14的参数存储区域14c的执行目标码用区域中的该用户程序的执行目标码读出,同时将该执行目标码(编译成机器语言的用户程序)保存到闪存15的库数据存储区域15b中(第ST5步)。在此,如上所述,虽然采用的是将I/O单元3切换到RUN模式下,执行用户程序,然后将所产生的执行目标码预先保存到RAM14的参数存储区域14c的执行目标码用区域中的方式,但并不限定于此,也可以预先进行编译后并不保存,而在该第5步中,重新对RAM14的用户程序进行编译,将编译后的执行目标码保存在闪存15的库数据存储区域15b中。所保存的内容由于是通常不能理解的语言,或者不能进行反编译,因此不能复原到梯形图状态或者助记忆符的状态。又,在第ST4步和第ST5步,在库数据存储区域15b中双重保存了用户程序,即将编译成执行目标码之前的用户程序和编译成执行目标码之后的用户程序两者均保存在库数据存储区域15b中,也可以省略第ST4步和第ST5步中的一步。
进一步,MPU16,对成为对象的用户程序进行编译时所产生的子程序表等的程序执行所必要的信息从RAM14的系统存储区域14b中读出,同时保存到闪存15的库信息存储区域15c中(第ST6步)。子程序表包括子程序、各个子程序的编号、分别保存在闪存中的地址范围等关联信息。进一步,产生其它库信息并保存到闪存15的库信息存储区域15c中(第ST7步)。作为该库信息,例如有用于识别库的编码的库ID、为便于用户容易明白而附加在登录库上的固有名称(库名)、在库内使用特殊命令时的参照信息表(库命令表)等各种信息。该库信息,如后面所述,对于授权用户可以在向存储卡上备份时或者从存储卡上下载时使用。又,对于库ID和库名,是将用户在进行库化处理时在开发器上预先设定并保存在RAM14的系统存储区域14b中的内容读出后产生。库命令表,在进行库化处理时进行的单元系统处理中作成。进一步,除了上述预先保存、设定的信息以外,例如保存了用户程序和执行目标码的库数据存储区域内的地址和指针等用于读出用户程序的信息也作为库信息保存。
然后,库ID,由于仍然残留在可读出的RAM14中,为了不让授权用户之外的人利用,将库ID初始化,让库化执行标志位OFF,结束库化的所有处理(第ST8步)。此外,虽然只是以将库ID删除的方式进行了说明,也可以将库ID之外的库信息同样也初始化后进行删除。此外,作为将保存在RAM14中的用户程序等进行库化(部件库化)后保存在闪存15中的处理概念的说明图的一例,例如如图5所示。
另一方面,当库种类是整体库时,作为MPU16的处理,在第3步的分支判断中为NO,直接调转到第9步,MPU16将保存在RAM14的PRG存储区域14a中的用户程序读出,同时将读出的用户程序保存在闪存15的库数据存储区域15b中(第ST9步)。然后,MPU16读出保存在RAM14的系统存储区域14b中的各种系统设定,同时保存到闪存15的库信息存储区域15c中(第ST10步)。进一步,由MPU16产生其它库信息,保存到闪存15的库信息存储区域15c中(第ST11步)。作为该库信息,例如有用于识别库的编码的库ID、为便于用户容易明白而附加在登录库上的固有名称(库名)、在库内使用特殊命令时的参照信息表(库命令表)等各种信息。该库信息的作成处理和部件库时的情况基本相同。然后,让库化执行标志位OFF,结束库化的所有处理(第ST8步)。此外,作为将保存在RAM14中的用户程序整体进行库化(整体库化)后保存在闪存15中的处理概念的说明图的一例,例如如图6所示。此外,这样进行库化后保存在闪存中的库程序(ST4、5、9中保存的程序),在图8、9、10中所说明的执行环境下执行。
最后,将RAM14的存储内容和闪存15的PRG存储备份区域中的存储内容删除,删除的方式可以有各种各样的方法。举例讲,在第ST8步后,用户在开发器上作成只包括END命令的用户程序,然后将其下载到I/O单元3中。于是,在RAM14的PRG存储区域14a中保存只包括END命令的用户程序。这时通过在进行库化处理时的上一次的用户程序上覆盖保存,而将其删除,留下新的只包括END命令的用户程序。然后,通过将I/O单元3切换到RUN模式,在闪存15的PRG存储备份区域15a中也将只包括END命令的用户程序备份进行覆盖保存,这样将前次的库化对象的用户程序删除。然后切断I/O单元3的电源,将RAM14的存储内容删除。通过这样的方式,将库化对象的程序从可读出的存储区域中删除。作为另一例,也可以将第ST8步的库化执行标志位设定成OFF,结束整个库化处理,同时残留在RAM14的PRG存储区域14a和闪存的PRG存储备份区域15a中的库化对象的用户程序,通过I/O单元的系统处理将其删除。又,作为其它例,在第ST8步之前或者之后,从开发器上发出删除的操作进行删除。
然后说明启动设置在MPU16中的库生成功能,采用按照上述流程将用户程序进行库化后的I/O单元3,实际进行控制时的库化后的程序的执行过程。
首先,用户(假定是与进行上述库化的用户不同的用户)利用开发器新建用户程序。这时在闪存15中保存了部件库,而要利用该部件库时,在主程序(采用梯形图语言作成)中,写入调用子程序用的专用命令。在此准备了“LIB A B C”的专用命令。即,“LIB”表示调用保存在闪存15中的部件库(子程序库)的命令,“A”表示定位闪存15内的库子程序的库子程序的编号,“B”表示指定传递到库中的数据的区域的开始部分用的输入CH开始编号,“C”表示指定保存库的执行结果的数据的区域的开始部分用的输出CH开始编号。A的子程序编号,由进行库化的用户在I/O单元的操作手册等中说明子程序的处理内容和该子程序的编号,通过参照操作手册可以知道。又,参数数据的区域B、C,由编制用户程序的用户在I/O单元3内的数据存储区域(图2中未示)设定即可。此外,用户程序作成后,从开发器通过接口向I/O单元3下载。下载后,将用户程序保存在RAM14中。然后,将I/O单元3切换到RUN模式,保存在RAM14中的用户程序,作为备份保存在闪存的PRG存储备份区域中,同时编译成执行目标码,保存在RAM14的执行目标码保存装置中。此外,RUN模式下的初始化,在图10中详细说明。
然后,在RUN模式下的I/O单元3,由MPU16执行保存在RAM14的参数存储器的执行目标码区域中的主程序。在执行中,如果存在上述专用命令,MPU16识别出该子程序的库子程序编号,根据该子程序编号参照保存在闪存15的库信息存储区域15c中的库信息中的子程序表,找出在相应部件库的闪存中的保存地址,启动该部件库。这时程序计数器,从用户程序(主程序)在RAM14的PRG存储器上的地址,切换到闪存15的保存部件库的库数据区域的特定地址。该部件库启动时,在库用子程序工作表中压入返回地址等必要的数据。然后,从库内的子程序返回主程序执行时,将弹出的返回地址输入到程序计数器中,继续进行主程序的处理。图7是主程序中的子程序的执行的概念的示意图。图7中的梯形图主程序中的“LIB#001*** ***”相当于上述的“LIB A B C”。
执行上述处理的具体处理过程,为图8、图9所示的流程图。首先,MPU16执行主程序。执行中如果出现专用命令(LIB),MPU16启动图8所示的库子程序执行处理。然后,MPU16首先判断是否指定了指定库(第ST20步),指定了时,保存子程序执行后用于返回到主程序中的信息,在库执行用工作区中压入主程序的执行状态等信息(执行地址等)(第ST21步)。
然后,由MPU16将PC(程序计数器)从主程序执行地址空间切换到库执行地址空间(第ST22步),执行库化后的程序(第ST23步)。即,根据库信息,从闪存15中读出指定的部件库,执行该程序。另一方面,没有指定库时,在第20步的分支判断中为NO,跳转到第24步,在执行命令错误处理后,结束处理(第ST25步)。
又,第23步的库执行中执行完库子程序之后,返回到原来的主程序时,MPU16按照图9的流程图进行处理。此外,在本实施方案中,该返回处理与通常的子程序返回处理共用。通常的子程序是指作为保存在RAM14中的梯形图主程序的一部分作成的,而不是库化后保存在闪存中的子程序。为此,首先,判断当前的子程序处理是否是库执行(第ST26步)。然后,是库执行时,从压入的库用工作区的主程序执行状态(执行地址等)中返回(第ST27步)。即,获取在第21步中压入的数据(主程序的执行状态)。然后,根据所获取的数据,将程序计数器切换到主程序执行地址上(第ST28步)。这样,返回处理结束,依次执行以后的主程序。
此外,从通常的子程序返回时,在第26步的分支判断中为NO,跳转到第29步,从通常的子程序工作区中进行数据恢复(获取执行子程序之前进行压入处理的数据),结束返回处理。
另一方面,整体库的执行,是库化后的程序本身作为主程序执行。这与在通常的用户程序中执行部分库的情况不同。即,通常的用户程序的执行,由于保存在RAM14的PRG存储区域14a中,从该区域读出作为主程序的用户程序,进行编译后执行程序,而执行该整体库时,读出对象的用户程序在RAM14中不存在,而是作为库保存在闪存15中,以保存在该闪存15中的程序作为编译对象,执行编译后的程序。
此外,在本实施方案中的I/O单元3,不仅可以执行部件库和整体库的程序,而且可以执行没有库化的通常的用户程序。为此,需要进行启动后的RUN初始化处理。该RUN初始化处理采用图10所示的流程图进行说明。
用户(与进行库化的用户不同的用户)在开发器上作成用户程序,下载到I/O单元3的RAM14的PRG存储区域14a中执行时,如果在作成的用户程序中要调用部件库,将RAM14的系统存储区域14b中的库的指定信息设定成部件库。如果不利用库,只处理通常的用户程序(包含通常的子程序处理的情况),将RAM14的系统存储区域14b中的库的指定信息设定成执行既不是部件库也不是整体库的通常的用户程序。
然后,I/O单元3从编程模式切换到RUN模式。(此外,如上所述,在切换到RUN模式时,MPU16在闪存15的备份区域15a中备份保存下载到RAM14的PRG存储区域14a中的用户程序。并且,接通电源时,在闪存15的备份区域15a中保存有用户程序,而在RAM14的PRG存储区域14a中为空时,MPU16将闪存15的备份区域15a中的用户程序展开到RAM14的PRG存储区域14a中)。
在切换到RUN模式后,首先,MPU16读出保存在RAM14的系统存储区域14b中的系统设定,判断是否指定了库(第ST30、31步)。然后,如果没有指定库,只执行通常的用户程序,所以将保存在RAM14的PRG存储区域14a中的程序(用户程序)设定成编译对象(第ST32步)。
又,即使指定了库(在第31步的分支判断中为YES)而指定的是部件库(在第33步的分支判断中为NO),主程序执行保存在RAM14中的用户程序,跳转到第32步,执行上述处理。这时,不对部件库进行编译,是因为在图4的第ST5步的处理中,已经进行了编译并以执行目标码的状态保存在闪存中。在图4的处理中,如果不执行第ST5步而只执行第ST4步时,虽然在图10中未示出,只要增加将在第ST4步保存在闪存中的用户程序(编译成执行目标码之前的程序)读出并进行编译,然后以执行目标码的形式保存在闪存中的处理即可。
然后,如果指定了库(在第31步的分支判断中为YES)而且指定的是整体库时(在第33步的分支判断中为YES),设置保存在闪存15内的库信息存储区域15c中的命令表系统设定(第ST34步)。这样,可以知道编译处理对象的整体库保存在闪存15内的那一个区域。然后,将保存在闪存15的库数据存储区域15b中的程序(整体库)作为编译对象(第ST35步)。
在执行上述第32步或者第35步之后,MPU16将保存在闪存15的库数据存储区域15b中的对象库程序读出并进行编译(第ST36步),以执行目标码的状态保存在RAM14中。然后,执行作为通常的RUN模式的用户程序。此外,上述第34、35、36步是执行整体库的处理。换言之,对于只采用整体库的I/O单元而言,可以省略第30~33步的处理步骤。
如上所述,可以执行部件库或者整体库的生成/读出。又,当为部件库时,要库化的程序,如图3中说明的那样先保存在RAM14中,在库化处理结束后,不需要保存在有关RAM14中的程序,进行删除。然后,实质的用户程序是保存在RAM14中的主程序和保存在闪存15中的部件库,只有部件库化的程序部分不需要保存在RAM14的区域中(该部分保存在闪存中),因此对于RAM14而言增加了可以使用的程序容量。即,通过适当分配部件库化的程序和保存在RAM14中的用户程序,可以作成实质上RAM14的PRG存储区域14a的存储容量以上大小的用户程序。
然而,库化后的程序只保存在不能访问的闪存中,其内容不能通过开发器等读出,所以有可能出现不知道怎样的程序库化后保存在闪存15中的情况。为此,在本实施方案中,设置了库名读出功能。即,MPU16具有实施图11所示的流程图的功能。首先,用户想读出库名时,通过开发器读出设置存在于RAM14的参数存储器14c中的库名并设置标志位。然后,I/O单元3在循环处理中执行特殊中继服务处理。作为该特殊中继服务处理内的一个处理,首先读出库名读出标志位(第ST41步),在有读出指定(标志位为ON)时(在第42步的分支判断中为YES),检查库的有无(第ST43步)。然后,库存在时(在第43步为YES),将闪存15内的库名设置到RAM14的参数存储器14c的预先确定区域中(第ST44步)。这样,用户利用开发器参照RAM14的预先确定区域,通过读取可以获得库名,可以判断库化程序的内容。
以下说明应用上述I/O单元3的各功能的实施方案。保存在上述I/O单元3的RAM14和闪存15中的信息,可以备份在通过单元之间连接总线连接的CPU单元2上装载的存储卡(例如紧凑闪存卡等)上。当然,存储卡的装载并不限定于CPU单元,也可以在该I/O单元上增加装载存储卡的结构,也可以另外设置装载了存储卡、具有对I/O单元的RAM14和闪存15控制数据读写功能的新单元。利用任一个单元,通过对保存在I/O单元3的RAM14和闪存15中的程序信息进行备份(上载),可以进行各种各样的应用。又,也可以将保存在存储卡中的信息,保存到I/O单元3的RAM14和闪存15中(下载),进行各种各样的应用。
然后,通过利用该备份功能,保存在闪存15中的库可以保存在存储卡中,将该存储卡转入其它PLC中,通过下载,可以将库化后的程序植入到有关其它PLC中。
然后,在本实施方案中,为了不让授权用户以外的人不正当进行备份而植入有关其它PLC中,设置了上载时的保护功能。这样,可以防止库的不正当使用(防止向存储卡的备份)。其具体的处理功能如下。
首先,向存储卡的上载(单元→存储卡)操作,通过使用开发器在RAM14的系统存储区域14b中的系统设定(图中未示)中保存库ID,然后分配给单元的中继区域(CPU单元和I/O单元之间循环进行数据交换的区域)的标志位操作进行。然后,如图12所示,备份文件形式与编号和文件名关联,标志位操作包括单元数据上载和单元数据下载,均在从0变化到1时,进行存储卡的写入或者读出。进一步,作为状态显示,包括存储卡传送错误和传送忙。这些状态显示,作为表示该状态的数据保存在单元内。根据所保存的数据可以向单元外部报知(LED等显示),或者在开发器上显示。此外,在向存储卡的上载操作和下载操作(后面说明)中使用的标志位操作对象的标志位设置在I/O单元3内的给定部分(例如,参数存储器14c)中。该标志位操作对象的标志位,也可以设置在CPU单元和I/O单元之间循环进行数据交换的区域中。这样,对CPU单元的指定区域(相当于上述分配给单元的中继区域)通过标志位操作可以进行上载/下载操作,通过与CPU单元连接的开发器以外的仪器(例如可编程显示器)也可以进行上载/下载操作。
在该状态下,向存储卡的上载功能如下述那样由MPU16执行(作为特殊中继服务处理之一)。即,向存储卡写入数据时,以下信息①~③设置成库关联数据写入。
①头信息
②备份数据(库关连数据)
③SUM值
在将上载对象的保存数据写入到存储卡之前,在存储卡中生成名为“unit**.prm”(**表示单元编号)的文件,写入到头信息中。头信息,如图13所示,包括表示单元种类信息的单元形式、单元的软件版本信息、最大内部参数长度。此外,在图13中,备份数据是上载对象的用户程序和库等。又,库ID也作为备份数据保存在存储卡中。此外,上述的头信息以及备份数据的数据结构,由于是在制作、编辑用户程序的开发器上不能解析的结构,利用该开发器不能复原成梯形图语言或者其它语言程序。
然后,将保存在I/O单元3的闪存15内的库ID和在系统设定中设置的库ID(在上载操作时由用户通过开发器输入的ID)进行比较,判断是否一致。只有在一致时才允许向存储卡写入,执行处理。这样,可以防止由第三者从搭载在本库上的某个单元复写到其它存储卡上的情况,进一步,可以防止上载后的数据再次下载到其它单元中使用(防止拷贝)。因此,本上载操作,只有知道本库的库ID的用户才能进行操作。
即,库ID由于保存在闪存15中,即使访问I/O单元3也不可能获取(虽然在库化处理时在RAM中保存有库ID,但在图4的第8步的执行中对库ID进行了初始化而将其删除)。因此授权用户以外不知道库ID,能正确输入该库ID的人判定为授权用户,允许向存储卡备份。为此,可以防止非授权用户通过向存储卡中备份不正当获取库化程序等的情况。
此外,如上所述,为了核对该授权用户,要预先在RAM14中输入库ID,如果这样留下来,有可能出现不正当获取库ID的情况。为此,在备份处理结束后,或者确认授权用户后的给定时刻,删除保存在RAM14中的库ID。
另一方面,下载功能(存储卡→单元)如下所述。向单元的下载操作,通过用户操作分配给单元的中继区域的指定标志位进行执行。具体的下载处理,作为特殊中继服务处理之一由MPU16执行。即,下载处理时,I/O单元3先从存储卡中读出头信息,这时,如果在存储卡上不能找到该文件名的文件时,或者保存在头信息中的单元形式与本身单元的形式不一致时,判断出现了错误,让存储卡传送错误标志位ON,并结束。
这样,可以将上载(备份)到存储卡上的库,按照给定顺序下载到I/O单元3中。然后,在下载时I/O单元3,可以和上载时的I/O单元3是同一个,也可以是其它I/O单元3。是同一个I/O单元3时,上载就是数据(信息)的备份。而下载到其它I/O单元3中时,由于已经由用户等制作的库化程序作为包化(部件化)产品,可以在其它I/O单元3中进行程序开发、安装中使用。
即,对于PLC或者PLC用单元的制造厂商,或者购入该PLC、单元并组装到产业机械中的用户等,在各交易中,不仅可以提供装载了用户程序、库的单元,而且对于已经持有包含库生成装置等的本发明的单元、PLC的用户,通过提供上述备份后的存储卡,可以进行产品的交易。当然,也可以下载到同一用户内的其它I/O单元中。
即使这种情况下,如果是不知道保存在存储卡中的库ID的人,从利用存储卡将库下载到闪存15中的I/O单元,也不能再次备份到存储卡中。
此外,在上述实施方案中,虽然是以适用于I/O单元中为例进行了说明,但本发明并不限定于此,显然也可以适用于CPU单元或者其它单元中。适用于CPU单元时,其基本构成也大致相同,在I/O单元中说明的外部输入/输出电路可能在CPU单元中不具有,而代替为具有单元之间连接总线的接口电路的构成。又,在“遥控用I/O用主单元”中适用时,在I/O单元中说明的外部输入/输出电路是与遥控用I/O用从单元的接口电路。作为适用可能的单元,包括在实施方案中涉及到的“计数器单元”、“模拟单元”、“位置控制单元”等。在位置控制单元中适用时,从实施方案中的图2的外部输入电路11输入的信号是表示位置信息的模拟信号或者脉冲信号,程序执行的内容是有关定位的控制,从外出输出电路12输出的信号是用于定位的命令信号,是脉冲信号或者模拟信号。进一步,包含这些各单元构成的PLC也包含在本发明中。更进一步,有关本发明的PLC,并不限定于连接上述那样的多个单元构成的PLC,对于一体形成的PLC,只要包括将用户程序库化的功能等,都包含在本发明中。“一体型PLC”,也是称为微PLC的PLC,是将在实施方案中说明的电源单元具有的功能、CPU单元的功能、I/O单元的功能不分离成各个单元,而集成并内藏在一个单元外壳中的PLC。
如上所述,在该发明中,将用户作成的程序的一部分或者全部进行库化,保存在用开发器不能访问的第2存储装置中,所以可以进行简单而确切的保护。
Claims (12)
1.一种单元,是可编程控制器用单元,其特征在于,包括:
保存用户程序的第1存储装置;
对保存在所述第1存储装置中的所述用户程序的至少一部分进行库化并保存在第2存储装置中的库生成装置;
执行保存在所述第2存储装置中的库化后的程序的程序执行装置,
所述第2存储装置安装在所述单元内,并且不能被上载所述用户程序的开发器所访问。
2.根据权利要求1所述的单元,其特征在于,所述库生成装置是将所述用户程序编译成执行目标码后保存在所述第2存储装置中。
3.根据权利要求1所述的单元,其特征在于,所述库化程序是子程序,
所述程序执行装置,在保存在所述第1存储装置中的主程序中包含所述子程序库调用的专用命令时,执行指定的子程序库,同时包括返回到所述主程序的功能。
4.根据权利要求1所述的单元,其特征在于,所述库化程序是所述用户程序的整体,
所述程序执行装置,成为可以执行保存在所述第2存储装置中的库化程序的状态。
5.根据权利要求1所述的单元,其特征在于,所述库生成装置具有将要库化的程序与用于选定的库名关联并保存在第2存储装置中的功能,
包括读出保存在所述第2存储装置中的所述库名并保存在所述第1存储装置中的库名读出装置。
6.根据权利要求1所述的单元,其特征在于,所述库生成装置具有在第2存储装置中保存库化后的程序、同时与选定该库的库识别信息关联进行保存的功能,
包括将保存在所述第2存储装置中的信息备份到外部存储装置中的备份装置,
所述备份装置,判断所输入的库识别信息与预先保存在所述第2存储装置中的正规识别信息是否一致,在一致时将所述信息保存到所述外部存储装置中。
7.一种可编程控制器,其特征在于,包括:
保存用户程序的第1存储装置;
对保存在所述第1存储装置中的所述用户程序的至少一部分进行库化并保存在第2存储装置中的库生成装置;
执行保存在所述第2存储装置中的库化后的程序的程序执行装置;
所述第2存储装置,
所述第2存储装置不能被上载所述用户程序的开发器所访问。
8.一种用户程序的处理方法,是在包括保存用户程序的第1存储装置、不能被上载所述用户程序的开发器所访问的第2存储装置的可编程控制器用单元中的用户程序的处理方法,其特征在于,
将保存在所述第1存储装置中的所述用户程序的至少一部分进行库化并保存在所述第2存储装置中,保护所述库化后的部分,
所述用户程序执行时,适当执行保存在所述第2存储装置中的库化后的程序。
9.一种可编程控制器用单元,包括接收输入信号的输入电路、根据该输入信号执行用户程序的程序执行装置、输出执行结果的输出电路,其特征在于,包括:
预先保存部件库化后的程序的第2存储装置;
对插入有调出执行所述部件库化后的程序用的专用命令的用户程序利用开发器作成后进行保存的第1存储装置,
所述程序执行装置,是扫描执行保存在所述第1存储装置中的用户程序,通过执行上述用户程序中的专用命令从所述第2存储装置中调出执行所述部件库化后的程序,当调出执行结束后,返回执行所述用户程序,
通过让所述开发器不能访问上述第2存储装置,使得不能读出部件库化后的程序。
10.一种可编程控制器用单元,包括接收输入信号的输入电路、根据该输入信号执行用户程序的程序执行装置、输出执行结果的输出电路,其特征在于,包括:
预先保存整体库化后的程序的第2存储装置;
通过开发器的操作、保存用于调出执行所述整体库化后的程序的设定标志位的第1存储装置,
所述程序执行装置,是根据所述第1存储装置的设定标志位从第2存储装置中调出执行整体库化后的程序,
通过让所述开发器不能访问上述第2存储装置,使得不能读出整体库化后的程序。
11.一种可编程控制器用单元,其特征在于,包括:
保存在开发器上作成的用户程序的第1存储装置,该用户程序插入有调出执行库化后的程序用的专用命令;
保存预先库化后的程序的第2存储装置;
扫描执行所述用户程序,通过执行所述用户程序中的专用命令,从所述第2存储装置中调出执行所述库化后的程序的程序执行装置,
所述第2存储装置中的库化程序预先保存,并且通过不能利用作成用户程序时所使用的开发器读出库化程序,可以保护库化程序的内容。
12.一种可编程控制器用单元,其特征在于,包括:
保存用于在开发器上调出执行库化后的程序的设定标志位的第1存储装置;
保存预先库化后的程序的第2存储装置;
读出所述第1存储装置的设定标志位,当是表示执行的标志位设定时,从所述第2存储装置中调出执行所述库化后的程序的程序执行装置,
所述第2存储装置中的库化程序预先保存,并且通过不能利用对设定标志位进行设定的开发器读出库化程序,可以保护库化程序的内容。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002003954 | 2002-01-10 | ||
JP2002003954 | 2002-01-10 | ||
JP2002382445A JP3548829B2 (ja) | 2002-01-10 | 2002-12-27 | ユニット及びplc並びにユーザプログラムの処理方法 |
JP2002382445 | 2002-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1431570A true CN1431570A (zh) | 2003-07-23 |
CN100403193C CN100403193C (zh) | 2008-07-16 |
Family
ID=26625484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031014267A Expired - Fee Related CN100403193C (zh) | 2002-01-10 | 2003-01-10 | 单元和可编程控制器以及用户程序的处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7010368B2 (zh) |
EP (1) | EP1329783B1 (zh) |
JP (1) | JP3548829B2 (zh) |
CN (1) | CN100403193C (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100359462C (zh) * | 2005-01-04 | 2008-01-02 | 凌阳科技股份有限公司 | 一种可编程控制装置的开发方法及系统 |
CN100370416C (zh) * | 2005-01-04 | 2008-02-20 | 凌阳科技股份有限公司 | 一种可编程控制装置及其方法 |
CN100454192C (zh) * | 2004-07-29 | 2009-01-21 | 株式会社捷太格特 | 安全plc、安全plc的编程方法以及顺序程序的判定方法 |
CN101467112B (zh) * | 2007-01-10 | 2011-04-06 | 三菱电机株式会社 | 可编程显示器以及控制系统 |
CN102339031A (zh) * | 2010-07-27 | 2012-02-01 | 深圳市合信自动化技术有限公司 | 一种子程序调用的方法、装置及plc控制系统 |
CN102968089A (zh) * | 2012-10-23 | 2013-03-13 | 深圳市汇川控制技术有限公司 | 可编程逻辑控制器及实现方法 |
CN103995499A (zh) * | 2013-02-15 | 2014-08-20 | 欧姆龙株式会社 | 控制器、信息处理装置及程序 |
CN111026382A (zh) * | 2019-12-13 | 2020-04-17 | 深圳市杰美康机电有限公司 | 混合编程方法、终端设备及计算机可读存储介质 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3594035B2 (ja) * | 2003-03-13 | 2004-11-24 | オムロン株式会社 | 制御装置、cpuユニット、プログラマブルコントローラのユーザプログラム編集方法、及びオンラインエディットされる際のプログラマブルコントローラの処理方法 |
US20050144408A1 (en) * | 2003-12-24 | 2005-06-30 | Kenji Ejima | Memory protection unit, memory protection method, and computer-readable record medium in which memory protection program is recorded |
JP2006190119A (ja) * | 2005-01-07 | 2006-07-20 | Hitachi Industrial Equipment Systems Co Ltd | プログラマブルコントローラ |
JP4426492B2 (ja) * | 2005-03-30 | 2010-03-03 | Ykk株式会社 | プログラマブル・ターミナル・システム |
WO2006110485A2 (en) * | 2005-04-07 | 2006-10-19 | Insightful Corporation | Method and system for handling large data sets in a statistical language |
JP4501781B2 (ja) * | 2005-05-26 | 2010-07-14 | パナソニック電工株式会社 | プログラマブルコントローラ |
JP4442524B2 (ja) * | 2005-07-12 | 2010-03-31 | 株式会社ジェイテクト | 安全plc |
US7881812B2 (en) * | 2005-09-29 | 2011-02-01 | Rockwell Automation Technologies, Inc. | Editing and configuring device |
US7660638B2 (en) * | 2005-09-30 | 2010-02-09 | Rockwell Automation Technologies, Inc. | Business process execution engine |
EP1865421B1 (de) * | 2006-06-09 | 2019-02-20 | Siemens Aktiengesellschaft | System zur Erstellung dynamischer Webseiten |
DE102006055330A1 (de) * | 2006-11-23 | 2008-05-29 | Kraussmaffei Technologies Gmbh | Verfahren zur Ablaufprogrammierung eines Spritzgießzyklus einer Spritzgiessmaschine |
JP2008165709A (ja) * | 2007-01-05 | 2008-07-17 | Koyo Electronics Ind Co Ltd | モーションプログラム保護方法およびプログラマブルコントローラ |
JP2008171053A (ja) * | 2007-01-09 | 2008-07-24 | Koyo Electronics Ind Co Ltd | モーションモジュールおよびプログラマブルコントローラ |
US20100250007A1 (en) * | 2007-05-09 | 2010-09-30 | Johnson Controls Technology Company | Refrigeration system |
JP4849078B2 (ja) * | 2008-02-05 | 2011-12-28 | 富士電機株式会社 | プログラマブル・ロジックコントローラ及びプログラマブル・ロジックコントローラのロジック更新支援ツール |
US8688258B2 (en) * | 2008-09-11 | 2014-04-01 | Rockwell Automation Technologies, Inc. | Method of controlling a machine tool |
US9311460B2 (en) * | 2011-03-15 | 2016-04-12 | Omron Corporation | Programmable controller system, tool device, tool program, storage medium, and programmable controller |
DE102012207916B3 (de) * | 2012-05-11 | 2013-09-19 | Artis Gmbh | Verfahren und Vorrichtung zur automatisierten Konfiguration einer Überwachungsfunktion einer Werkzeugmaschine |
CN103197590B (zh) * | 2013-03-18 | 2015-06-10 | 张二浩 | 基于活动存储设备的逻辑控制器及其控制方法 |
KR101777438B1 (ko) * | 2013-05-20 | 2017-09-11 | 엘에스산전 주식회사 | Plc 시스템의 입출력 모듈 |
DE102013216136B3 (de) * | 2013-08-14 | 2015-03-19 | Artis Gmbh | Verfahren und Vorrichtung zur automatisierten Konfiguration einer Überwachungsfunktion eines Industrieroboters |
KR101564174B1 (ko) * | 2014-10-13 | 2015-10-28 | 엘에스산전 주식회사 | Plc 내 mpu와 메모리 사이의 데이터 송수신 방법 |
KR102095224B1 (ko) * | 2018-02-09 | 2020-03-31 | 엘에스산전 주식회사 | 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 |
JP7180158B2 (ja) | 2018-07-13 | 2022-11-30 | オムロン株式会社 | プログラム開発装置、およびコントローラ |
US20220164464A1 (en) * | 2019-03-14 | 2022-05-26 | Omron Corporation | Control system, method, and control device |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4118789A (en) * | 1977-06-06 | 1978-10-03 | Allen-Bradley Company | Program protection module for programmable controller |
US5295059A (en) * | 1992-09-09 | 1994-03-15 | Allen-Bradley Company, Inc. | Programmable controller with ladder diagram macro instructions |
CA2126740A1 (en) * | 1993-07-06 | 1995-01-07 | Naveen Jain | Method and system for incorporation of a utility function into an operating system |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
JP3460747B2 (ja) * | 1995-04-12 | 2003-10-27 | 三菱電機株式会社 | 数値制御装置 |
JPH08305558A (ja) * | 1995-04-27 | 1996-11-22 | Casio Comput Co Ltd | 暗号化プログラム演算装置 |
US5671420A (en) * | 1995-06-28 | 1997-09-23 | Canon Information Systems, Inc. | Distribution diskette utility |
DE19707107A1 (de) * | 1997-02-22 | 1998-09-10 | Bosch Gmbh Robert | Einrichtung zur Programmierung eines SPS |
JPH10333900A (ja) | 1997-05-28 | 1998-12-18 | Tsutomu Ishida | Pcプログラムコピー防止方法 |
US20030033450A1 (en) * | 2000-07-20 | 2003-02-13 | John Appleby-Alis | System, method, and article of manufacture for remote updating of hardware |
-
2002
- 2002-12-27 JP JP2002382445A patent/JP3548829B2/ja not_active Expired - Lifetime
-
2003
- 2003-01-08 EP EP03000086A patent/EP1329783B1/en not_active Expired - Fee Related
- 2003-01-10 CN CNB031014267A patent/CN100403193C/zh not_active Expired - Fee Related
- 2003-01-10 US US10/341,331 patent/US7010368B2/en not_active Expired - Lifetime
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100454192C (zh) * | 2004-07-29 | 2009-01-21 | 株式会社捷太格特 | 安全plc、安全plc的编程方法以及顺序程序的判定方法 |
CN100359462C (zh) * | 2005-01-04 | 2008-01-02 | 凌阳科技股份有限公司 | 一种可编程控制装置的开发方法及系统 |
CN100370416C (zh) * | 2005-01-04 | 2008-02-20 | 凌阳科技股份有限公司 | 一种可编程控制装置及其方法 |
CN101467112B (zh) * | 2007-01-10 | 2011-04-06 | 三菱电机株式会社 | 可编程显示器以及控制系统 |
CN102339031A (zh) * | 2010-07-27 | 2012-02-01 | 深圳市合信自动化技术有限公司 | 一种子程序调用的方法、装置及plc控制系统 |
CN102339031B (zh) * | 2010-07-27 | 2013-12-25 | 深圳市合信自动化技术有限公司 | 一种子程序调用的方法、装置及plc控制系统 |
CN102968089A (zh) * | 2012-10-23 | 2013-03-13 | 深圳市汇川控制技术有限公司 | 可编程逻辑控制器及实现方法 |
CN102968089B (zh) * | 2012-10-23 | 2014-12-24 | 深圳市汇川控制技术有限公司 | 可编程逻辑控制器及实现方法 |
CN103995499A (zh) * | 2013-02-15 | 2014-08-20 | 欧姆龙株式会社 | 控制器、信息处理装置及程序 |
CN103995499B (zh) * | 2013-02-15 | 2017-07-25 | 欧姆龙株式会社 | 控制器、信息处理装置 |
CN111026382A (zh) * | 2019-12-13 | 2020-04-17 | 深圳市杰美康机电有限公司 | 混合编程方法、终端设备及计算机可读存储介质 |
CN111026382B (zh) * | 2019-12-13 | 2024-01-16 | 深圳市杰美康机电有限公司 | 混合编程方法、终端设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2004005389A (ja) | 2004-01-08 |
US20030144753A1 (en) | 2003-07-31 |
EP1329783A3 (en) | 2006-12-13 |
JP3548829B2 (ja) | 2004-07-28 |
US7010368B2 (en) | 2006-03-07 |
CN100403193C (zh) | 2008-07-16 |
EP1329783A2 (en) | 2003-07-23 |
EP1329783B1 (en) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1431570A (zh) | 单元和可编程控制器以及用户程序的处理方法 | |
US5881290A (en) | Industrial controller decompiler accommodating an expandable instruction set | |
US5819097A (en) | Industrial controller compiler with expandable instruction set | |
CN101308547B (zh) | 控制用于ic卡的小应用程序运行的方法 | |
US5136709A (en) | Method for generating an operating system by a static link-editor | |
CN1160626C (zh) | 基于标记的链接 | |
CN100492294C (zh) | 程序动态加载方法 | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN101763279A (zh) | 一种BootLoader架构设计方法 | |
JP2008282363A (ja) | プログラマブルコントローラ、プログラム作成支援装置、コンピュータプログラム及びplcシステム | |
US20240095344A1 (en) | Computer implemented method | |
CN103064654A (zh) | 集成电路、电子系统及提供otp内存配置可更新的方法 | |
CN1717639A (zh) | 芯片集成保护装置 | |
CN100375029C (zh) | 存储器配置系统与方法 | |
CN114816273B (zh) | 针对Norflash的自适应最优配置的方法、装置及介质 | |
US20200201605A1 (en) | Support Device and Support Program | |
CN100489768C (zh) | 用于引导计算机系统的方法和装置 | |
JP4821717B2 (ja) | プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム | |
US7757205B2 (en) | System for preparing a standard framework for automation appliances | |
CN113608491B (zh) | 一种编译延时逻辑原理图到字节码方法 | |
CN100357890C (zh) | 封装的硬件配置/控制 | |
TWI640869B (zh) | 配置一積體電路無線電通訊裝置的方法及積體電路無線電通訊裝置 | |
CN1476200A (zh) | 自动维护系统及其自动维护通信设备的方法 | |
GB2579072A (en) | Computer implemented method | |
ES2220847T3 (es) | Procedimiento y dispositivo para la insercion de variables en el flujo del programa de una instalacion de procesamiento de datos. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080716 Termination date: 20210110 |