一种数控内嵌plc中间文件转化指令表的设计方法

文档序号:1815135 发布日期:2021-11-09 浏览:3次 >En<

阅读说明:本技术 一种数控内嵌plc中间文件转化指令表的设计方法 (Design method of numerical control embedded PLC intermediate file conversion instruction list ) 是由 王庆华 胡延华 傅仁轩 何军拥 于 2021-07-29 设计创作,主要内容包括:本发明公开了一种数控内嵌PLC中间文件转化指令表的设计方法,该方法定义中间文件的数据结构BinCode,而每个BinCode占两个long int空间,而每个指令可以由一个或者几个BinCode数据结构表示,最后编译为二进制中间文件plc.bin,保存起来供后面程序处理,生成的二进制中间文件plc.bin可以由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制。本发明通过编写不同的配置文件,可以满足不同厂家的要求,生成不同厂家的指令表语言,为学习不同指令的工程师或者学生能更快速的理解PLC代码功能提供了一个解决方案。(The invention discloses a design method of a numerical control embedded PLC intermediate file conversion instruction list, which defines the data structure BinCode of an intermediate file, each BinCode occupies two long int spaces, each instruction can be represented by one or more BinCode data structures, and finally compiled into a binary intermediate file plc.bin, and the binary intermediate file plc.bin is stored for later program processing, and the generated binary intermediate file plc.bin can be compiled and executed by a PLC compiling actuator, thereby realizing the input and output control of the whole process flow. The invention can meet the requirements of different manufacturers by compiling different configuration files, generates instruction list languages of different manufacturers, and provides a solution for engineers or students learning different instructions to understand the PLC code function more quickly.)

一种数控内嵌PLC中间文件转化指令表的设计方法

技术领域

本发明涉及内嵌在数控系统或者工业机器人控制系统中的PLC的技术领域,具体涉及一种数控内嵌PLC中间文件转化指令表的设计方法。

背景技术

可编程逻辑控制器(PLC)是专为执行工业自动化任务而设计的专用计算机。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。在PLC系统中,从上位机将由梯形图转化得到的指令表形式表示的控制程序下载到PLC主控制器中,通过对指令表的编译(见图1)或者解释执行便可以实现PLC程序的控制逻辑,经相应的IO口模块驱动现场设备执行控制任务。

中国专利(CN101364098A)葛芬等人公开了在PLC中梯形图转化为指令表的示例。中国专利(CN10104317631A)公开了在PLC中指令表转化为梯形图的示例。中国专利(CN101957745A)公开了在PLC中梯形图转化为结构文本语言的示例。论文《PLC源程序编码方法与解释执行算法设计》公开了一种结构化文本解释执行的算法设计。论文《基于Lex&Yacc的PLC指令编译器的研究与实现》公开了一种指令表编译的设计方法。论文《编译型PLC的设计与实现》公开了另外一种指令表编译的设计方法。论文《数控系统中内嵌式PLC梯形图编程的软件实现》简单介绍了某厂家的PLC梯形图软件的实现方法。

前面专利和论文都是针对通用或者内嵌PLC的几种编程语言以及中间文件的转化实例,并且针对编译成中间文件以及中间文件的结构介绍很少,甚至没有,导致没有更好的利用中间文件发挥更大的能效。

生产中,由于各厂商产品的编程方法差别很大,技术专有性较强,工作人员必须经过较长时间的专业培训才能掌握某一种产品的编程方法,导致PLC应用不畅,特别是直接阅读二进制(中间)目标文件不是特别方便理解。

发明内容

基于此,为了解决上述问题,本发明的首要目的在于提供一种数控内嵌PLC中间文件转化指令表的设计方法,该方法更快的读懂PLC代码实现的功能,本发明提供了一种将二进制目标文件转化为指令表的方法,通过编写不同的配置文件,可以满足不同厂家的要求,生成不同厂家的指令表语言,为学习不同指令的工程师或者学生能更快速的理解PLC代码功能提供了一个解决方案。

本发明的另一个目的在于提供一种数控内嵌PLC中间文件转化指令表的设计方法,该方法可以将转化后的不同厂家的指令表代码,加载到厂家自带或者第三方的PLC编译环境中,直接编译下载,很小修改甚至不用修改代码本身,就可以实现代码互通,功能互通,结果互通,从而实现PLC代码跨平台移植。

为实现上述目的,本发明提供如下技术方案:

一种数控内嵌PLC中间文件转化指令表的设计方法,该方法定义中间文件的数据结构BinCode,而每个BinCode占两个long int空间,而每个指令可以由一个或者几个BinCode数据结构表示,这样可以便捷我们对其的操作;最后编译为二进制中间文件plc.bin,保存起来供后面程序处理。生成的二进制中间文件plc.bin可以由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制。

其中,定义这样的中间文件的数据结构BinCode为:

typedef struct{

char cmd;

char arg_t;

union{

unsigned int num;

struct{

unsigned char reg;

unsigned short no;

unsigned char bit;

}reg_no_bit;

}arg;

}BinCode;

其中,整个中间文件由含n个BinCode结构体的数组组成,定义BinCode结构体中的各个成员的具体含义以及取值范围;cmd表示指令代码,分为基本指令和功能指令;arg_t表示参数类型,用来指示共用体中的数据意义。0:无参数,1:寄存器-组号-位号,2:寄存器-组号,3:常数,4:状态字;arg根据arg_t的意义来确定本共用体的信息;其中结构体reg_no_bit表示寄存器-组号-位号;num表示常数或状态字。

除了将生成的二进制中间文件plc.bin由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制外,还可以扩展它的跨平台移植的效用,跨平台翻译过程如下:

101、读入中间文件plc.bin以及厂家配置文件ToIR.txt。

具体包括:读入ToIR.txt,获取继电器列表及命令列表;读入plc.bin;102、写入文件,以写入模式打开指令表文件plc.ir;

103、判断BinCode是否为空,是则关闭plc.ir,退出;否则进行下一步;

判断读入以BinCode组织的plc.bin文件是否已经处理完。如果处理完,就关闭plc.ir文件并退出,从而完成整个翻译过程;如果没有处理完,就取命令。

104、读取rGetCmd();读取BinCode中的cmd以及可能的参数;

105、判断cmd_num是否合法,合法则继续下一步,不合法则将cmd_name[cmd_num]写入plc.ir;

判断cmd_num是否合法是判断cmd是否超过最大范围。如果在合法的范围内,则将cmd_name[cmd_num]写入plc.ir;如果不合法,则指示命令超限。

106、判断R_num是否合法,合法则继续下一步,不合法则将R_name[R_num]写入plc.ir;

判断R_num地址是否超过最大范围。如果在合法的范围内,则将将R_name[R_num]写入plc.ir;如果不合法,则指示地址超限。

107、将换行写入plc.ir;并返回步骤103。

因此,可以通过定义不同厂家PLC的配置文件,将plc.bin这个中间文件(包含基本指令)翻译为不同厂家的指令表语言。对于更多具有各个厂家自身特点的功能指令,可以通过上述数据结构以及定义扩展更多的继电器、寄存器,以及更多更实用的功能指令,使得跨平台翻译器更加灵活,功能更加强大。

与现有技术相比,本发明的有益效果是:

本发明通过编写不同的配置文件,可以满足不同厂家的要求,生成不同厂家的指令表语言,为学习不同指令的工程师或者学生能更快速的理解PLC代码功能提供了一个解决方案。

同时,本发明也可以将转化后的不同厂家的指令表代码,加载到厂家自带或者第三方的PLC编译环境中,直接编译下载,很小修改甚至不用修改代码本身,就可以实现代码互通,功能互通,结果互通,从而实现PLC代码跨平台移植;并且通过上述数据结构以及定义扩展更多的继电器、寄存器,以及更多更实用的功能指令,使得跨平台翻译器更加灵活,功能更加强大。

附图说明

图1为内嵌PLC中间文件编译器的流程图。

图2为本发明内嵌PLC中间文件转化指令表的流程图。

图3为本发明内嵌PLC的中间文件。

图4是本发明实施自定义IR、西门子S7-200 STL及FANUC指令表的配置文件ToIR.txt。

图5为本发明根据图3和4转化的自定义、S7-200以及FANUC的plc.ir文件。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明所实现的数控内嵌PLC中间文件转化指令表的设计方法,首先定义中间文件的数据结构BinCode,每个BinCode占两个long int空间,而每个指令可以由一个或者几个BinCode数据结构表示,这样可以便捷我们对其的操作;最后编译为二进制中间文件plc.bin,保存起来供后面程序处理。生成的二进制中间文件plc.bin可以由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制。

其中,定义这样的中间文件的数据结构BinCode为:

typedef struct{

char cmd;

char arg_t;

union{

unsigned int num;

struct{

unsigned char reg;

unsigned short no;

unsigned char bit;

}reg_no_bit;

}arg;

}BinCode;

其中,整个中间文件由含n个BinCode结构体的数组组成,定义BinCode结构体中的各个成员的具体含义以及取值范围;cmd表示指令代码,分为基本指令和功能指令;arg_t表示参数类型,用来指示共用体中的数据意义。0:无参数,1:寄存器-组号-位号,2:寄存器-组号,3:常数,4:状态字;arg根据arg_t的意义来确定本共用体的信息;其中结构体reg_no_bit表示寄存器-组号-位号;num表示常数或状态字。

除了将生成的二进制中间文件plc.bin由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制外,还可以扩展它的跨平台移植的效用,跨平台翻译过程如图2所示:

101、读入中间文件plc.bin以及厂家配置文件ToIR.txt。

102、写入文件,以写入模式打开指令表文件plc.ir;

103、判断BinCode是否为空,是则关闭plc.ir,退出;否则进行下一步;

104、读取rGetCmd();读取BinCode中的cmd以及可能的参数;

105、判断cmd_num是否合法,合法则继续下一步,不合法则将cmd_name[cmd_num]写入plc.ir;

106、判断R_num是否合法,合法则继续下一步,不合法则将R_name[R_num]写入plc.ir;

107、将换行写入plc.ir;并返回步骤103。

因此,可以通过定义不同厂家PLC的配置文件,将plc.bin这个中间文件(包含基本指令)翻译为不同厂家的指令表语言。对于更多具有各个厂家自身特点的功能指令,实例plc.bin如图3所示,配置文件如图4所示,生成的不同的指令表语言如图5所示。可以通过上述数据结构以及定义扩展更多的继电器、寄存器,以及更多更实用的功能指令,使得跨平台翻译器更加灵活,功能更加强大。

一种具体实施方式如下:

编写一个具有两级结构的PLC的基本指令表,实现数控机床上的一些基本操作要求,如:

//EMERGENCY

1 LD X3.1

2 ORI F3.0

3 OUT G3.1

4 END1

5 LDI X5.4

6 SET R5.3

7 LD F0.4

8 OR X0.1

9 ANI X0.2

10 AND X0.4

11 RST Y5.4

12 END2

根据上述方法编译的二进制中间文件plc.bin,如图3所示。

翻译中间文件流程如下:

S1、文件读入;

如图2所示,读入中间文件plc.bin以及厂家配置文件ToIR.txt。简单介绍ToIR.txt文件格式:

序号1-20为PLC的地址表,如表1所示:

目前为14个,15-20用于扩展。如图4中,不同厂家的地址表根据表1中的标签分别配置,如果不存在,可以用不影响程序的其他地址来替代,比如用M继电器来替代F继电器和G继电器。

S2、写入文件;

以写入模式打开指令表文件plc.ir。它可以根据不同的配置文件生成不同厂家的指令格式。

S3、判断BinCode是否为空;

判断读入以BinCode组织的plc.bin文件是否已经处理完。如果处理完,就关闭plc.ir文件并退出,从而完成整个翻译过程;如果没有处理完,就取命令。

S4、读取cmd;

读取BinCode中的cmd以及可能的参数:有的命令可能不带参数,比如说END1;有的命令带一个参数,比如说LD;有的命令带两个参数,比如TMRC;有的命令带多个参数,所有的参数均要进行读取。

S5、判断cmd是否合法;

判断cmd是否超过最大范围。如果在合法的范围内,则将cmd_name[cmd_num]写入plc.ir;如果不合法,则指示命令超限。

S6、判断R_num是否合法

判断R_num地址是否超过最大范围。如果在合法的范围内,则将将R_name[R_num]写入plc.ir;如果不合法,则指示地址超限。

S7、写入plc.ir;并返回循环进行翻译。

具体翻译过程,如图2所示,在地址和命令合法的情况下,将配置文件标签后的内容做替换,最后写入plc.ir,这就是对应厂家的指令表。

翻译中间文件扩展:对于更多具有各个厂家自身特点的功能指令,可以通过上述数据结构以及定义扩展更多的继电器、寄存器,以及更多更实用的功能指令,使得跨平台翻译器更加灵活,功能更加强大。

指令表移植:将转化后的不同厂家的指令表代码plc.ir,加载或者拷贝到到厂家自带或者第三方的PLC编译环境中,直接编译下载,很小修改甚至不用修改代码本身,就可以实现代码互通,功能互通,结果互通,从而实现PLC代码跨平台移植。

总之,本发明通过编写不同的配置文件,可以满足不同厂家的要求,生成不同厂家的指令表语言,为学习不同指令的工程师或者学生能更快速的理解PLC代码功能提供了一个解决方案。

同时,本发明也可以将转化后的不同厂家的指令表代码,加载到厂家自带或者第三方的PLC编译环境中,直接编译下载,很小修改甚至不用修改代码本身,就可以实现代码互通,功能互通,结果互通,从而实现PLC代码跨平台移植;并且通过上述数据结构以及定义扩展更多的继电器、寄存器,以及更多更实用的功能指令,使得跨平台翻译器更加灵活,功能更加强大。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于摇饮料机器人的数据采集传输的律动动感控制系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类