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

技术编号:30762530 阅读:14 留言:0更新日期:2021-11-10 12:16
本发明专利技术公开了一种数控内嵌PLC中间文件转化指令表的设计方法,该方法定义中间文件的数据结构BinCode,而每个BinCode占两个long int空间,而每个指令可以由一个或者几个BinCode数据结构表示,最后编译为二进制中间文件plc.bin,保存起来供后面程序处理,生成的二进制中间文件plc.bin可以由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制。本发明专利技术通过编写不同的配置文件,可以满足不同厂家的要求,生成不同厂家的指令表语言,为学习不同指令的工程师或者学生能更快速的理解PLC代码功能提供了一个解决方案。PLC代码功能提供了一个解决方案。

【技术实现步骤摘要】
一种数控内嵌PLC中间文件转化指令表的设计方法


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

技术介绍

[0002]可编程逻辑控制器(PLC)是专为执行工业自动化任务而设计的专用计算机。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。在PLC系统中,从上位机将由梯形图转化得到的指令表形式表示的控制程序下载到PLC主控制器中,通过对指令表的编译(见图1)或者解释执行便可以实现PLC程序的控制逻辑,经相应的IO口模块驱动现场设备执行控制任务。
[0003]中国专利(CN101364098A)葛芬等人公开了在PLC中梯形图转化为指令表的示例。中国专利(CN10104317631A)公开了在PLC中指令表转化为梯形图的示例。中国专利(CN101957745A)公开了在PLC中梯形图转化为结构文本语言的示例。论文《PLC源程序编码方法与解释执行算法设计》公开了一种结构化文本解释执行的算法设计。论文《基于Lex&Yacc的PLC指令编译器的研究与实现》公开了一种指令表编译的设计方法。论文《编译型PLC的设计与实现》公开了另外一种指令表编译的设计方法。论文《数控系统中内嵌式PLC梯形图编程的软件实现》简单介绍了某厂家的PLC梯形图软件的实现方法。
[0004]前面专利和论文都是针对通用或者内嵌PLC的几种编程语言以及中间文件的转化实例,并且针对编译成中间文件以及中间文件的结构介绍很少,甚至没有,导致没有更好的利用中间文件发挥更大的能效。
[0005]生产中,由于各厂商产品的编程方法差别很大,技术专有性较强,工作人员必须经过较长时间的专业培训才能掌握某一种产品的编程方法,导致PLC应用不畅,特别是直接阅读二进制(中间)目标文件不是特别方便理解。

技术实现思路

[0006]基于此,为了解决上述问题,本专利技术的首要目的在于提供一种数控内嵌PLC中间文件转化指令表的设计方法,该方法更快的读懂PLC代码实现的功能,本专利技术提供了一种将二进制目标文件转化为指令表的方法,通过编写不同的配置文件,可以满足不同厂家的要求,生成不同厂家的指令表语言,为学习不同指令的工程师或者学生能更快速的理解PLC代码功能提供了一个解决方案。
[0007]本专利技术的另一个目的在于提供一种数控内嵌PLC中间文件转化指令表的设计方法,该方法可以将转化后的不同厂家的指令表代码,加载到厂家自带或者第三方的PLC编译环境中,直接编译下载,很小修改甚至不用修改代码本身,就可以实现代码互通,功能互通,结果互通,从而实现PLC代码跨平台移植。
[0008]为实现上述目的,本专利技术提供如下技术方案:
[0009]一种数控内嵌PLC中间文件转化指令表的设计方法,该方法定义中间文件的数据结构BinCode,而每个BinCode占两个long int空间,而每个指令可以由一个或者几个BinCode数据结构表示,这样可以便捷我们对其的操作;最后编译为二进制中间文件plc.bin,保存起来供后面程序处理。生成的二进制中间文件plc.bin可以由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制。
[0010]其中,定义这样的中间文件的数据结构BinCode为:
[0011]typedef struct{
[0012]char cmd;
[0013]char arg_t;
[0014]union{
[0015]unsigned int num;
[0016]struct{
[0017]unsigned char reg;
[0018]unsigned short no;
[0019]unsigned char bit;
[0020]}reg_no_bit;
[0021]}arg;
[0022]}BinCode;
[0023]其中,整个中间文件由含n个BinCode结构体的数组组成,定义BinCode结构体中的各个成员的具体含义以及取值范围;cmd表示指令代码,分为基本指令和功能指令;arg_t表示参数类型,用来指示共用体中的数据意义。0:无参数,1:寄存器

组号

位号,2:寄存器

组号,3:常数,4:状态字;arg根据arg_t的意义来确定本共用体的信息;其中结构体reg_no_bit表示寄存器

组号

位号;num表示常数或状态字。
[0024]除了将生成的二进制中间文件plc.bin由PLC编译执行器编译执行,从而实现整个工艺流程的输入输出控制外,还可以扩展它的跨平台移植的效用,跨平台翻译过程如下:
[0025]101、读入中间文件plc.bin以及厂家配置文件ToIR.txt。
[0026]具体包括:读入ToIR.txt,获取继电器列表及命令列表;读入plc.bin;102、写入文件,以写入模式打开指令表文件plc.ir;
[0027]103、判断BinCode是否为空,是则关闭plc.ir,退出;否则进行下一步;
[0028]判断读入以BinCode组织的plc.bin文件是否已经处理完。如果处理完,就关闭plc.ir文件并退出,从而完成整个翻译过程;如果没有处理完,就取命令。
[0029]104、读取rGetCmd();读取BinCode中的cmd以及可能的参数;
[0030]105、判断cmd_num是否合法,合法则继续下一步,不合法则将cmd_name[cmd_num]写入plc.ir;
[0031]判断cmd_num是否合法是判断cmd是否超过最大范围。如果在合法的范围内,则将cmd_name[cmd_num]写入plc.ir;如果不合法,则指示命令超限。
[0032]106、判断R_num是否合法,合法则继续下一步,不合法则将R_name[R_num]写入plc.ir;
[0033]判断R_num地址是否超过最大范围。如果在合法的范围内,则将将R_name[R_num]写入plc.ir;如果不合法,则指示地址超限。
[0034]107、将换行写入plc.ir;并返回步骤103。
[0035]因此,可以通过定义不同厂家PLC的配置文件,将plc.bin这个中间文件(包含基本指令)翻译为不同厂家的指令表语言。对于更多具有各个厂家自身特点的功能指令,可以通过上述数据结构以及定义扩展更多的继电器、寄存器,以及更多更实用的功能指令,使得跨平台翻译器更加灵活,功能更加强大。
[0036]与现有技术相比,本专利技术的有益效果是:
[0037]本专利技术通过编写不同的配置文件,可以满足不同厂家的要求,生成不同厂家的指令表语言,为学习不同本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数控内嵌PLC中间文件的设计与编译方法,其特征在于该方法定义中间文件的数据结构BinCode,而每个BinCode占两个long int空间,而每个指令可以由一个或者几个BinCode数据结构表示,最后编译为二进制中间文件plc.bin,保存起来供后面程序处理;其中,定义这样的中间文件的数据结构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表示参数类型,用来指示共用体中的数据意义;其中结构体reg_no_bit表示寄存器

组号

位号;num表示常数或状态字。2.如权利要求1所述的数控内嵌PLC中间文件的设计与编译方法,其特征在于还可以扩展所述方法的跨平台移植的效用,跨平台翻译过程如下:101、读入中间文件plc.bin以及厂家配置文件ToIR.txt。102、写入文件,以写入模式打开指令表文件plc.ir;103、判断BinCode是否为空,是则关闭p...

【专利技术属性】
技术研发人员:王庆华胡延华傅仁轩何军拥
申请(专利权)人:广东工贸职业技术学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1