一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

程序开发装置、工程制作方法以及用于实现程序开发装置的程序与流程

2022-03-26 06:06:54 来源:中国专利 TAG:


1.本发明涉及一种程序开发装置、工程(project)制作方法以及用于实现程序开发装置的程序。


背景技术:

2.伴随着构成工厂自动化(factory automation,fa)的基础的可编程逻辑控制器(programmable logic controller,plc)等控制装置的高功能化,被称作用户程序的应用程序也大规模化。随着程序的大规模化,也有想要提高程序的设计效率以及再利用性的需求。
3.在控制装置中执行的用户程序包含对在现场装置群之间交换的输入/输出信号(io(input output)信号)进行参照的命令,因此在再利用时,必须对用于参照io信号的命令等进行适当修正。而且,对于在程序间参照的变量等,也必须进行适当修正。
4.例如,日本专利特开平04-205355号公报(专利文献1)公开了一种技术:尽管并非面向控制装置,但对针对源程序中的共用变量的变量使用限制信息进行分析,并保存所述限制信息,一边参照所述保存的限制信息,一边检查源程序中的变量的使用,由此,在源程序的阶段发现对共用变量的误使用。
5.现有技术文献
6.专利文献
7.专利文献1:日本专利特开平04-205355号公报


技术实现要素:

8.发明所要解决的问题
9.所述专利文献1所公开的技术不过是着眼于在源程序中使用的共用变量,无法达成在plc等控制装置中提高程序的设计效率以及再利用性这一目的。
10.本发明的一个目的在于提供一种新的结构,能够提高在控制装置中执行的程序的设计效率以及再利用性。
11.解决问题的技术手段
12.根据本发明的一实施方式,提供一种程序开发装置,所述程序开发装置用于提供在控制装置中执行的用户程序的开发环境。程序开发装置包括:存储部,保持包含一个或多个程序模块的工程;以及更新部件,向工程中导入一个或多个程序模块。程序模块各自包含程序,并且能够定义第一变量、第二变量与第三变量,所述第一变量是能够在工程中所含的所有的程序模块间参照的变量,所述第二变量是能够在工程中所含的多个程序模块间参照的变量,所述第三变量是在各程序模块中参照的变量。更新部件构成为,维持在所导入的程序模块中所含的第一变量的变量名,并且在所导入的程序模块中所含的第二变量的变量名与工程的任一个程序模块中所含的第二变量的变量名重复的情况下,受理所述重复的变量
名的变更。
13.根据此结构,在向现有的工程中导入一个或多个程序模块的情况下,对于所述导入的程序模块中所含的第一变量就此维持,并且对于第二变量变更变量名以免重复,因此能够提高程序的设计效率以及再利用性。
14.也可为,更新部件在所导入的程序模块中所含的第二变量的变量名重复的情况下,将所述重复的第二变量提示给用户。根据此结构,用户能够容易地理解必须变更哪个变量的变量名。
15.也可为,更新部件在所导入的程序模块中所含的第二变量的变量名重复的情况下,按照预先规定的命名规则来变更所述重复的第二变量。根据此结构,即便用户不手动变更变量名,也能自动变更为不会重复的变量名。
16.也可为,更新部件进而构成为,在所导入的程序模块中所含的程序的名称与工程的任一个程序模块中所含的程序的名称重复的情况下,受理所述重复的程序的名称的变更。根据此结构,在向现有的工程中导入一个或多个程序模块的情况下,对所述导入的程序模块中所含的程序的名称进行变更以免重复,因此能够提高程序的设计效率以及再利用性。
17.也可为,更新部件在所导入的程序模块中所含的程序的名称重复的情况下,将所述重复的程序的名称提示给用户。根据此结构,用户能够容易地理解必须变更哪个程序的名称。
18.也可为,更新部件在所导入的程序模块中所含的程序的名称重复的情况下,按照预先规定的命名规则来变更所述重复的程序的名称。根据此结构,即便用户不手动变更程序的名称,也能自动变更为不会重复的变量名。
19.也可为,以存在调用关系的多个程序模块为单位来进行导入。根据此结构,能够提高增设设备等情况下的设计效率。
20.也可为,程序模块各自能够包含相关联的输入/输出单元的定义。也可为,更新部件进而构成为,在所导入的程序模块中所含的输入/输出单元的定义与工程的任一个程序模块中所含的输入/输出单元的定义重复的情况下,受理所述重复的输入/输出单元的定义的变更。根据此结构,能够适当地将输入/输出单元关联至各程序模块,而不会使输入/输出单元的定义重复。
21.根据本发明的另一实施方式,提供一种工程制作方法,用于制作包含在控制装置中执行的用户程序的工程。工程制作方法包括保持包含一个或多个程序模块的工程的步骤。程序模块各自包含程序,并且能够定义第一变量、第二变量与第三变量,所述第一变量是能够在工程中所含的所有的程序模块间参照的变量,所述第二变量是能够在工程中所含的多个程序模块间参照的变量,所述第三变量是在各程序模块中参照的变量。工程制作方法还包括下述步骤:在工程中受理一个或多个程序模块的导入;维持所导入的程序模块中所含的第一变量的变量名;以及在所导入的程序模块中所含的第二变量的变量名与工程的任一个程序模块中所含的第二变量的变量名重复的情况下,受理所述重复的变量名的变更。
22.根据本发明的又一实施方式,提供一种用于实现程序开发装置的程序,所述程序开发装置用于提供在控制装置中执行的用户程序的开发环境。程序使计算机执行保持包含
一个或多个程序模块的工程的步骤。程序模块各自包含程序,并且能够定义第一变量、第二变量与第三变量,所述第一变量是能够在工程中所含的所有的程序模块间参照的变量,所述第二变量是能够在工程中所含的多个程序模块间参照的变量,所述第三变量是在各程序模块中参照的变量。程序使计算机执行下述步骤:在工程中受理一个或多个程序模块的导入;维持所导入的程序模块中所含的第一变量的变量名;以及在所导入的程序模块中所含的第二变量的变量名与工程的任一个程序模块中所含的第二变量的变量名重复的情况下,受理所述重复的变量名的变更。
23.发明的效果
24.根据本发明,能够提高在控制装置中执行的程序的设计效率以及再利用性。
附图说明
25.图1是用于说明依据本实施方式的包含用户程序的工程的制作方法的概要的图。
26.图2是表示依据本实施方式的控制系统的整体结构例的示意图。
27.图3是表示依据本实施方式的构成控制系统的控制装置的硬件结构例的框图。
28.图4是表示依据本实施方式的构成控制系统的程序开发装置的硬件结构例的框图。
29.图5是用于说明依据本实施方式的用于说明模块化编程的设备的一例的图。
30.图6是表示用于实现图5所示的组装设备的模块化编程的一例的图。
31.图7是表示依据本实施方式的在模块化编程中所制作的工程50的数据结构的一例的示意图。
32.图8是表示图6以及图7所示的模块化编程的具体设计例的示意图。
33.图9是表示依据本实施方式的模块化编程中的导出以及导入的处理流程的流程图。
34.图10是表示依据本实施方式的在模块化编程中所导出的程序模块的数据例的图。
35.图11是表示依据本实施方式的在模块化编程中所导出的程序模块的数据例的图。
36.图12是表示对图8所示的工程导入同一装置模块时的流程例的图。
37.图13是表示对图8所示的工程导入新的装置模块时的流程例的图。
38.图14是表示依据本实施方式的模块化编程中的导入适应处理的处理流程的流程图。
39.图15是表示依据本实施方式的模块化编程中的、表示io单元定义54的重复有无的设定画面的一例的图。
40.图16是表示依据本实施方式的模块化编程中的、用于进行所导入的模块的选择及变更的设定画面的一例的图。
41.图17是表示依据本实施方式的模块化编程中的、用于进行所导入的程序模块所参照的变量名的选择及变更的设定画面的一例的图。
42.图18是表示依据本实施方式的模块化编程中的、用于说明hmi与控制装置100的关联的操作流程的设定画面的一例的图。
43.图19是表示依据本实施方式的模块化编程中的、用于说明hmi与控制装置100的关联的操作流程的设定画面的另一例的图。
44.图20是表示依据本实施方式的模块化编程中的、从hmi导出的交叉引用(cross reference)的一例的图。
45.图21是表示依据本实施方式的程序开发装置中所提供的命名规则的设定画面的一例的示意图。
具体实施方式
46.一边参照附图,一边详细说明本发明的实施方式。另外,对于图中的相同或相当的部分,标注相同的符号并不再重复其说明。
47.<a.适用例>
48.首先,对适用本发明的场景的一例进行说明。
49.图1是用于说明依据本实施方式的包含用户程序的工程的制作方法的概要的图。参照图1,工程50包含在plc等控制装置100中执行的用户程序。更具体而言,工程50包含程序560~563作为用户程序。程序560~563分别被模块化为程序模块70~73。
50.程序模块70~73除了程序560~563以外,还包含共用变量52、模块间接口(interface,i/f)60以及局部变量58来作为要素。
51.共用变量52是可在工程50中所含的所有的程序模块间参照的变量(相当于第一变量)。模块间i/f60局部变量58是可在工程50中所含的多个程序模块间参照的变量(相当于第二变量)。局部变量58是在各程序模块中参照的变量(相当于第三变量)。
52.在各个程序模块70~73中,能够定义与所需相应的类型的变量。
53.图1所示的示例中,在程序模块70~73中,分别定义有共用变量520、局部变量580~583以及全局变量600~603。
54.设想对图1所示的工程50导入(追加)程序模块71~73的情况。此时,所导入的程序模块71~73中,也参照在现有的工程50中所定义的共用变量520,因此共用变量520的变量名就此维持。由此,包含所导入的程序模块71~73的所有的程序模块能够参照共用变量520。
55.另一方面,对于被定义为模块间i/f60的全局变量601~603,若在工程50内存在相同的变量名,则无法适当地参照,因此适当变更全局变量601~603的变量名,以使变量名不会重复。
56.通过像这样适当处理在所导入的程序模块中定义的变量名,从而能够容易地对工程50导入(追加)程序模块而依次制作工程50。
57.<b.控制系统结构例>
58.接下来,对执行通过依据本实施方式的程序开发装置200而制作的用户程序的控制系统1的结构例进行说明。
59.图2是表示依据本实施方式的控制系统1的整体结构例的示意图。参照图2,控制系统1包含一个或多个控制装置100。
60.控制装置100各自执行用于进行对于控制对象的控制的控制运算,并且执行异常探测处理,所述异常探测处理用于探测在控制对象中所含的监测对象中可能产生的某些异常。控制装置100也可作为plc(可编程控制器)等的一种计算机而具现化。
61.控制装置100经由现场总线2而与现场装置群10连接。进而,控制装置100彼此经由
局域网4而彼此连接。程序开发装置200也有时被连接于控制装置100。
62.作为现场总线2,优选采用进行保证数据到达时间的固定周期通信的网络。作为进行此种固定周期通信的网络,已知有ethercat(注册商标)等。
63.控制装置100对由现场装置群10所获取并传输至控制装置100的数据(以下也称作“输入值”)进行收集。现场装置群10包含收集控制对象或者跟控制相关的制造装置或生产线等(以下也总称作“现场”)的状态值来作为输入值的装置。
64.本说明书中,“状态值”这一术语包含能够在任意的控制对象(包含:监测对象)中观测到的值,例如可包含能够通过任意的传感器来测定的物理值、继电器或开关等的通/断状态、plc对伺服驱动器给予的位置、速度、扭矩等的指令值或者plc用于运算的变量值等。
65.作为收集此类状态值的装置,设想输入继电器或各种传感器等。现场装置群10进而包含基于由控制装置100所生成的指令值(以下也称作“输出值”)来对现场给予某些作用的装置。作为此种对现场给予某些作用的装置,可设想输出继电器、接触器、伺服驱动器及伺服马达、其他的任意的致动器。这些现场装置群10经由现场总线2而与控制装置100之间交换包含输入值及输出值的数据。
66.图2所示的结构例中,现场装置群10包含远程输入/输出(input/output,io)装置12、继电器群14、图像传感器18及摄像机20与伺服驱动器22及伺服马达24。
67.远程io装置12包含:经由现场总线2来进行通信的通信部、以及用于进行输入值的收集及输出值的输出的输入/输出部(以下也称作“io单元”)。经由此种io单元而在控制装置100与现场之间交换输入值以及输出值。图2中表示了经由继电器群14来交换作为输入值以及输出值的数字信号的示例。
68.io单元也可直接连接于现场总线。图2中表示io单元16直接连接于现场总线2的示例。
69.图像传感器18对于由摄像机20所拍摄的图像数据进行图案匹配等的图像测量处理,并将其处理结果发送至控制装置100。
70.伺服驱动器22根据来自控制装置100的输出值(例如位置指令等)来驱动伺服马达24。
71.程序开发装置200提供在控制装置100中执行的用户程序的开发环境。用户操作程序开发装置200来制作在控制装置100中执行的用户程序。具体而言,程序开发装置200提供在控制装置100中执行的用户程序的开发环境(程序制作编辑工具、分析器、编译器等)、用于决定控制装置100及连接于控制装置100的各种设备的设定参数(配置)的功能、将所制作的用户程序发送至控制装置100的功能、在线对在控制装置100上执行的用户程序等进行修正/变更的功能等。
72.<c.硬件结构例>
73.接下来,对依据本实施方式的构成控制系统1的控制装置100以及程序开发装置200的硬件结构例进行说明。
74.(c1:控制装置100的硬件结构例)
75.图3是表示依据本实施方式的构成控制系统1的控制装置100的硬件结构例的框图。参照图3,控制装置100包含中央处理器(central processing unit,cpu)或微处理器(micro processing unit,mpu)等的处理器102、芯片组104、主存储装置106、二次存储装置
108、局域网控制器110、通用串行总线(universal serial bus,usb)控制器112、存储卡接口114、现场总线控制器120、内部总线控制器122以及io单元124-1、124-2、


76.处理器102读出保存在二次存储装置108中的各种程序并在主存储装置106中展开而执行,由此,实现与控制对象相应的控制以及如后所述的各种处理。芯片组104与处理器102一同控制各组件,由此来实现作为控制装置100整体的处理。
77.在二次存储装置108中,除了未图示的系统程序以外,还保存有在程序开发装置200中制作的执行格式的用户程序126(相当于控制程序)。
78.局域网控制器110对经由局域网4的、与其他装置之间的数据交换进行控制。usb控制器112对经由usb连接的、与程序开发装置200之间的数据交换进行控制。
79.存储卡接口114是可装卸存储卡116地构成,可对存储卡116写入数据,并从存储卡116读出各种数据(用户程序或跟踪数据等)。
80.现场总线控制器120对经由现场总线2的、与其他装置之间的数据交换进行控制。内部总线控制器122是与搭载于控制装置100的io单元124-1、124-2、

之间交换数据的接口。
81.图3中表示了通过处理器102执行程序代码来提供所需的功能的结构例,但这些提供的功能的一部分或全部也可使用专用的硬件电路(例如专用集成电路(application specific integrated circuit,asic)或现场可编程门阵列(field programmable gate array,fpga)等)来实现。或者,也可使用遵循通用架构的硬件(例如将通用个人计算机作为基础的工业个人计算机)来实现控制装置100的主要部分。
82.(c2:程序开发装置200的硬件结构例)
83.图4是表示依据本实施方式的构成控制系统1的程序开发装置200的硬件结构例的框图。作为一例,程序开发装置200也可通过使用遵循通用架构的硬件(例如通用个人计算机)来执行程序而实现。
84.参照图4,程序开发装置200包含cpu或mpu等的处理器202、驱动器204、主存储装置206、二次存储装置208、usb控制器212、局域网控制器214、输入部216以及显示部218。这些组件经由总线220而连接。
85.处理器202读出保存在二次存储装置208中的各种程序,并在主存储装置206中展开而执行,由此来实现如后所述的各种处理。
86.二次存储装置208例如包含硬盘驱动器(hard disk drive,hdd)或固态硬盘(solid state drive,ssd)等。在二次存储装置208中,保存有用于实现如后所述的各种功能的开发工具250。在二次存储装置208中,也可保存有操作系统(operating system,os)以及其他的所需的系统程序。二次存储装置208保持包含一个或多个程序模块的工程50。关于工程50以及工程50中所含的程序模块的详细将后述。
87.驱动器204能够对存储介质205写入数据,并从存储介质205读出各种数据(用户程序以及各种数据)。存储介质205例如包含非一次性地保存计算机可读取的程序的存储介质205(例如数字多功能光盘(digital versatile disc,dvd)等的光学存储介质)。
88.在程序开发装置200中执行的开发工具250也可经由计算机可读取的存储介质205来安装,但也可以从网络上的服务器装置等下载的形式来安装。而且,依据本实施方式的程序开发装置200所提供的功能也有时以使用os所提供的模块的一部分的形式来实现。
89.usb控制器212对经由usb连接的、与控制装置100之间的数据交换进行控制。局域网控制器214对经由任意网络的、与其他装置之间的数据交换进行控制。
90.输入部216包含键盘或鼠标等,受理用户操作。显示部218包含显示器、各种指示器等,输出来自处理器202的处理结果等。在程序开发装置200,也可连接有打印机。
91.图4中表示了通过处理器202执行程序代码来提供所需的功能的结构例,但这些提供的功能的一部分或全部也可使用专用的硬件电路(例如asic或fpga等)来实现。
92.<d.模块化编程>
93.接下来,对依据本实施方式的模块化编程进行概括。
94.(d1:工程结构)
95.图5是用于说明依据本实施方式的用于说明模块化编程的设备的一例的图。图5中表示将螺丝42组装至工件43的组装设备40的一例。组装设备40包含组装工序47以及搬送工序48。
96.组装工序47中,机器人41拾取(例如吸附)螺丝42,移动至工件43后,将螺丝42组装至工件43的螺丝孔44内。
97.搬送工序48中,机器人45拾取(例如握持)组装好螺丝42后的工件43,移动到规定位置后,放置所拾取的工件43。这样,组装设备40包含分别控制机器人41以及机器人45的组装工序47以及搬送工序48。
98.图6是表示用于实现图5所示的组装设备40的模块化编程的一例的图。参照图6,通过模块化编程而制作的工程50包含用于对组装设备40的整体进行控制的组装设备模块(设备(machine))80。组装设备模块80调用与组装工序47以及搬送工序48分别对应的装配模块(螺丝(screw))81以及搬送模块(pnp)82。装配模块81以及搬送模块82分别面向对应的装置的控制,也被称作装置模块。
99.而且,如上所述的模块间的调用关系也被称作“母子关系”等。从母模块调用的子模块被称作“程序组织单元(program organization units,pou)”。即,具有母模块的子模块均可能成为pou。
100.进而,装配模块81调用用于对组装工序47中的机器人41以及相关设备的行为进行控制的螺丝拾取模块(拾取螺丝(pickscrew))83以及螺丝安装模块(拧螺丝(screwing))84。
101.同样地,搬送模块82调用用于对搬送工序48中的机器人45以及相关设备的行为进行控制的拾取模块(拾取(pick))85以及放置模块(放置(place))86。
102.进而,负责工序最初的处理的螺丝拾取模块83与负责工序最后的处理的放置模块86彼此联动地控制组装设备40整体的处理循环。
103.在依据本实施方式的模块化编程中,其目的在于,以设备为单位、以设备中所含的装置为单位、或者以装置中所含的工序为单位来零件化,以提高程序的设计效率以及再利用性。
104.图7是表示依据本实施方式的模块化编程中所制作的工程50的数据结构的一例的示意图。参照图7,工程50包含一个或多个程序模块70~76。各程序模块包含共用变量52、io单元定义54、程序56及局部变量58、模块间i/f60以及人机接口(human machine interface,hmi)62来作为要素。即,各程序模块不仅将程序,还将程序的执行所需的要素封
装化。
105.例如,图7所示的程序模块70~76分别对应于组装设备模块80、装配模块81、搬送模块82、螺丝拾取模块83、螺丝安装模块84、拾取模块85以及放置模块86。
106.共用变量52对可在工程50中所含的所有的程序模块间参照的变量进行定义。图7所示的示例中,作为共用变量52,定义有共用变量520。共用变量520是对工程50所定义的变量。例如,作为共用变量520,包含表示紧急停止的变量或表示异常的变量等。以下,表示下述示例,即,将表示紧急停止的“estop”这一在各工序中共同参照的变量设为共用变量520。但并不限于此,也可将“battery low”(电池电量低)、“warning”(警告)、“emergencystop”(紧急停止)、“cycletimeover”(循环时间超时异常)等设为共用变量520。
107.在io单元定义54中,定义有与各程序模块相关联的io单元。即,各程序模块可包含相关联的io单元的定义(io单元定义54)。图7所示的示例中,针对程序模块71~76,分别定义有表示被分配给作为连接目标的io单元的网络上的地址的节点地址541~546,以作为io单元定义54。
108.程序56是指作为各程序模块的主要部分的程序。图7所示的示例中,针对程序模块70~76,分别制作有程序560~566。
109.局部变量58对在对应的程序56中所参照的变量(即,未设想从对应的程序56以外的程序56进行参照的变量)进行定义。图7所示的示例中,针对程序模块70~76,分别定义有局部变量580~586。局部变量也被用作与对应的io单元的数据的接口变量。
110.模块间i/f60对可在工程50中所含的多个程序模块间参照的变量即接口变量进行定义。在模块间i/f60中,也可对可在所有的程序模块间参照的变量进行定义,但此种变量优选被定义为共用变量52,因此基本上是对仅在工程50中所含的一部分程序模块间参照的变量进行定义。图7所示的示例中,针对程序模块70~76,分别定义有全局变量600~606来作为模块间i/f60。图5所示的组装设备40的示例中,在全局变量600~606之间,可能存在图7所示的参照关系(依存关系)。
111.hmi62是指用于受理对应的程序的处理结果或针对程序的用户操作的画面应用。图7所示的示例中,针对程序模块70、71、74,分别制作有页面620、621、625。
112.图8是表示图6以及图7所示的模块化编程的具体设计例的示意图。参照图8,在工程50中,对于程序模块70~76,分别定义有共用变量520、作为模块间i/f60的全局变量600~606、局部变量583~586。
113.(d2:导出以及导入)
114.在依据本实施方式的模块化编程中,能够以程序模块为单位来进行再利用。在此种再利用时,将进行对象程序模块的“导出/导入”或者“复制&粘贴”。即,程序开发装置200具有从工程中导出一个或多个程序模块的提取功能,并且具有向工程中导入一个或多个程序模块的更新功能。这些功能也可通过程序开发装置200的处理器202执行开发工具250而实现。
115.图9是表示依据本实施方式的模块化编程中的导出以及导入的处理流程的流程图。典型的是,图9所示的各步骤是通过程序开发装置200的处理器202执行开发工具250而实现。
116.图9(a)所示的程序模块的导出处理中,用户选择作为对象的导出对象的一个或多
个程序模块(步骤s10)。程序开发装置200对被选择作为导出对象的一个或多个程序模块的依存关系进行可视化而提示给用户(步骤s12)。例如,提示图6所示那样的程序模块的依存关系等。
117.最终,程序开发装置200根据用户的操作,导出被选择作为导出对象的一个或多个程序模块中所含的信息(步骤s14)。所导出的信息包含程序(用户程序)、函数、功能块、变量定义等。然后,处理结束。
118.图9(b)所示的程序模块的导入处理中,用户导入作为对象的一个或多个程序模块(步骤s20)。程序开发装置200基于所导入的一个或多个程序模块的io单元定义54来判断是否可导入(步骤s22)。
119.若判断为不可导入(步骤s22中为否),程序开发装置200将不可导入的消息通知给用户(步骤s24)。然后,处理结束。
120.若判断为可导入(步骤s22中为是),程序开发装置200执行导入适应处理,在变更了作为对象的一个或多个程序模块的内容后(步骤s26),编入至作为导入目标的工程中(步骤s28)。然后,处理结束。
121.图10以及图11是表示依据本实施方式的模块化编程中所导出的程序模块的数据例的图。参照图10,所导出的项目数据160与用于确定模块名162以及各数据的识别符164相关联地包含要素数据166。进而,还关联有表示是否在模块间共享的识别符168。
122.图11中表示所导出的项目数据160中所含的全局变量的定义的一部分。在全局变量的定义中,包含变量名170以及所属的模块名172的定义。
123.<e.导入>
124.接下来,对依据本实施方式的模块化编程的导入以及导入适应处理进行说明。
125.(e1:以程序模块为单位的追加(导入))
126.如图7所示,依据本实施方式的模块化编程中,各程序模块横贯地具有程序与一个或多个io单元(设备)的结构信息(例如io单元定义54中所含的节点地址)。
127.在导出程序模块的情况下,保持io单元的结构信息(例如设备种类、模型、版本信息等)。并且,在导入程序模块的情况下,通过参照对作为导入目标的工程所定义的io单元的结构信息,用户也可决定与哪个io单元对应(参照后述的图15等)。
128.(1)控制装置100的情况
129.判断所导入的模块名的重复有无,若有重复,则变更模块名。而且,判断所导入的io单元定义54的重复有无,若有重复,则设定io单元定义54。
130.对于数据类型、轴、轴群等,将直接导出,但若存在全局变量名的重复,则变更全局变量名。
131.进而,相对于hmi的全局变量的参照关系也进行适当更新。
132.(2)hmi的情况
133.对于hmi,直接导出设备种类、页面、资源、事件、全局子程序(global subroutine)、全局变量等。另外,作为参照目标的控制装置100的名称(控制器名)也进行适当更新。
134.以下,例示下述情况,对于图8所示的工程50,将组装设备模块80作为母模块来导入装置模块。
135.(e2:装置模块的导入之一)
136.图12是表示对图8所示的工程50导入同一装置模块时的流程例的图。更具体而言,图12中表示导入了与装配模块81、从装配模块81调用的螺丝拾取模块83以及螺丝安装模块84相同的模块群(装配模块81a,螺丝拾取模块83a以及螺丝安装模块84a)的示例。
137.这样,也可以存在调用关系的多个程序模块为单位来进行导入。
138.在此种模块群的导入时,执行如下所述的(1)~(4)的处理。
139.(1)所导入的io单元定义54的重复有无的判断
140.io单元定义54在多个程序模块中无法重复地参照,因此判断所导入的模块的io单元定义54的重复有无。具体而言,判断io单元定义54内的节点地址的重复有无。
141.此时,必须变更为所导入的模块所利用的io单元的节点地址。即,将io单元定义54中所含的节点地址设定为正确的值(参照程序模块73a的局部变量583a以及程序模块74a的584a)。
142.(2)所导入的装置模块名的重复有无的判断
143.若所导入的装置模块的模块名与现有的模块名重复,则无法从设备模块(组装设备模块80)适当地参照,因此必须变更所导入的装置模块(装配模块81a)的模块名。模块名的变更既可由用户任意输入,也可依据预先规定的命名规则来进行。
144.图12所示的示例中,装配模块81a的模块名从装配模块81的模块名“螺丝”变更为“螺丝2”。与所述模块名的变更一并地,也变更作为变量的参照源而定义的模块名(程序模块71a、73a、74a的模块名一栏)。
145.(3)所导入的子模块名的重复有无的判断
146.若所导入的子模块名(所调用的模块)与现有的模块名重复,则无法在模块间适当地参照,因此必须变更所导入的子模块(螺丝拾取模块83a以及螺丝安装模块84a)的模块名。模块名的变更既可由用户任意输入,也可依据预先规定的命名规则来进行。
147.图12所示的示例中,螺丝拾取模块83a的模块名由螺丝拾取模块83的模块名“拾取螺丝”变更为“拾取螺丝2”。同样地,螺丝安装模块84a的模块名由螺丝安装模块84的模块名“拧螺丝”变更为“拧螺丝2”。
148.(4)程序模块所参照的变量名的重复有无的判断
149.对于由共用变量52所定义的共用变量,由于在多个程序模块间共同参照,因此不需要变更。这样,共用变量将直接利用对现有的工程50所定义者(即,不导入)。
150.另一方面,对于由模块间i/f60所定义的全局变量(接口变量),由于在程序模块间进行参照,因此必须进行调整以免在工程内重复。若在工程内存在重复,则变更变量名。变量名的变更既可由用户任意输入,也可依据预先规定的命名规则来进行。
151.图12所示的示例中,在程序模块71a的全局变量601a中,在组装设备模块80与装配模块81a之间所参照的全局变量的变量名由“if_设备_螺丝”变更为“if_设备_螺丝2”。同样地,在程序模块73a的全局变量603a中,在螺丝拾取模块83a与放置模块86之间所参照的全局变量的变量名由“if_拾取螺丝_放置”变更为“if_拾取螺丝_放置2”。
152.通过适用如上所述的四个处理,从而能够容易地再利用经模块化的工程的一部分。另外,对于在所导入的程序模块中所参照的共用变量520,直接予以维持(即,不变更定义等)。
153.(e3:模块的导入之二)
154.图13是表示对图8所示的工程50导入新的装置模块时的流程例的图。更具体而言,图13中表示新导入了用于对检查设备的整体进行控制的检查模块(测试机(tester))87的示例。
155.检查模块87包含处理检查模块(工艺测试(processtest))88以作为从检查模块87调用的装置模块。处理检查模块88调用对拍摄工序进行控制的拍摄模块(摄像机(camera))891以及对所拍摄的图像进行评估的评估模块(验证(validate))892。
156.这样,也可以存在调用关系的多个程序模块为单位来进行导入。
157.在此种模块群的导入时,与所述的模块的导入同样地执行如下所述的(1)~(4)的处理。
158.(1)所导入的io单元定义54的重复有无的判断
159.判断所导入的模块的io单元定义54的重复有无。图13所示的示例中,并无io单元定义54的重复,因此直接导入最开始的io单元定义54。
160.(2)所导入的装置模块名的重复有无的判断
161.在导入新的装置模块的情况下,也判断与现有的装置模块的模块名的重复,但在图13所示的示例中,无模块名的重复,因此直接导入最开始的装置模块。
162.与检查模块87对应的程序模块77包含共用变量520以及全局变量607。
163.(3)所导入的子模块名的重复有无的判断
164.判断所导入的子模块(处理检查模块88、拍摄模块891以及评估模块892)的模块名是否与现有的模块名重复。图13所示的示例中,由于无模块名的重复,因此直接导入最开始的模块名。
165.图13所示的示例中,与处理检查模块88对应的程序模块78包含共用变量520以及全局变量608。与拍摄模块891对应的程序模块791包含共用变量520、全局变量6091以及局部变量5891。与评估模块892对应的程序模块792包含共用变量520、全局变量6092以及局部变量5892。
166.(4)程序模块所参照的变量名的重复有无的判断
167.对于由共用变量52所定义的共用变量,由于在多个程序模块间共同参照,因此不需要变更。
168.而且,对于由模块间i/f60所定义的全局变量(接口变量),根据需要来变更变量名以免在工程内重复。变量名的变更既可由用户任意输入,也可依据预先规定的命名规则来进行。
169.另外,对于局部变量,由于仅在对应的程序内使用,因此不需要考虑与其他模块的重复。而且,对于在所导入的程序模块中所参照的共用变量520,直接予以维持(即,不变更定义等)。
170.(e4:导入适应处理的处理流程)
171.接下来说明导入适应处理的处理流程。
172.图14是表示依据本实施方式的模块化编程中的导入适应处理的处理流程的流程图。图14所示的处理流程相当于图9所示的处理流程的步骤s26的详细内容。典型的是,图14所示的各步骤是通过程序开发装置200的处理器202执行开发工具250而实现。
173.参照图14,程序开发装置200判断所导入的io单元定义54的设定内容是否与现有的io单元定义54的设定内容重复(步骤s100)。
174.若所导入的io单元定义54的设定内容与现有的io单元定义54的设定内容重复(若在步骤s100中为是),则程序开发装置200敦促用户进行所导入的io单元定义54的变更(步骤s102)。
175.图15是表示依据本实施方式的模块化编程中的、表示io单元定义54的重复有无的设定画面的一例的图。在图15所示的设定画面350中,对所导入的程序模块中所含的io单元定义54的设定内容352与作为导入目标的工程的io单元定义54的设定内容354进行比较,并显示所述比较结果356。用户将参照比较结果356来适当变更io单元定义54。
176.这样,程序开发装置200在所导入的程序模块中所含的io单元定义54与工程50的任一个程序模块中所含的io单元定义54重复的情况下,受理所述重复的io单元定义54的变更。并且,程序开发装置200在所导入的程序模块中所含的io单元定义54重复的情况下,将所述重复的io单元定义54提示给用户(参照图15)。
177.再次参照图14,当由用户变更了io单元定义54时,程序开发装置200根据经变更的io单元定义54来更新io单元与变量的对应关系(步骤s104)。
178.若所导入的io单元定义54的设定内容与现有的io单元定义54的设定内容不重复(若在步骤s100中为否),则跳过步骤s102以及s104的处理。
179.继而,程序开发装置200判断所导入的装置模块的模块名是否与现有的模块名重复(步骤s106)。
180.若所导入的装置模块的模块名与现有的模块名重复(若在步骤s106中为是),则程序开发装置200敦促用户进行所导入的装置模块的模块名的变更(步骤s108)。
181.若所导入的装置模块的模块名与现有的模块名不重复(若在步骤s106中为否),则跳过步骤s108的处理。
182.继而,程序开发装置200判断所导入的子模块的模块名与现有的模块名是否重复(步骤s110)。
183.若所导入的子模块的模块名与现有的模块名重复(若在步骤s110中为是),则程序开发装置200敦促用户进行所导入的子模块的模块名的变更(步骤s112)。
184.图16是表示依据本实施方式的模块化编程中的、用于进行所导入的模块的选择以及变更的设定画面的一例的图。图16所示的设定画面360中,所导入的模块中的、与现有的工程中所含的模块的模块名重复者进行了强调显示。例如,对于模块名重复的模块,以与其他模块不同的形态予以显示。
185.用户能够容易地识别预定要导入的程序模块中的、必须变更模块名的模块,并能够根据需要来变更模块名。另外,程序开发装置200也能够依据命名规则来变更模块名(详细将后述)。
186.这样,程序开发装置200在所导入的程序模块中所含的程序的名称与工程50的任一个程序模块中所含的程序的名称重复的情况下,受理所述重复的程序的名称的变更。并且,程序开发装置200在所导入的程序模块中所含的程序的名称重复的情况下,将所述重复的程序的名称提示给用户(参照图16)。
187.再次参照图14,若所导入的子模块的模块名与现有的模块名不重复(若在步骤
s110中为否),则跳过步骤s112的处理。
188.继而,程序开发装置200判断所导入的程序模块所参照的变量名是否与现有的变量名重复(步骤s114)。此时,对于在所导入的程序模块中所参照的共用变量520,直接予以维持(即,不变更定义等)。基本上,仅对于被定义为模块间i/f60的全局变量来判断变量名的重复。
189.若所导入的程序模块所参照的变量名与现有的变量名重复(若在步骤s114中为是),则程序开发装置200敦促用户进行所导入的程序模块所参照的变量名的变更(步骤s116)。
190.图17是表示依据本实施方式的模块化编程中的、用于进行所导入的程序模块所参照的变量名的选择以及变更的设定画面的一例的图。图17所示的设定画面370中,用户进行预定要导入的程序模块所参照的变量名的选择以及变更。另外,程序开发装置200也能够依据命名规则来变更变量名(详细将后述)。
191.这样,程序开发装置200在作为所导入的程序模块中所含的模块间i/f60而定义的全局变量的变量名与现有的工程的任一个程序模块中所含的全局变量的变量名重复的情况下,受理所述重复的变量名的变更。并且,程序开发装置200在所导入的程序模块中所含的全局变量的变量名重复的情况下,将所述重复的全局变量提示给用户(参照图17)。
192.再次参照图14,若所导入的程序模块所参照的变量名与现有的变量名不重复(若在步骤s114中为否),则跳过步骤s116的处理。
193.继而,程序开发装置200受理用户对所导入的预定的hmi的选择(步骤s118),敦促用户进行与所导入的hmi相关的设定的确认以及变更(步骤s120)。
194.最终,程序开发装置200保存包含所导入的模块的新的工程(步骤s122),并结束处理。
195.<f.hmi的导入/再利用>
196.接下来,对导入或再利用程序模块中所含的hmi62时的处理进行说明。hmi与作为对象的一个或多个控制装置100连接而运行,因此在再利用hmi的信息时,必须适当设定及变更作为连接目标的控制装置100等。以下,对导入此种hmi时的操作流程等进行说明。
197.图18是表示依据本实施方式的模块化编程中的、用于说明hmi与控制装置100的关联的操作流程的设定画面的一例的图。参照图18,设定画面320是用于设定供hmi执行某些处理的条件即事件的画面。
198.用户在设定画面320中,操作下拉菜单322来选择工程中所含的控制装置100中的作为连接目标的控制装置100。通过所述选择操作,在控制装置100与hmi之间定义关联。
199.图19是表示依据本实施方式的模块化编程中的、用于说明hmi与控制装置100的关联的操作流程的设定画面的另一例的图。参照图19,设定画面324是用于设定由hmi所执行的处理以及相关联的变量等的画面。
200.用户在设定画面324中,对在与作为连接目标的控制装置100之间交换的变量(接口变量)进行设定或变更。图19所示的示例中,将作为控制装置100的接口变量的“new_controller_0_gvar1”关联至由hmi所执行的处理。
201.图20是表示依据本实施方式的模块化编程中的从hmi导出的交叉引用的一例的图。参照图20,程序开发装置200导出交叉引用330,所述交叉引用330提取了对跟与作为连
接目标的控制装置100的接口相关的变量进行了参照的部分。通过导出图20所示的交叉引用330,从而在再利用时,能够容易地确定应变更的变量名等。
202.<g:命名规则>
203.如上所述,在模块名或变量名存在重复的情况下,既可变更为用户任意输入的其他名称,也可依据预先规定的命名规则来自动变更。以下,对命名规则的一例进行说明。
204.作为此种命名规则的一例,也可附加以预先规定的规则而变化的识别符(例如进行增量或减量的数值或者字母等)。具体而言,当将模块名由“螺丝”变更为“螺丝2”,进而导入具备同一模块名“螺丝”的模块时,也可由“螺丝”变更为“螺丝3”。
205.或者,也可附加静态或动态地决定的字符串。例如,也可对变量名附加对应的程序模块的模块名。藉由对变量附加对应的程序模块的模块名,从而模块名限于唯一,而不会产生变量名的重复。
206.而且,也可将识别符或字符串附加在对象字符串的先头(即,作为前缀),还可将识别符或字符串附加在对象字符串之后(即,作为后缀)。
207.图21是表示依据本实施方式的程序开发装置200中所提供的命名规则的设定画面的一例的示意图。参照图21(a),用户在模块名或变量名产生了重复的情况下,可操作设定画面300的下拉菜单302来进行设定,以附加某些附加信息来作为“前缀”或者“后缀”。另外,用户也可选择不附加任何附加信息(“无”的设定)。
208.如图21(b)所示,用户可操作设定画面310的下拉菜单312来进行设定,以附加某些附加信息来作为“前缀”或者“后缀”,并且也可在输入框314中指定字符串来作为附加信息。
209.如图21(c)所示,用户可操作设定画面310的下拉菜单312来进行设定,以附加某些附加信息来作为“前缀”或者“后缀”,并且也可在输入框314中指定“@模块名@”这样的特殊字符串。此时,对应的程序模块的模块名将被自动附加。也可取代“@模块名@”而指定预先规定的字符串。
210.另外,为了方便说明,表示了不区分模块名以及变量名而适用共同的命名规则的示例,但也可按照模块名以及变量名而适用不同的命名规则。
211.如上所述,程序开发装置200在所导入的程序模块中所含的程序的名称与现有的工程中所含的程序的名称重复的情况下,也可按照预先规定的命名规则来变更所述重复的程序的名称。
212.而且,程序开发装置200在作为所导入的程序模块中所含的模块间i/f60而定义的全局变量的变量名与现有的工程的任一个程序模块中所含的全局变量的变量名重复的情况下,也可按照预先规定的命名规则来变更所述重复的变量名。
213.通过采用遵循此种命名规则的模块名或变量名的自动变更,从而在再利用模块时,能够减轻用户的麻烦。其结果,能够提高程序的设计效率以及再利用性。
214.<h.附注>
215.如上所述的本实施方式包含如下所述的技术思想。
216.[结构1]
[0217]
一种程序开发装置(200),用于提供在控制装置(100)中执行的用户程序(50)的开发环境,所述程序开发装置(200)包括:
[0218]
存储部(208),保持包含一个或多个程序模块(70~76)的工程;以及
[0219]
更新部件(202、250),向所述工程中导入一个或多个程序模块,
[0220]
所述程序模块各自包含程序,并且能够定义第一变量(52、520)、第二变量(60、600~606)与第三变量(58、580~586),所述第一变量(52、520)是能够在所述工程中所含的所有的程序模块间参照的变量,所述第二变量(60、600~606)是能够在所述工程中所含的多个程序模块间参照的变量,所述第三变量(58、580~586)是在各程序模块中参照的变量,
[0221]
所述更新部件构成为,维持在所述导入的程序模块中所含的第一变量的变量名,并且在所述导入的程序模块中所含的第二变量的变量名与所述工程的任一个程序模块中所含的第二变量的变量名重复的情况下,受理所述重复的变量名的变更(s114、s116)。
[0222]
[结构2]
[0223]
根据结构1所述的程序开发装置,其中,所述更新部件在所述导入的程序模块中所含的第二变量的变量名重复的情况下,将所述重复的第二变量提示给用户(s116)。
[0224]
[结构3]
[0225]
根据结构1或2所述的程序开发装置,其中,所述更新部件在所述导入的程序模块中所含的第二变量的变量名重复的情况下,按照预先规定的命名规则来变更所述重复的第二变量。
[0226]
[结构4]
[0227]
根据结构1至3中任一项所述的程序开发装置,其中,所述更新部件进而构成为,在所述导入的程序模块中所含的程序的名称与所述工程的任一个程序模块中所含的程序的名称重复的情况下,受理所述重复的程序的名称的变更(s110、s112)。
[0228]
[结构5]
[0229]
根据结构4所述的程序开发装置,其中,所述更新部件在所述导入的程序模块中所含的程序的名称重复的情况下,将所述重复的程序的名称提示给用户(s112)。
[0230]
[结构6]
[0231]
根据结构4或5所述的程序开发装置,其中,所述更新部件在所述导入的程序模块中所含的程序的名称重复的情况下,按照预先规定的命名规则来变更所述重复的程序的名称。
[0232]
[结构7]
[0233]
根据结构1至6中任一项所述的程序开发装置,其中,以存在调用关系的多个程序模块为单位来进行导入。
[0234]
[结构8]
[0235]
根据结构1至7中任一项所述的程序开发装置,其中,所述程序模块各自能够包含相关联的输入/输出单元的定义(54、540~546),
[0236]
所述更新部件进而构成为,在所述导入的程序模块中所含的输入/输出单元的定义与所述工程的任一个程序模块中所含的输入/输出单元的定义重复的情况下,受理所述重复的输入/输出单元的定义的变更(s106、s108)。
[0237]
[结构9]
[0238]
一种工程制作方法,用于制作包含在控制装置(100)中执行的用户程序的工程(50),所述工程制作方法包括:保持包含一个或多个程序模块的工程的步骤(208),所述程序模块各自包含程序,并且能够定义第一变量(52、520)、第二变量(60、600~606)与第三变
量(58、580~586),所述第一变量(52、520)是能够在所述工程中所含的所有的程序模块间参照的变量,所述第二变量(60、600~606)是能够在所述工程中所含的多个程序模块间参照的变量,所述第三变量(58、580~586)是在各程序模块中参照的变量,且
[0239]
所述工程制作方法包括:
[0240]
步骤(s20),在所述工程中受理一个或多个程序模块的导入;
[0241]
步骤(s114),维持所述导入的程序模块中所含的第一变量的变量名;以及
[0242]
步骤(s114、s116),在所述导入的程序模块中所含的第二变量的变量名与所述工程的任一个程序模块中所含的第二变量的变量名重复的情况下,受理所述重复的变量名的变更。
[0243]
[结构10]
[0244]
一种用于实现程序开发装置(200)的程序(250),所述程序开发装置(200)用于提供在控制装置(100)中执行的用户程序的开发环境,其中,所述程序使计算机执行保持包含一个或多个程序模块的工程的步骤(208),所述程序模块各自包含程序,并且能够定义第一变量(52、520)、第二变量(60、600~606)与第三变量(58、580~586),所述第一变量(52、520)是能够在所述工程中所含的所有的程序模块间参照的变量,所述第二变量(60、600~606)是能够在所述工程中所含的多个程序模块间参照的变量,所述第三变量(58、580~586)是在各程序模块中参照的变量,且
[0245]
所述程序使计算机执行:
[0246]
步骤(s20),在所述工程中受理一个或多个程序模块的导入;
[0247]
步骤(s114),维持所述导入的程序模块中所含的第一变量的变量名;以及
[0248]
步骤(s114、s116),在所述导入的程序模块中所含的第二变量的变量名与所述工程的任一个程序模块中所含的第二变量的变量名重复的情况下,受理所述重复的变量名的变更。
[0249]
<i.优点>
[0250]
根据依据本实施方式的模块化编程,可提供能够提高在控制装置中执行的程序的设计效率以及再利用性的新的结构。
[0251]
应认为,此次公开的实施方式在所有方面为例示而非限制者。本发明的范围是由权利要求而非所述的说明所示,且意图包含与权利要求均等的含义以及范围内的所有变更。
[0252]
符号的说明
[0253]
1:控制系统
[0254]
2:现场总线
[0255]
4:局域网
[0256]
10:现场装置群
[0257]
12:远程io装置
[0258]
14:继电器群
[0259]
16、124:io单元
[0260]
18:图像传感器
[0261]
20:摄像机
[0262]
22:伺服驱动器
[0263]
24:伺服马达
[0264]
40:组装设备
[0265]
41、45:机器人
[0266]
42:螺丝
[0267]
43:工件
[0268]
44:螺丝孔
[0269]
47:组装工序
[0270]
48:搬送工序
[0271]
50:工程
[0272]
52、520:共用变量
[0273]
54:io单元定义
[0274]
56、560~566:程序
[0275]
58、580~586、583a、5891、5892:局部变量
[0276]
60:模块间i/f
[0277]
62:hmi
[0278]
70~78、71a、73a、74a、791、792:程序模块
[0279]
80:组装设备模块
[0280]
81、81a:装配模块
[0281]
82:搬送模块
[0282]
83、83a:螺丝拾取模块
[0283]
84、84a:螺丝安装模块
[0284]
85:拾取模块
[0285]
86:放置模块
[0286]
87:检查模块
[0287]
88:处理检查模块
[0288]
100:控制装置
[0289]
102、202:处理器
[0290]
104:芯片组
[0291]
106、206:主存储装置
[0292]
108、208:二次存储装置
[0293]
110、214:局域网控制器
[0294]
112、212:usb控制器
[0295]
114:存储卡接口
[0296]
116:存储卡
[0297]
120:现场总线控制器
[0298]
122:内部总线控制器
[0299]
126:用户程序
[0300]
160:项目数据
[0301]
162、172:模块名
[0302]
164、168:识别符
[0303]
166:要素数据
[0304]
170:变量名
[0305]
200:程序开发装置
[0306]
204:驱动器
[0307]
205:存储介质
[0308]
216:输入部
[0309]
218:显示部
[0310]
220:总线
[0311]
250:开发工具
[0312]
300、310、320、324、350、360、370:设定画面
[0313]
302、312、322:下拉
[0314]
314:输入框
[0315]
330:交叉引用
[0316]
352、354:设定内容
[0317]
356:比较结果
[0318]
541~546:节点地址
[0319]
600~608、601a、603a、6091、6092:全局变量
[0320]
620、621、625:页面
[0321]
891:拍摄模块
[0322]
892:评估模块
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献