CN113760298A - 一种在plc梯形图中内嵌入c语言的方法 - Google Patents
一种在plc梯形图中内嵌入c语言的方法 Download PDFInfo
- Publication number
- CN113760298A CN113760298A CN202111055381.XA CN202111055381A CN113760298A CN 113760298 A CN113760298 A CN 113760298A CN 202111055381 A CN202111055381 A CN 202111055381A CN 113760298 A CN113760298 A CN 113760298A
- Authority
- CN
- China
- Prior art keywords
- plc
- function
- language
- ladder diagram
- compiling
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Programmable Controllers (AREA)
Abstract
本发明公开了PLC领域的一种在PLC梯形图中内嵌入C语言的方法,包括在组态软件里提供一个C语言函数的编写界面,使用编译工具将C语言的编译成可以在嵌入式系统里头使用的机器语言,并获取到C函数的入口地址;使用组态软件将生成的机器码与映射关系下载到PLC;在PLC中,将机器码放入相应的物理地址,然后通过分散加载的方式加载入了PLC;用户程序在PLC的梯形图调用C语言函数时,PLC通过下载的映射关系得到C函数的入口地址,并将入口地址转换成函数指针,通过函数指针跳转到用户C函数中执行,该在PLC梯形图中内嵌入C语言的方法,使得用户可在PLC系统中通过C语言进行复杂的算法,运行效率高,简化了编程,无需重新开发编译器系统和移植开源编译器。
Description
技术领域
本发明涉及PLC领域,具体为一种在PLC梯形图中内嵌入C语言的方法。
背景技术
可编程逻辑控制器(PLC)和工业控制领域具有广泛的应用,梯形图(LD)是PLC使用最多的编程语言,具有使用简单,直观明了的优点,但它不适合实现复杂算法,C语言相对于梯形图语言来说,运行效率高,在做相对复杂的算法时,编程相对简单,将C语言加入PLC中执行,需要将C语言转换成机器码,需要经过1.预处理(Preprocessing),2.编译(Compilation),3.汇编(Assemble),4.链接(Linking)等步骤,也就是需要自己做一个编译器系统,工程量巨大,而且如果需要更换主芯片的话,又需要重新开发编译系统,如果将Gcc等开源编译器移植进入PLC固件,一来Gcc代码量巨大,移植难度高,二来增加PLC RAM和ROM大小,增加PLC的硬件成本,为此我们提出了一种在PLC梯形图中内嵌入C语言的方法。
发明内容
本发明的目的在于提供一种在PLC梯形图中内嵌入C语言的方法,以解决上述背景技术中提出了重新开发编译系统工程量大,移植开源编译器,移植难度高,增加硬件成本的问题。
为实现上述目的,本发明提供如下技术方案:一种在PLC梯形图中内嵌入C语言的方法,包括如下步骤:
步骤一:在组态软件里提供一个C语言函数的编写界面,使用编译工具将C语言的编译成可以在嵌入式系统里头使用的机器语言,并获取到C函数的入口地址;
步骤二:使用组态软件将生成的机器码与映射关系下载到PLC;
步骤三:在PLC中,将机器码放入相应的物理地址,相当于将用户编写的程序看作PLC固件的一部分,然后通过分散加载的方式加载入了PLC;
步骤四:用户程序在PLC的梯形图调用C语言函数时,PLC通过下载的映射关系得到C函数的入口地址,并将入口地址转换成函数指针,通过函数指针跳转到用户C函数中执行。
优选的,所述步骤一中提供一个C语言函数的编写界面,具体流程包括:提供编写C函数接口,然后用户编写C函数,最后在梯形图中调用C函数。
与现有技术相比,本发明的有益效果是:该在PLC梯形图中内嵌入C语言的方法,通过使用编译工具将C语言编译成可以在PLC系统中使用的机器语言,并在PLC梯形图中内嵌入C语言,使得用户可在PLC系统中通过C语言进行复杂的算法,运行效率高,简化了编程,无需重新开发编译器系统和移植开源编译器。
附图说明
图1为本发明方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种在PLC梯形图中内嵌入C语言的方法,请参阅图1,包括如下步骤;
步骤一:在组态软件里提供一个C语言函数的编写界面,使用编译工具将C语言的编译成可以在嵌入式系统里头使用的机器语言,并获取到C函数的入口地址;
步骤二:使用组态软件将生成的机器码与映射关系下载到PLC;
步骤三:在PLC中,将机器码放入相应的物理地址,相当于将用户编写的程序看作PLC固件的一部分,然后通过分散加载的方式加载入了PLC;
步骤四:用户程序在PLC的梯形图调用C语言函数时,PLC通过下载的映射关系得到C函数的入口地址,并将入口地址转换成函数指针,通过函数指针跳转到用户C函数中执行。
其中,步骤一中提供一个C语言函数的编写界面,具体流程包括:提供编写C函数接口,然后用户编写C函数,最后在梯形图中调用C函数。
综上所述,本发明中通过使用编译工具将C语言编译成可以在PLC系统中使用的机器语言,并在PLC梯形图中内嵌入C语言,使得用户可在PLC系统中通过C语言进行复杂的算法,运行效率高,简化了编程,无需重新开发编译器系统和移植开源编译器。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
虽然在上文中已经参考实施例对本发明进行了描述,然而在不脱离本发明的范围的情况下,可以对其进行各种改进并且可以用等效物替换其中的部件。尤其是,只要不存在结构冲突,本发明所披露的实施例中的各项特征均可通过任意方式相互结合起来使用,在本说明书中未对这些组合的情况进行穷举性的描述仅仅是出于省略篇幅和节约资源的考虑。因此,本发明并不局限于文中公开的特定实施例,而是包括落入权利要求的范围内的所有技术方案。
Claims (2)
1.一种在PLC梯形图中内嵌入C语言的方法,其特征在于:包括如下步骤:
步骤一:在组态软件里提供一个C语言函数的编写界面,使用编译工具将C语言的编译成可以在嵌入式系统里头使用的机器语言,并获取到C函数的入口地址;
步骤二:使用组态软件将生成的机器码与映射关系下载到PLC;
步骤三:在PLC中,将机器码放入相应的物理地址,相当于将用户编写的程序看作PLC固件的一部分,然后通过分散加载的方式加载入了PLC;
步骤四:用户程序在PLC的梯形图调用C语言函数时,PLC通过下载的映射关系得到C函数的入口地址,并将入口地址转换成函数指针,通过函数指针跳转到用户C函数中执行。
2.根据权利要求1所述的一种在PLC梯形图中内嵌入C语言的方法,其特征在于:所述步骤一中提供一个C语言函数的编写界面,具体流程包括:提供编写C函数接口,然后用户编写C函数,最后在梯形图中调用C函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111055381.XA CN113760298A (zh) | 2021-09-09 | 2021-09-09 | 一种在plc梯形图中内嵌入c语言的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111055381.XA CN113760298A (zh) | 2021-09-09 | 2021-09-09 | 一种在plc梯形图中内嵌入c语言的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760298A true CN113760298A (zh) | 2021-12-07 |
Family
ID=78794297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111055381.XA Pending CN113760298A (zh) | 2021-09-09 | 2021-09-09 | 一种在plc梯形图中内嵌入c语言的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760298A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281404A (zh) * | 2021-12-24 | 2022-04-05 | 科东(广州)软件科技有限公司 | 一种工控机算法代码的移植方法及装置 |
-
2021
- 2021-09-09 CN CN202111055381.XA patent/CN113760298A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281404A (zh) * | 2021-12-24 | 2022-04-05 | 科东(广州)软件科技有限公司 | 一种工控机算法代码的移植方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943469B (zh) | 一种智能合约的发布方法及装置 | |
CN100485620C (zh) | 集成开发环境中的程序代码编译方法 | |
US20110252409A1 (en) | Methods and systems to implement non-abi conforming features across unseen interfaces | |
CN111309292B (zh) | 一种基于MATLAB/Simulink的全模型可执行程序构建方法 | |
CN109918081B (zh) | 一种编译方法及编译器 | |
CN101859244A (zh) | 多工具链工程构建方法及系统 | |
CN110457044B (zh) | Haxe应用程序的编译方法、装置及电子设备 | |
CN110990019A (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
CN105159732A (zh) | 在移动终端安装或更新应用程序的方法和移动终端 | |
CN111770116A (zh) | 一种执行智能合约的方法、区块链节点、存储介质 | |
CN107832056B (zh) | 基于jni的c++中java函数调用方法 | |
CN113760298A (zh) | 一种在plc梯形图中内嵌入c语言的方法 | |
CN111966357A (zh) | 一种操作系统应用编译方法、装置及电子设备 | |
CN107024900B (zh) | 最优编译plc命令的方法 | |
CN110659088B (zh) | 一种嵌入式环境下程序扩展的方法及系统 | |
CN108121285B (zh) | 基于连续功能图的应用软件协同编译方法及装置 | |
JP2009157533A (ja) | プログラマブルコントローラシステム | |
CN111770202B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN107340995A (zh) | 一种牵引控制应用软件开发系统 | |
CN103677790B (zh) | 软件的函数修改方法 | |
JP2016539444A (ja) | 自動化システムを構成するための処理装置および方法 | |
CN116594622A (zh) | 基于类型推导与数据流分析的Python程序编译方法及系统 | |
CN103488519B (zh) | 一种交互式脚本语言解释器的实现方法 | |
CN110018816B (zh) | 一种基于c/c++编译系统的虚拟机控制系统及其控制方法 | |
CN112346778B (zh) | 一种Java程序编译时自动生成字节码的优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |