技术领域
[0001] 本技术涉及用于辅助由安全控制器执行的安全程序的开发的程序开发辅助装置、程序开发辅助程序以及程序开发辅助方法。
相关背景技术
[0002] 为了安全地使用在许多制造现场使用的机器,必须使用符合国际标准的安全设备(安全组件)。该安全设备的目的在于防止机器人等自动工作的装置威胁人的安全。这样的安全设备以执行安全程序的安全控制器为代表,包含检测人的存在或侵入的检测设备、受理紧急时的操作的输入设备、以及实际停止设备的输出设备等。
[0003] 与这样的安全程序的开发相关联地,在日本特开2015-018553号公报中公开了如下结构:关于加工工厂中的控制系统以及安全系统,使用能够容易地集成到功能块图表编程环境的1个以上的状态机功能块。
[0004] 当评价包含安全控制器在内的系统整体的功能安全时,表示安全程序的内容的文档非常重要。特别地,当将在个人计算机上等生成的安全程序传送给安全控制器之后,有时还进行直接变更在该安全控制器上执行的安全程序以及各种设定的操作(典型地,称为“在线编辑”等。),从而也可能产生无法获得与个人计算机上的安全程序的匹配性的情况。此外,输出的文档本身也可能被篡改。因此,在功能安全的评价中,文档的处理特别需要慎重。
[0005] 在上述日本特开2015-018553号公报中仅公开了:通过打印矩阵的表现来容易地将状态机器功能块(SMFB)所构成的功能文档化,但未考虑上述那样的课题。
[0006] 这样,期望用于使与由安全控制器执行的安全程序相关的文档的处理严格化的结构。
具体实施方式
[0021] 参照附图对本发明的实施方式进行详细说明。另外,对图中的相同或者对应部分赋予相同标号并不再重复其说明。
[0023] 首先,参照图1,说明与由本实施方式的安全控制器执行的安全程序相关的文档管理的概要。
[0024] 作为一例,参照图1,设想包含程序开发辅助装置(以下,也简称为“辅助装置”。)100以及安全控制器200在内的安全系统1。辅助装置100是用于辅助由安全控制器200执行的安全程序的开发的装置。
[0025] 在这样的安全系统1中,用户使用辅助装置100对安全程序300A进行开发(生成、调试等)((1)开发)。一旦开发完成,则用户将通过辅助装置100生成的安全程序300A传送到安全控制器((2)传送)。在安全控制器200中,执行传送的安全程序((3)执行安全程序)。另外,在从辅助装置100向安全控制器200传送时,由辅助装置100生成的安全程序的源代码有时也被转换为执行形式(例如,对象形式)等。
[0026] 对于传送到该安全控制器200并处于执行中的安全程序300A,经由辅助装置100生成文档310A。作为文档的生成,例如设想通过打印机而作为打印物而输出的方式、或作为PDF(Portable Data Format:便携式数据格式)等电子文档而输出的方式。
[0027] 此后,在辅助装置100上对安全程序300A添加变更((4)变更),生成另一安全程序300B。对于该安全程序300B,也能够经由辅助装置100生成文档310B。
[0028] 原本,对于由安全控制器200执行的安全程序,需要评价功能安全。但是,从评价的方便性/客观性等观点考虑,对于辅助装置100上的安全程序,在确认了与由安全控制器200执行的安全程序相同后,根据从该辅助装置100输出的文档,评价功能安全。
[0029] 另一方面,还能够进行如下这样的有意的页面篡改:将基于由辅助装置100生成的安全程序300A而输出的文档310A的一部分页面替换为基于变更后的安全程序300B而输出的文档310B的对应的页面。或者,可能错误地成为两种文档混合的状态。
[0030] 这样,需要防止文档中的一部分页面的篡改((A)页面篡改)、或者文档的内容与由安全控制器200执行的安全程序的内容的不一致((B)内容不一致)等问题。
[0031] 因此,本实施方式的辅助装置100提供确保功能安全评价的可靠性的功能。更具体而言,对基于安全程序300生成的文档310,赋予根据该安全程序300的数据而计算的识别值。
[0032] 图2A、图2B以及图3示出从本实施方式的辅助装置100输出的文档的一例。参照图2A,在基于安全程序300A而输出的文档310A中,使用功能块对安全程序300A中包含的逻辑进行了定义。对文档310A还赋予“#AAC7”作为签名代码。
[0033] 另一方面,在图2B所示的文档310B中,使用功能块对安全程序300B中包含的逻辑进行了定义。作为一例,对安全程序300A的功能块312A的“S_AutoReset”(标号313A)设定“FALSE”,另一方面,对安全程序300B的功能块312B的“S_AutoReset”(标号313A)设定“TRUE”。此时,对文档310B赋予“#DAX1”作为签名代码。这样,即使是安全程序的极小一部分的变更,赋予的签名代码的值也大幅度变化。
[0034] 对本实施方式的辅助装置100输出的文档,赋予根据对应的安全程序的数据(代码)而不规则地计算的识别值、即签名代码。对与对应的安全程序相关联的整个文档一致地赋予该签名代码。
[0035] 因此,例如,如图3所示,即使基于某个安全程序生成的文档、与基于另一安全程序生成的文档万一混合,也能够可靠地确定哪个页面的文档是基于不同的安全程序生成的文档。
[0036] 辅助装置100具有按照相对于输入计算不规则的值的函数,计算与开发的安全程序的数据对应的识别值的功能,并且具有输出与安全程序相关的文档的功能。而且,在该进行输出的功能中,将计算的识别值作为签名代码,赋予给文档的与安全程序相关的全部页面。
[0037] 作为在本实施方式中使用的识别值,如上所述,优选如下那样的值:通过对安全程序的略微的变更,该值不规则且无关联地发生变化。例如,能够使用按照规定的生成多项式而计算的CRC(Cyclic Redundancy Check:循环冗余校验)码、依次排列多维的奇偶校验码而得的数据列等。或者,能够采用使用单向哈希函数等而计算的哈希值。
[0038]
[0039] 接下来,对本实施方式的具有文档输出功能的辅助装置100的结构进行概略说明。图4示出本实施方式的辅助装置100的结构例。
[0040] 图4所示的本实施方式的辅助装置100典型地,可以通过将所需的软件安装到通用计算机上并执行来实现。
[0041] 具体而言,辅助装置100包含如下的主要组件:执行后述的程序的处理器102;提供作业区域的主存储器104,该作业区域用于存储处理器102中的程序执行所需的数据;键盘或鼠标等受理用户操作的输入部106;显示器、各种指示器、打印机等输出处理结果的输出部108;用于与外部网络进行通信的网络接口(I/F:interface)110;光驱112;用于与安全控制器等进行通信的本地通信接口(I/F)116;以及辅助存储装置120。这些组件经由内部总线118等而以能够相互进行数据通信的方式连接。
[0042] 辅助装置100具有光驱112,从作为非暂时性存储计算机可读取的程序的光学记录介质(例如,DVD(Digital Versatile Disc:数字多功能光盘)等)的、计算机可读取的记录介质114中,读取各种程序并安装于辅助存储装置120等。本实施方式的文档输出功能可以作为开发环境程序的一部分而提供,该开发环境程序提供对安全控制器的设定、编程、调试等功能。
[0043] 由辅助装置100执行的各种程序可以经由计算机可读取的记录介质114进行安装,但也可以按照从网络上的服务器装置等下载的形式进行安装。此外,与本实施方式的文档输出功能相关的程序有时也以利用OS提供的模块的一部分的形式来实现。在这样的情况下,并非分配实现本实施方式的文档输出功能所需的全部软件模块,而仅分配其一部分。即使在这样的情况下,也可知包含于本发明的技术范围内。此外,与本实施方式的文档输出功能相关的处理也可以作为其他的程序或者软件的一部分来进行安装。
[0044] 辅助存储装置120例如由HDD(Hard Disk Drive:硬盘驱动器)或SSD(Flash Solid State Drive:闪存固态驱动器)等构成,非易失地存储由处理器102执行的程序和各种数据。具体而言,辅助存储装置120包含:执行模块生成程序122,其用于根据安全程序(源程序),生成能够由安全控制器执行的代码(执行模块);用于安全程序的生成/编辑的编辑器程序124;以及验证/输出程序126,其执行与本实施方式的文档输出相关的处理。辅助存储装置120还保存安全程序300的源代码以及结构数据308。
[0045] 在图4中,通用计算机执行程序,由此,实现本实施方式的文档输出功能,但也可以替代这样的结构,而通过硬连线电路安装其全部或者一部分。例如,也可以使用ASIC(Application Specific Integrated Circuit:专用集成电路)或FPGA(Field-Programmable Gate Array:现场可编程门阵列)来安装通过由处理器102执行上述各种程序而提供的功能。
[0046]
[0047] 接下来,对在本实施方式的文档输出功能中使用的签名代码的生成处理进行说明。
[0048] 作为在本实施方式的文档输出功能中使用的签名代码的生成方法,只要是相对于输入计算不规则的值的函数,则能够采用任意的算法。如上所述,例如可列举使用预先确定的生成多项式而计算的CRC码、使用单向哈希函数而计算的哈希值等。
[0049] 在本实施方式中,输出根据预先确定的生成多项式而计算的CRC码,作为识别值。CRC码由于也用于数据传送等其他的用途,因此,大多情况下已编入有逻辑,具有如下优点:
在安装本实施方式的签名代码时,追加的逻辑的代码量较少即可。
[0050] 另外,在本说明书中,“函数”不限于每次相对于输入值计算对应的输出值的计算式,也能够包含使用表的结构,该表预先规定了输入值与输出值之间的对应关系。
[0051] 由安全控制器执行的安全程序有时也通过多个源代码以及结构数据(设定值组)的组合来构成。另一方面,赋予给文档的签名代码至少为1个即可。因此,遵循如下2阶段的签名代码的生成步骤:针对数据的集合分别生成签名代码,然后根据多个签名代码生成最终的签名代码。另外,有时也将多个源代码以及所需的结构数据(设定值组)的组合整体称为“项目”。
[0052] 参照图5,对在本实施方式的文档输出功能中使用的签名代码的生成处理进行说明。图5所示的签名代码生成逻辑150典型地,通过由辅助装置100的处理器102执行验证/输出程序126(图4)而实现。
[0053] 安全程序300是由安全控制器200执行的用户程序,能够包含用于实现功能安全的逻辑、以及用于实现除此以外的功能的逻辑。以下,将前者的逻辑称为“功能安全部”,将后者的逻辑总称为“非功能安全部”。
[0054] 功能安全部响应于来自用户程序中的安全组件的输入信号,执行预先确定的逻辑,并且根据该逻辑的执行结果,激活作为对象的安全组件,使装置紧急停止。非功能安全部例如响应于某些输入信号,接通装置的开关,或者根据目的来驱动装置。
[0055] 结构数据308包含由安全控制器执行安全程序所需的设定信息,例如包含I/O单元的配置结构、网络设定、针对I/O单元的器件分配、针对分配给I/O单元的信号的在程序内使用的变量的分配等。
[0056] 在第1阶段,通过签名代码生成逻辑150,分别根据4个数据集合(功能安全部302、功能安全部304、非功能安全部306、结构数据308),生成4个签名代码(功能安全部1签名代码322、功能安全部2签名代码324、非功能安全部签名代码326、结构数据签名代码328)。在图5所示的例子中,由于CRC码被用作签名代码,因此签名代码生成逻辑150参照预先准备的CRC表152,生成各个签名代码。
[0057] 而且,由于生成4个签名代码,因此,签名代码生成逻辑150根据这4个签名代码,生成单一的文档用签名代码314。而且,该生成的文档用签名代码314被赋予给生成的文档。
[0058] 这样,辅助装置100根据通过开发过程生成的多个数据,分别计算签名代码322、324、326、328(第1识别值),并且根据多个签名代码322、324、326、328,计算赋予给文档的签名代码314(第2识别值)。
[0059] 按照上述那样的步骤,经过多个阶段而生成单一的签名代码,由此,能够生成反映了安全程序300(源代码)、以及安全程序300的执行所需的结构数据308的全部数据的签名代码。由此,例如,即使在并非功能安全部、而是结构数据的一部分被变更的情况下,生成的文档用签名代码的值也大幅度变化,因此,能够一眼识别与执行的安全程序相关的文档与先前的文档不同。
[0060]
[0061] 上述那样的安全控制器是一种PLC(Programmable Logic Controller:可编程逻辑控制器),除了上述那样的安全程序之外,还能够执行通常的控制程序。此外,在安全程序中也能够包含图5所示的非功能安全部。另一方面,上述那样的签名代码只要至少仅存在与功能安全的评价关联的部分,则发挥功能。因此,也可以是,并非对输出的整个文档(即,全部页面)赋予签名代码,而是仅对与功能安全相关的部分(即,一部分页面)赋予签名代码。
[0062] 图6示出从本实施方式的辅助装置100输出的文档的另一例。参照图6,文档330由相当于非功能安全部的文档部分332、与相当于功能安全部的文档部分334的组合构成。对相当于功能安全部的文档部分334赋予文档用签名代码314,另一方面,对于相当于非功能安全部的文档部分332,在对应的位置不存在文档用签名代码314。
[0063] 这样,针对构成输出的文档的页面中的、与功能安全相关的页面,辅助装置100对全部该页面赋予所计算的签名代码(识别值)。
[0064] 在与由某个安全控制器执行的安全程序相关的文档的页面数大量存在的情况下等,也考虑了每当变更或者改变程序的一部分时,就对文档的全部页面进行打印会导致效率低的情况。因此,至少对与功能安全相关的页面赋予签名代码,防止页面篡改等,另一方面,针对除此以外的页面,允许事后的页面替换等,实现了功能安全与经济性/合理性的确保。
[0065] 在采用仅对相当于功能安全部的文档部分334赋予签名代码的结构的情况下,优选从签名代码的计算对象中排除非功能安全部的数据。即,赋予给相当于功能安全部的文档部分334的签名代码优选仅根据功能安全部的数据来计算。更具体而言,也可以仅根据图5所示的功能安全部1签名代码322以及功能安全部2签名代码324,生成单一的文档用签名代码314。通过采用这样的结构,即使进行了对非功能安全部的编辑操作等,如果没有针对功能安全部的变更,则维持同一签名代码,因此,处理变得容易。
[0066] 另外,关于将输出的文档中的任意部分视作功能安全部、还是视作作为除此以外的部分的非功能安全部的判断基准,能够预先进行设定。一般情况下,优选将如下等设为功能安全部:取得来自与功能安全相关的安全组件的输入信号的处理、对该取得的输入信号执行的逻辑、以及反映该逻辑的结果而将指令输出到安全组件的处理。
[0067] 另一方面,优选将附加的处理、例如用于收集错误日志的处理等视作非功能安全部。
[0068]
[0069] 接下来,对作为辅助装置100的文档输出源的安全程序的验证功能进行说明。如参照图1说明的那样,如果从辅助装置100输出的文档的内容、与由安全控制器200执行的安全程序的内容不一致,则无法根据文档评价功能安全。因此,在本实施方式的辅助装置100中,具有以下示出的、与安全控制器200之间验证安全程序的同一性的功能。
[0070] 图7是示出本实施方式的辅助装置100中的验证功能的处理步骤的序列图。参照图7,首先,用户在辅助装置100上开发安全程序(步骤S10)。开发的安全程序被传送到安全控制器200(步骤S12)。此时,源程序可以在被转换为能够执行的形式后,被传送到安全控制器
200。
[0071] 用户使用辅助装置100,对在安全控制器200上执行的安全程序进行调试(步骤S14)。在向安全控制器200传送前,在辅助装置100上进行对安全程序的调试,但由于也存在当现实地执行安全程序时最初不明确的不良情况,因此,在向安全控制器200传送安全程序后,进行调试。也可以将该调试的内容自动地反映于辅助装置100所保存的安全程序以及结构数据(设定值组)。
[0072] 在调试完成后,用户在确认到辅助装置100所保存的安全程序、与由安全控制器200执行的安全程序的同一性的基础上,指示文档输出(步骤S16)。作为确认该同一性的项目,是安全程序的属性、单元结构、网络结构、通信项目、任务设定、变量设定等。
[0073] 于是,辅助装置100根据当前的安全程序以及关联的结构数据等,生成签名代码(步骤S18)。在安全控制器200中,也并行地生成签名代码(步骤S20)。这些签名代码的生成采用了共同的逻辑。而且,安全控制器200将生成的签名代码(安全控制器)发送到辅助装置100(步骤S22)。
[0074] 辅助装置100对辅助装置100生成的签名代码(辅助装置)、与从安全控制器200接收到的签名代码(安全控制器)进行比较,评价其同一性(步骤S24)。仅在两签名代码相同的情况下,输出赋予了该签名代码的文档(步骤S26)。
[0075] 这样,辅助装置100可以将以下情况作为条件,输出文档,上述情况是指:根据在辅助装置100中保存的安全程序计算的签名代码(识别值)、与根据由安全控制器200执行的安全程序计算的签名代码(识别值)相同。
[0076] 在图7中例示出了分别通过辅助装置100以及安全控制器200生成签名代码的结构,但不限于此,可以采用各种方法。例如,也可以从安全控制器200对辅助装置100传送执行中的安全程序,通过辅助装置100生成针对来自该安全控制器200的安全程序的签名代码。或者,也可以是,比较安全程序的代码本身,仅在两者一致的情况下,生成签名代码。
[0077] 这样,可以在将以下情况作为条件的基础上,输出赋予了签名代码的文档,上述情况是指:维持输出文档的辅助装置100所保存的安全程序、与由安全控制器200执行的安全程序的同一性。
[0078] 另外,也可以是,虽然在验证安全程序的同一性之前输出文档,但不赋予签名代码。在该情况下,对于未赋予签名代码的文档,无法在功能安全的验证中使用。通过这样的一系列的处理,能够确保从辅助装置100输出的文档、与由安全控制器200执行的安全程序的同一性。
[0079]
[0080] 本实施方式的辅助装置100对输出的文档的与安全程序相关的全部页面,赋予用于确保该安全程序的同一性的识别值即签名代码,因此,能够容易地发现一部分页面的替换这样的篡改等,能够使与由安全控制器执行的安全程序相关的文档的处理严格化。
[0081] 此外,本实施方式的辅助装置100也能够至少仅对文档的与功能安全相关的页面赋予签名代码,对除此以外的页面不赋予签名代码。通过采用这样的仅对必要的页面赋予签名代码的结构,在对安全程序进行略微的修正或变更等时,能够避免再次输出整个文档这样的效率低的作业。
[0082] 对本发明的实施方式进行了说明,但应当认为此次公开的实施方式在所有方面都是例示性的而非限制性的。本发明的范围由权利要求书表示,旨在包含与权利要求书等同的意思以及范围内的全部变更。