CN101382783A - 可编程逻辑控制器的程序机械码编译方法 - Google Patents
可编程逻辑控制器的程序机械码编译方法 Download PDFInfo
- Publication number
- CN101382783A CN101382783A CNA200710146006XA CN200710146006A CN101382783A CN 101382783 A CN101382783 A CN 101382783A CN A200710146006X A CNA200710146006X A CN A200710146006XA CN 200710146006 A CN200710146006 A CN 200710146006A CN 101382783 A CN101382783 A CN 101382783A
- Authority
- CN
- China
- Prior art keywords
- program
- plc
- file
- programmable logic
- logic controller
- 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.)
- Pending
Links
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
一种可编程逻辑控制器(PLC)的程序机械码编译方法,在读取PLC程序后,寻找程序中的记忆码(Mnemonics code)。若该PLC程序中记忆码的语法均符合逻辑,则将该PLC程序转换成C语言文件。接着将该C语言文件转换成C语言目标文件、将该C语言目标文件与库文件链接。若链接成功,则将链接文件转换成机械码,供可编程逻辑控制器直接操作以控制人机界面上的外部输出入接点(EXIO)。
Description
技术领域
本发明涉及一种可编程逻辑控制器(PLC)的程序编译方法,尤其涉及一种PLC的程序机械码编译方法。
背景技术
早期PLC控制程序开发软件大多使用LD(Ladder Diagram,梯形图)程序语言,其语法简单易学,因此被广泛用于PLC应用程序的开发。但梯形图程序欠缺许多高级语言的特色,例如变量数据结构、数值运算能力、面向对象设计方式及程序执行控制等。此外,在不同的PLC硬件平台上,梯形图程序的语法及语意也不一样。因此IEC(International Electrotechnical Commission,国际电工联盟)制订出IEC61131-3的国际标准编程语言,该标准除了具备以上高级语言的特点外,还定义了一组完整的程序开发工具。
IEC 61131-3定义了下列五种不同的程序语言:
1.梯形图程序(LD)
梯形图是在熟悉机械的动作顺序并先行画出控制回路后,将继电器控制电路中的a接点、b接点、电路串并联及线圈符号化。
2.功能框图(Functional Block Diagram)
程序语言由一些事先定义好的功能框图组成,并经由适当的连接构成完整电路,因此功能框图程序特别适合于说明控制组件中的数据或是数据的流程。
3.指令(Instructional List或是Statement List)
指令为一种低级语言,由布尔代数(Boolean Algebra)及其基本逻辑演变而来,主要是由一些记忆码(Mnemonics code)组成。例如与(AND)、或(OR)、非(NOT)等符号。
4.结构式文件编程语言(Structure Text)
一些高级PLC具有高级程序语言,例如数学运算、子程序、循环及条件判断式,以通过通信网络与计算机(PC)联机操作。
5.顺序功能流程图(Sequential Function Chart)
顺序功能流程图将机械动作或步骤逐步分解成顺序功能流程图的组成元素,再根据其动作顺序连接起来,以完成整体的机械动作。
IEC 61131-3的程序语言可以用PLC本身配置的程序书写器输入,或是通过计算机联机编程软件输入,前者仅适用于输入指令码,而后者则可输入所有类型的程序语言。
不管是人机界面上的外部输出入接点(EXIO),或是PLC,都是利用编辑软件所产生的记忆码,来执行相对应的程序,且记忆码要转换成机械码。但是在执行的速度上,会因为记忆码的转换跟辨识,而受到影响,从而使执行速度变慢,影响效率。
例如过去台达PLC、三菱PLC以及各厂牌的PLC等等,他们的PLC都有专属的计算机画面编辑器供使用者编辑。在这些设计中,先将程序转化成记忆码,之后再将记忆码下载到人机执行程序。
这样的缺点主要有两点:
(1)需要一定的辨识时间来辨识记忆码,因此会影响执行的速度。
(2)所有变量跟常数都需要转换,因此会影响执行的速度。
发明内容
因此本发明的目的在于提供一种可编程逻辑控制器的程序机械码编译方法,以提升机械码转换效率。
为达到上述目的,本发明提供一种可编程逻辑控制器的程序机械码编译方法,包括
(a)输入可编程逻辑控制器程序;
(b)寻找所述可编程逻辑控制器程序中的记忆码(Mnemonicscode);
(c)若所述记忆码的语法均符合逻辑,则将所述可编程逻辑控制器程序转换成C语言文件;
(d)将所述C语言文件转换成C语言目标文件;
(e)将所述C语言目标文件与库文件链接;
(f)若链接成功,则将链接文件转换成机械码。
此外,若步骤(c)中存在不符合逻辑的记忆码的语法,则回传错误的记忆码。若步骤(f)链接不成功,则回传错误的记忆码。
附图说明
图1为根据本发明的优选实施例的可编程逻辑控制器的程序机械码编译方法流程图;
图2为说明本发明可编程逻辑控制器的程序机械码编译方法示意图;以及
图3为说明本发明可编程逻辑控制器的程序机械码编译方法的另一示意图。
具体实施方式
图1为根据本发明的优选实施例的可编程逻辑控制器的程序机械码编译方法流程图。本发明的机械码编译方法可以撰写成程序,并且由计算机执行,以将可编程逻辑控制器的程序编译成机械码。
该方法包括下列步骤:
首先开启一个已经编辑好的PLC程序文件(步骤S10),例如可为通过台达电公司的WPL人机界面(HMI)事先编辑好的梯形图文件。接着搜寻记忆码所在位置(步骤S12),该记忆码例如可为LD、AND、ANI等记忆码;并判断搜寻到的记忆码是否符合逻辑(步骤S20)。若搜寻到不符合逻辑的记忆码,也就是不符合该PLC可执行的语法的记忆码,则离开编译流程并回传错误的记忆码(步骤S22),以供使用者纠错。
若搜寻到的记忆码均符合逻辑,则将该PLC程序文件转换成C语言文件ladder.c(步骤S24),接着使用GCC编译软件将该C语言文件ladder.c编译产生C语言目的码(object code)ladderC.o(步骤S26),并将该C语言目的码1adderC.o与库文件(library file)ladderh.o链接(步骤S28)。
随后该编译流程判断编译是否成功(步骤S30),也就是C语言目的码ladderC.o是否可与库文件(library file)ladderh.o成功链接。若编译不成功,则离开并回传错误的记忆码(步骤S32);若编译成功,则产生机械码ladder.o(步骤S34)。
图2及图3为说明本发明的PLC程序机械码编译方法的示意图,在本发明的步骤S10读取的文件例如可以为图2所示的梯形图文件。若该PLC程序文件中的记忆码均符合逻辑,则将该PLC程序文件转换成C语言文件ladder.c,如图3所示。由于C语言文件可以直接转换成机械码,因此在链接库文件成功后,即可提供机械码供PLC执行,从而大幅提升效率。
由上述说明可以看出,只要在控制PLC的人机界面(HMI)端读取PLC程序,且该PLC程序并没有语法错误,即可利用本发明的方法将PLC的程序编译成机械码,直接让PLC执行。也就是说,将要执行的指令编写成C语言的程序文件后,利用编译软件对新产生的C语言文件进行编译,再跟相关的库文件进行链接,最后则会产生出一段机械码,从而实现本发明的方法,而将这段机械码下载到人机界面上后可直接执行,并不需要辨识跟转换,从而提高执行速度。
Claims (5)
1.一种可编程逻辑控制器的程序机械码编译方法,包括:
(a)输入可编程逻辑控制器程序;
(b)寻找所述可编程逻辑控制器程序中的记忆码;
(c)若所述记忆码的语法均符合逻辑,则将所述可编程逻辑控制器程序转换成C语言文件;
(d)将所述C语言文件转换成C语言目标文件;
(e)将所述C语言目标文件与库文件链接;
(f)若链接成功,则将链接文件转换成机械码。
2.如权利要求1所述的方法,进一步包括:
若步骤(c)中的所述记忆码存在语法不符合逻辑之处,则回传错误的记忆码。
3.如权利要求1所述的方法,进一步包括:
若步骤(f)链接不成功,则回传错误的记忆码。
4.如权利要求1所述的方法,其中所述机械码用于控制人机界面上的外部输出入接点(EXIO)。
5.如权利要求1所述的方法,其中所述可编程逻辑控制器程序为梯形图程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200710146006XA CN101382783A (zh) | 2007-09-03 | 2007-09-03 | 可编程逻辑控制器的程序机械码编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200710146006XA CN101382783A (zh) | 2007-09-03 | 2007-09-03 | 可编程逻辑控制器的程序机械码编译方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101382783A true CN101382783A (zh) | 2009-03-11 |
Family
ID=40462659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200710146006XA Pending CN101382783A (zh) | 2007-09-03 | 2007-09-03 | 可编程逻辑控制器的程序机械码编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101382783A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102566481A (zh) * | 2010-12-16 | 2012-07-11 | 无锡信捷电气有限公司 | 一种基于c语言的plc控制系统及其实现方法 |
CN102830649A (zh) * | 2012-08-22 | 2012-12-19 | 国电联合动力技术有限公司 | 用于风电控制系统plc控制器软件跨平台移植的方法 |
CN109032056A (zh) * | 2018-06-13 | 2018-12-18 | 华东师范大学 | 可编程逻辑控制器编程语言转换方法 |
-
2007
- 2007-09-03 CN CNA200710146006XA patent/CN101382783A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102566481A (zh) * | 2010-12-16 | 2012-07-11 | 无锡信捷电气有限公司 | 一种基于c语言的plc控制系统及其实现方法 |
CN102566481B (zh) * | 2010-12-16 | 2013-07-24 | 无锡信捷电气有限公司 | 一种基于c语言的plc控制系统及其实现方法 |
CN102830649A (zh) * | 2012-08-22 | 2012-12-19 | 国电联合动力技术有限公司 | 用于风电控制系统plc控制器软件跨平台移植的方法 |
CN102830649B (zh) * | 2012-08-22 | 2015-02-04 | 国电联合动力技术有限公司 | 用于风电控制系统plc控制器软件跨平台移植的方法 |
CN109032056A (zh) * | 2018-06-13 | 2018-12-18 | 华东师范大学 | 可编程逻辑控制器编程语言转换方法 |
CN109032056B (zh) * | 2018-06-13 | 2020-01-10 | 华东师范大学 | 可编程逻辑控制器编程语言转换方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2169547B1 (en) | Compilation model for programmable logic controllers (PLC). | |
Vyatkin et al. | Closed-loop modeling in future automation system engineering and validation | |
CN102063324B (zh) | 一种实现自动化编程的方法及系统 | |
CN101667134B (zh) | 一种构建编译系统的方法及编译系统构建装置 | |
CN104898546B (zh) | 一种基于soc的plc在线调试系统和方法 | |
US20090083719A1 (en) | Method of compiling machine code program for programmable logic controller | |
CN104267654A (zh) | 梯形图程序转换成指令表程序及其编译的方法与系统 | |
CN103814333A (zh) | 用于对可编程控制装置编程和配置的方法和设备 | |
CN109976760A (zh) | 一种图形语言的交叉编译方法及交叉编译器 | |
US20100211197A1 (en) | Methods and apparatus to configure a process control system using an electronic description language script | |
CN102508654A (zh) | 嵌入式可编程控制器的梯形图编辑软件设计方法 | |
US20120079157A1 (en) | Development of functional modules using a module bus | |
CN101382783A (zh) | 可编程逻辑控制器的程序机械码编译方法 | |
CN109032056A (zh) | 可编程逻辑控制器编程语言转换方法 | |
US20210026609A1 (en) | Support device and non-transitory computer-readable recording medium | |
Younis et al. | UML-based approach for the re-engineering of PLC programs | |
CN110442520B (zh) | 一种基于plc编程语言的交叉调试系统及方法 | |
CN102937910B (zh) | 控制算法跨平台转换系统及方法 | |
CN116126304B (zh) | 基于XML的扩展Lustre代码生成方法 | |
JP2009086898A (ja) | プログラム可能な論理制御装置用マシーンコード・プログラムのコンパイル法 | |
CN116501330A (zh) | 一种基于解耦架构的文本类编程语言编译方法 | |
CN104238438A (zh) | 一种plc通用平台及其设计方法 | |
Moutinho et al. | Ecore representation for extending PNML for Input-Output Place-Transition nets | |
Vyatkin et al. | Object-oriented modular place/transition formalism for systematic modeling and validation of industrial automation systems | |
Younis et al. | A formal method based re-implementation concept for PLC programs and its application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090311 |