CN108958738B - Plc控制的梯级代码编译方法及装置 - Google Patents
Plc控制的梯级代码编译方法及装置 Download PDFInfo
- Publication number
- CN108958738B CN108958738B CN201810862166.2A CN201810862166A CN108958738B CN 108958738 B CN108958738 B CN 108958738B CN 201810862166 A CN201810862166 A CN 201810862166A CN 108958738 B CN108958738 B CN 108958738B
- Authority
- CN
- China
- Prior art keywords
- code
- lower computer
- codes
- computer
- upper computer
- 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.)
- Active
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
- G06F8/447—Target code generation
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Automation & Control Theory (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Programmable Controllers (AREA)
Abstract
本申请实施例提供了一种PLC控制的梯级代码编译方法及装置,涉及PLC控制技术领域。方法包括:上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码;上位机将多个梯级代码编译为HEX文件,并将HEX文件发送至下位机;上位机获得下位机返回的下位机解码HEX文件而执行多个梯级代码的执行结果,执行结果包括:下位机根据每个梯级代码的标识确定出的在多个梯级代码中当前执行至的梯级代码,以及执行当前执行至的梯级代码产生的结果数据。用户根据该执行结果就能够清楚知道的当前执行至了哪一个梯级代码和结果如何,便于用户能够明确程序的执行逻辑,从而提高调试的效率。
Description
技术领域
本申请涉及PLC控制技术领域,具体而言,涉及一种PLC控制的梯级代码编译方法及装置。
背景技术
PLC(Programmable Logic Controller,可编程逻辑控制器)是工业自动化、先进制造或工业流程控制等领域的关键核心控制系统,其所具有的高效性和可靠性在控制领域发挥了重大的作用。
由于PLC的控制程序是按固定周期的扫描执行,使得用户只能通过监控控制程序执行时CPU内部数据来间接的完成对控制程序的调试。但由于很难知道控制程序执行具体的逻辑步骤,使得调试起来效率低下。
发明内容
本申请在于提供一种PLC控制的梯级代码编译方法及装置,以有效的明确程序的执行逻辑,提高调试的效率。
为了实现上述目的,本申请的实施例通过如下方式实现:
第一方面,本申请实施例提供了一种PLC控制的梯级代码编译方法,所述方法包括:上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码;所述上位机将所述多个梯级代码编译为HEX文件,并将所述HEX文件发送至下位机;所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
在第一方面的一些可选的实现方式中,所述标识每个梯级代码,获得带标识的多个梯级代码,包括:所述上位机在每个梯级代码生成时,对应生成每个梯级代码的标识;所述上位机将每个标识依次设置到对应的每个梯级代码中,获得带标识的多个梯级代码。
在第一方面的一些可选的实现方式中,所述的所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果之后,所述方法还包括:所述上位机响应用户输入的断点设置操作,生成用于所述多个梯级代码执行至目标梯级代码处中断执行的断点信息;所述上位机将所述断点信息发送至所述下位机,使得所述下位机将所述断点信息与所述目标梯级代码关联后,所述下位机将所述多个梯级代码执行至所述目标梯级代码处。
在第一方面的一些可选的实现方式中,所述的所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果之后,所述方法还包括:所述上位机响应用户输入的单步执行操作,生成单步执行指令;所述上位机将所述单步执行指令发送至所述下位机,使得所述下位机根据所述单步执行指令将所述当前执行至的梯级代码更新为所述当前执行至的梯级代码的下一个梯级代码。
第二方面,本申请实施例提供了一种PLC控制的梯级代码编译方法,所述方法包括:下位机获得上位机发送的HEX文件;所述下位机执行所述HEX文件而获得执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据;所述下位机将所述执行结果返回至所述上位机。
在第二方面的一些可选的实现方式中,所述的所述下位机执行所述多个梯级代码而获得执行结果,包括:所述下位机解码所述HEX文件,获得带标识的所述多个梯级代码中每个梯级代码的码值;所述下位机将所述每个梯级代码的码值依次转换为对应的函数指针,共获得多个函数指针;所述下位机依次执行所述多个函数指针,并获得所述多个函数指针中执行当前执行至的函数指针而调用对应的预设函数产生的执行结果,其中,每个梯级代码的执行为执行每个梯级代码对应的每个函数指针。
第三方面,本申请实施例提供了一种PLC控制的梯级代码编译方法,所述装置包括:标识模块,用于上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码。编译模块,用于所述上位机将所述多个梯级代码编译为HEX文件,并将所述HEX文件发送至下位机。结果获得模块,用于所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
在第三方面的一些可选的实现方式中,所述标识模块,还用于所述上位机在每个梯级代码生成时,对应生成每个梯级代码的标识;所述上位机将每个标识依次设置到对应的每个梯级代码中,获得带标识的多个梯级代码。
第四方面,本申请实施例提供了一种PLC控制的梯级代码编译方法,所述装置包括:文件获得模块,用于下位机获得上位机发送的HEX文件。执行模块,用于所述下位机执行所述HEX文件而获得执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。发送模块,用于所述下位机将所述执行结果返回至所述上位机。
在第四方面的一些可选的实现方式中,所述执行模块,还用于所述下位机解码所述HEX文件,获得带标识的所述多个梯级代码中每个梯级代码的码值;所述下位机将所述每个梯级代码的码值依次转换为对应的函数指针,共获得多个函数指针;所述下位机依次执行所述多个函数指针,并获得所述多个函数指针中执行当前执行至的函数指针而调用对应的预设函数产生的执行结果,其中,每个梯级代码的执行为执行每个梯级代码对应的每个函数指针
第五方面,本申请实施例提供了一种服务器,所述服务器包括:处理器,存储器,总线和通信模块。所述处理器、所述通信模块和存储器通过所述总线连接。所述存储器,用于存储程序。所述处理器,用于通过调用存储在所述存储器中的程序以执行第一方面或第一方面的任一可选的实现方式所述的PLC控制的梯级代码编译方法。
第六方面,本申请实施例提供了一种具有处理器可执行的非易失程序代码的计算机可读储存介质,所述程序代码使所述处理器执行第一方面或第一方面的任一可选的实现方式所述的PLC控制的梯级代码编译方法。
本申请实施例的有益效果包括:
在用户编写用于PLC控制的梯级代码的过程中,上位机能够对生成的每个梯级代码进行标识,并将带标识的多个梯级代码生成HEX文件发给下位机进行执行,使得下位机根据每个梯级代码的标识能够确定出的当前执行至的梯级代码,并使得下位机还获得执行该当前执行至的梯级代码而产生的结果数据。基于此,下位机将包含当前执行的为哪一个梯级代码和当前执行的结果数据的执行结果返回给上位机时,用户根据该执行结果就能够清楚知道的当前执行至了哪一个梯级代码,以及执行该当前执行至的梯级代码的结果如何,便于用户能够明确程序的执行逻辑,从而提高调试的效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请第一实施例提供的一种PLC控制的梯级代码编译系统的结构框图;
图2示出了本申请第一实施例提供的一种PLC控制的梯级代码编译系统中电子设备的结构框图;
图3示出了本申请第二实施例提供的一种PLC控制的梯级代码编译方法的流程图;
图4示出了本申请第三实施例提供的一种PLC控制的梯级代码编译装置的第一结构框图;
图5示出了本申请第三实施例提供的一种PLC控制的梯级代码编译装置的第二结构框图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有进行出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
第一实施例
请参阅图1,本申请的提供了一种PLC控制的梯级代码编译系统10,该PLC控制的梯级代码编译系统10包括:上位机11和下位机12。
上位机11和下位机12均可以为手机、平板电脑或个人电脑等。上位机11和下位机12能够通过网络实现通信,例如通过局域网实现相互之间的通信,从可以执行并实现涉及PLC控制的梯级代码编译方法。
请参阅图1和图2,本实施例中,上位机11和下位机12的具体结构相仿,为便于理解上位机11和下位机12的具体结构,且又为避免累述,下面将以与上位机11和下位机12的具体结构相同的电子设备20为例来对应描述上位机11和下位机12的具体结构。
电子设备20可以包括:存储器21、通信模块22、总线23和处理器24。其中,处理器24、通信模块22和存储器21通过总线23连接。处理器24用于执行存储器21中存储的可执行模块,例如计算机程序。图2所示的电子设备20的组件和结构只是示例性的,而非限制性的,根据需要,电子设备20也可以具有其他组件和结构。
存储器21可能包含高速随机存取存储器(Random Access MemoryRAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。本实施例中,存储器21存储了处理器24执行连环派单方法所需要的程序。
总线23可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器24可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器24中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器24可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。
本发明实施例任意实施例揭示的流过程或定义的装置所执行的方法可以应用于处理器24中,或者由处理器24实现。处理器24在接收到执行指令后,通过总线23调用存储在存储器21中的程序后,处理器24通过总线23控制通信模块22则可以执行连环派单方法的流程。
第二实施例
本实施例提供了一种PLC控制的梯级代码编译方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。以下对本实施例进行详细介绍。
请参阅图3,在本实施例提供的PLC控制的梯级代码编译方法中,该PLC控制的梯级代码编译方法分别从上位机和下位机的角度进行描述,且该PLC控制的梯级代码编译方法可以包括:步骤S100、步骤S200、步骤S300、步骤S400、步骤S500和步骤S600。
步骤S100:上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码。
步骤S200:所述上位机将所述多个梯级代码编译为HEX文件,并将所述HEX文件发送至下位机。
步骤S300:下位机获得上位机发送的HEX文件。
步骤S400:所述下位机执行所述HEX文件而获得执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
步骤S500:所述下位机将所述执行结果返回至所述上位机。
步骤S600:所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果。
下面将结合图1-图3对本申请的方案中的各个步骤进行详细的描述。
步骤S100:上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码。
用户可以通过上位机的输入显示设备与上位机进行交互,其中,输入显示设备可以包括键盘、鼠标和显示屏;或者在上位机为平板电脑或手机的情况下,用户也可以通过上位机交互界面与上位机进行交互,其中,交互界面可以为触控屏。这样用户就可以在上位机的输入显示设备或交互界面上输入的用于PLC控制的梯级代码编写操作。相应的,上位机就可以在响应检测到用户输入的用于PLC控制的梯级代码编写操作,并生成相应的每个梯级代码。
本实施例中,上位机响应用户的编写操作使得上位机初步生成用户输入的数据,用户输入的数据可以包括:变量、定义的常开触点、定义的常闭触点、定义的线圈等元器件、或定义的各元件的地址掩码。上位机中预先设置了输入数据的格式,该输入数据的格式可以包括:定义的各变量的类型(例如,浮点型、整型等)、定义的各元件的类型、以及定义的地址掩码的寻找范围等。那么上位机可以判断初步生成对应的变量、定义的常开触点、定义的常闭触点、定义的线圈等元器件、或定义的各元件的地址掩码是否预设的输入数据的格式匹配,以进行一个初步的排错。
若是,上位机确定用户输入的数据,而继续执行后续流程。
若否,上位机将用户输入的数据中错误数据通过不同的颜色显示出来,以提示用户需要重新输入。
上位机继续响应用户的编写操作,将生成的用户输入的数据组合起来就构成了初始的梯级代码。由于用户的编写操作是持续的过程,那么上位机可以持续的生成每个初始的梯级代码。
可以理解的是,初始的梯级代码为按照人的语言逻辑所输入的代码,为便于下位机能够执行该初始的梯级代码,上位机在每个初始的梯级代码生成时,上位机可以将每个初始的梯级代码转换成类似汇编语言的每个梯级代码,且每个梯级代码可以为中间代码IL指令,多个初始的梯级代码转换为多个梯级代码就构成IL指令列表。其中,多个初始的梯级代码构成一种控制程序,例如,多个初始的梯级代码可以为主程序、子程序或中断程序,则每种控制程序都对应的转换成一个IL指令表。
本实施例中,也在上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,上位机在每个梯级代码生成时,可以按照预设的规程对应生成每个梯级代码的标识。其中,每个标识用于表示每个梯级代码在所有梯级代码中位置。
例如,梯级代码为IL指令LINE 1,5,那么该梯级代码的标识可以为:编码:0xffff0x01 0x05,其中,0xffff代表该标识的码值、0x01代表该梯级代码的序号为1、0x05代表该梯级代码的级号为5。
上位机再将每个标识依次设置到对应的每个梯级代码中,例如,将每个标识设置到每个梯级代码的末尾处,实现了每个梯级代码进行标识。相应的,上位机生成了多个梯级代码,那么就可以获得带标识的多个梯级代码,且带标识的多个梯级代码中每两个梯级代码之间通过标识被间隔开,使得带标识的多个梯级代码中每个梯级代码的位置都被明确。
步骤S200:所述上位机将所述多个梯级代码编译为HEX文件,并将所述HEX文件发送至下位机。
上位机可以按照预设的16进制编码规则,将多个梯级代码中每个梯级代码按照数据的不同或寻找方式的不同均进行编码,使得每个梯级代码中的IL指令都具有唯一的码值。
例如:梯级代码为相加运算IL指令的:ADD 3,%Q20;那么该梯级代码可以编码为:0x 0100 0x0 0x0003 0x1 0x1014。其中,0x0100代表ADD指令码、0x0代表常数寻址方式、0x0003代表常数为3、0x01代表内存变量按字节寻址、0x1014代表0x1000代表Q区域基地址、0x0014代表Q区基地址偏移量为20。
这样,上位机通过对多个梯级代码编码就获得了16进制的HEX文件,HEX文件则可以反映出多个梯级代码的逻辑关系和调试信息。并通过与下位机的通信,将该HEX文件发送给下位机。
步骤S300:下位机获得上位机发送的HEX文件。
相应的,下位机通过与上位机之间的通信,就能够实时的获得上位机发送的该HEX文件。
步骤S400:所述下位机执行所述HEX文件而获得执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
下位机中预先设置了解码的规则,下位机按照解码的规则对HEX文件进行解码,就能够获得HEX文件中每个梯级代码的码值。
下位机中预先建立了每个码值和每个函数指针的关联关系,这样下位机便能够根据每个梯级代码的码值与对应的每个函数指针的关联关系,将每个梯级函数的码值依次转换为对应的函数指针,共获得多个函数指针。这样,下位机便可以将该多个函数指针放入到一个数组中,形成一个函数指针的列表。
下位机将函数指针的列表中的多个函数指针按顺序依次执行所述多个函数指针,并获得多个函数指针中执行当前执行至的函数指针而调用对应的预设函数产生的执行结果,其中,每个梯级代码的执行为执行每个梯级代码对应的每个函数指针。
本实施例中。获得执行当前执行至的函数指针的执行结果可以为,下位机根据该当前执行至的函数指针调用对应的预设函数,并运行该预设函数。由于该当前执行至的函数指针与对应梯级代码的码值是关联的,而该梯级代码中包含了标识,故该当前执行至的函数指针与梯级代码中的标识的码值也是关联的,下位机根据关联关系就可以确定当前执行至的函数指针是对应的哪一个标识,而通过确定的标识下位机就可以确定出的在多个梯级代码中当前执行至的梯级代码。与此同时,下位机实时的监测该预设函数运行的过程中下位机的CPU和内存中的参数数据,该CPU和内存中的参数数据则可以作为执行当前执行至的梯级代码产生的结果数据。
因此,下位机则可以将根据每个梯级代码的标识确定出的在多个梯级代码中当前执行至的梯级代码和执行当前执行至的梯级代码产生的结果数据打包为执行结果。
步骤S500:所述下位机将所述执行结果返回至所述上位机。
相应的,下位机通过与上位机的通信,便可以将该执行结果实时的返回给上位机。
步骤S600:所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果。
上位机获得下位机返回的执行结果时,上位机可以将该执行结果显示出来,即上位机的显示界面上显示出当前执行至的梯级代码和执行当前执行至的梯级代码产生的结果数据。
作为本实施例中第一种可选地实施方式,上位机还支持进行断点调试,即在步骤S600之后,上位机可以响应用户输入的断点设置操作,生成用于多个梯级代码执行至目标梯级代码处中断执行的断点信息。
当然,用户的断点设置操作使得上位机可以生成多个断点信息,但每个断点信息的作用,以及上位机和下位机对每个断点信息的处理方式是相同的,故为便于对本方案的理解,本实施例以其中任一个断点信息为例来进行说明。
上位机生成的断点信息中包括了断点信息与目标梯级代码的标识的关联关系,那么上位机将断点信息发送至下位机,下位机将根据断点信息中断点信息与目标梯级代码的标识的关联关系就可以将断点信息与目标梯级代码关联。这样,下位机在对函数指针的列表的执行过程中,执行到函数指针对应为目标梯级代码时,下位机就可以通过该目标梯级代码的标识而获得该断点信息。下位机根据该断点信息便不在执行该目标梯级代码后的其它梯级代码。但是,为便于用户调试,虽然下位机没有再继续执行该目标梯级代码后的其它梯级代码,但是下位机可以持续的获得该目标梯级代码以及该目标梯级代码以前所有梯级代码执行产生的结果数据,并将该结果数据持续的返回给上位机,以便在执行终止在目标梯级代码处时,用户基于结果数据对该目标梯级代码以及该目标梯级代码以前所有梯级代码进行调试。
另外,若上位机继续控制下位机对函数指针的列表进行执行,那么下位机可以执行至关联下一个断点信息的下一个目标处再次中断执行。
作为本实施例中第二种可选地实施方式,上位机还支持进行单步调试,即在步骤S600之后,上位机可以响应用户输入的单步执行操作,生成单步执行指令。那么,上位机将单步执行指令发送至下位机,下位机便根据单步执行指令将当前执行至的梯级代码更新为当前执行至的梯级代码的下一个梯级代码。也为便于用户调试,虽然下位机对梯级代码是逐一执行,但是下位机也可以持续的获得该目标梯级代码执行产生的结果数据,并将该结果数据持续的返回给上位机,以便用户基于结果数据对该目标梯级代码进行调试。
第三实施例
请参阅图4,本申请实施例提供了一种PLC控制的梯级代码编译装置100,该PLC控制的梯级代码编译装置100应用于上位机,该PLC控制的梯级代码编译装置100包括:
标识模块110,用于上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码。
编译模块120,用于所述上位机将所述多个梯级代码编译为HEX文件,并将所述HEX文件发送至下位机。
结果获得模块130,用于所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
其中,所述标识模块110,还用于所述上位机在每个梯级代码生成时,对应生成每个梯级代码的标识;所述上位机将每个标识依次设置到对应的每个梯级代码中,获得带标识的多个梯级代码。
请参阅图5,本申请实施例提供了一种PLC控制的梯级代码编译装置200,该PLC控制的梯级代码编译装置200应用于下位机,该PLC控制的梯级代码编译装置200包括:
文件获得模块210,用于下位机获得上位机发送的HEX文件。
解码模块220,用于所述下位机将所述HEX文件解码,获得带标识的多个梯级代码。
执行模块230,用于所述下位机执行所述多个梯级代码而获得执行结果,其中,所述执行结果包括:所述下位机根据每个梯级代码的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
发送模块240,用于所述下位机将所述执行结果返回至所述上位机。
其中,所述执行模块230,还用于所述下位机将所述多个梯级代码中每个梯级代码依次转换为对应的函数指针,共获得多个函数指针;所述下位机依次执行所述多个函数指针,并获得所述多个函数指针中执行当前执行至的函数指针而调用对应的预设函数产生的执行结果,其中,每个梯级代码的执行为执行每个梯级代码对应的每个函数指针。
需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
第四实施例
本申请实施例还提供了一种处理器可执行的非易失程序代码的计算机可读储存介质,该计算机可读存储介质上存储有程序代码,该程序代码被处理器执行时执行上述任一实施例的PLC控制的梯级代码编译方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的程序代码被执行时,能够执行上述PLC控制的梯级代码编译方法,从而解决难以明确程序的执行逻辑,导致调试的效率低下的技术问题。
本申请实施例所提供的PLC控制的梯级代码编译方法的程序代码产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
综上所述,本申请实施例提供了一种PLC控制的梯级代码编译方法及装置。方法包括:上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码;上位机将多个梯级代码编译为HEX文件,并将HEX文件发送至下位机;上位机获得下位机返回的下位机解码HEX文件而执行多个梯级代码的执行结果,执行结果包括:下位机根据每个梯级代码的标识确定出的在多个梯级代码中当前执行至的梯级代码,以及执行当前执行至的梯级代码产生的结果数据。
在用户编写用于PLC控制的梯级代码的过程中,上位机能够对生成的每个梯级代码进行标识,并将带标识的多个梯级代码生成HEX文件发给下位机进行执行,使得下位机根据每个梯级代码的标识能够确定出的当前执行至的梯级代码,并使得下位机还获得执行该当前执行至的梯级代码而产生的结果数据。基于此,下位机将包含当前执行的为哪一个梯级代码和当前执行的结果数据的执行结果返回给上位机时,用户根据该执行结果就能够清楚知道的当前执行至了哪一个梯级代码,以及执行该当前执行至的梯级代码的结果如何,便于用户能够明确程序的执行逻辑,从而提高调试的效率。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种PLC控制的梯级代码编译方法,其特征在于,所述方法包括:
上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码;
所述上位机将所述多个梯级代码编译为HEX文件,并将所述HEX文件发送至下位机;
所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果,其中,所述执行结果包括:所述下位机根据梯级代码的标识的码值与函数指针的关联关系,确定出当前执行至的函数指针对应的标识,根据所述当前执行至的函数指针对应的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
2.根据权利要求1所述的PLC控制的梯级代码编译方法,其特征在于,所述标识每个梯级代码,获得带标识的多个梯级代码,包括:
所述上位机在每个梯级代码生成时,对应生成每个梯级代码的标识;
所述上位机将每个标识依次设置到对应的每个梯级代码中,获得带标识的多个梯级代码。
3.根据权利要求1或2所述的PLC控制的梯级代码编译方法,其特征在于,所述的所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果之后,所述方法还包括:
所述上位机响应用户输入的断点设置操作,生成用于所述多个梯级代码执行至目标梯级代码处中断执行的断点信息;
所述上位机将所述断点信息发送至所述下位机,使得所述下位机将所述断点信息与所述目标梯级代码关联后,所述下位机将所述多个梯级代码执行至所述目标梯级代码处。
4.根据权利要求1或2所述的PLC控制的梯级代码编译方法,其特征在于,所述的所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果之后,所述方法还包括:
所述上位机响应用户输入的单步执行操作,生成单步执行指令;
所述上位机将所述单步执行指令发送至所述下位机,使得所述下位机根据所述单步执行指令将所述当前执行至的梯级代码更新为所述当前执行至的梯级代码的下一个梯级代码。
5.一种PLC控制的梯级代码编译方法,其特征在于,所述方法包括:
下位机获得上位机发送的HEX文件;
所述下位机执行所述HEX文件而获得执行结果,其中,所述执行结果包括:所述下位机根据梯级代码的标识的码值与函数指针的关联关系,确定出当前执行至的函数指针对应的标识,根据所述当前执行至的函数指针对应的标识确定出的在多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据;
所述下位机将所述执行结果返回至所述上位机。
6.根据权利要求5所述的PLC控制的梯级代码编译方法,其特征在于,所述的所述下位机执行所述HEX文件而获得执行结果,包括:
所述下位机解码所述HEX文件,获得带标识的所述多个梯级代码中每个梯级代码的码值;
所述下位机将所述每个梯级代码的码值依次转换为对应的函数指针,共获得多个函数指针;
所述下位机依次执行所述多个函数指针,并获得所述多个函数指针中执行当前执行至的函数指针而调用对应的预设函数产生的执行结果,其中,每个梯级代码的执行为执行每个梯级代码对应的每个函数指针。
7.一种PLC控制的梯级代码编译装置,其特征在于,所述装置包括:
标识模块,用于上位机在响应用户输入的用于PLC控制的梯级代码编写操作,并生成每个梯级代码的过程中,标识每个梯级代码,获得带标识的多个梯级代码;
编译模块,用于所述上位机将所述多个梯级代码编译为HEX文件,并将所述HEX文件发送至下位机;
结果获得模块,用于所述上位机获得所述下位机返回的所述下位机执行所述HEX文件的执行结果,其中,所述执行结果包括:所述下位机根据梯级代码的标识的码值与函数指针的关联关系,确定出当前执行至的函数指针对应的标识,根据所述当前执行至的函数指针对应的标识确定出的在所述多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据。
8.根据权利要求7所述的PLC控制的梯级代码编译装置,其特征在于,
所述标识模块,还用于所述上位机在每个梯级代码生成时,对应生成每个梯级代码的标识;所述上位机将每个标识依次设置到对应的每个梯级代码中,获得带标识的多个梯级代码。
9.一种PLC控制的梯级代码编译装置,其特征在于,所述装置包括:
文件获得模块,用于下位机获得上位机发送的HEX文件;
执行模块,用于所述下位机执行所述HEX文件而获得执行结果,其中,所述执行结果包括:所述下位机根据梯级代码的标识的码值与函数指针的关联关系,确定出当前执行至的函数指针对应的标识,根据所述当前执行至的函数指针对应的标识确定出的在多个梯级代码中当前执行至的梯级代码,以及执行所述当前执行至的梯级代码产生的结果数据;
发送模块,用于所述下位机将所述执行结果返回至所述上位机。
10.根据权利要求9所述的PLC控制的梯级代码编译装置,其特征在于,
所述执行模块,还用于所述下位机解码所述HEX文件,获得带标识的所述多个梯级代码中每个梯级代码的码值;所述下位机将所述每个梯级代码的码值依次转换为对应的函数指针,共获得多个函数指针;所述下位机依次执行所述多个函数指针,并获得所述多个函数指针中执行当前执行至的函数指针而调用对应的预设函数产生的执行结果,其中,每个梯级代码的执行为执行每个梯级代码对应的每个函数指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862166.2A CN108958738B (zh) | 2018-08-01 | 2018-08-01 | Plc控制的梯级代码编译方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862166.2A CN108958738B (zh) | 2018-08-01 | 2018-08-01 | Plc控制的梯级代码编译方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108958738A CN108958738A (zh) | 2018-12-07 |
CN108958738B true CN108958738B (zh) | 2022-03-11 |
Family
ID=64466912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810862166.2A Active CN108958738B (zh) | 2018-08-01 | 2018-08-01 | Plc控制的梯级代码编译方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108958738B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835323B (zh) * | 2020-12-31 | 2022-05-17 | 深圳市雷赛控制技术有限公司 | 可编程逻辑控制语言编译方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605328A (zh) * | 2013-10-22 | 2014-02-26 | 青岛农业大学 | 一种基于stc单片机的嵌入式plc工控板 |
CN104111890A (zh) * | 2014-07-29 | 2014-10-22 | 北京航空航天大学 | 一种实时性能测试方法与系统 |
CN105867295A (zh) * | 2016-06-03 | 2016-08-17 | 浪潮通用软件有限公司 | 一种通信方法及上位机 |
CN107241306A (zh) * | 2017-01-06 | 2017-10-10 | 深圳市九州安域科技有限公司 | 一种人机识别方法、服务端、客户端及人机识别系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9946627B2 (en) * | 2016-08-08 | 2018-04-17 | International Business Machines Corporation | Managing logger source code segments |
-
2018
- 2018-08-01 CN CN201810862166.2A patent/CN108958738B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605328A (zh) * | 2013-10-22 | 2014-02-26 | 青岛农业大学 | 一种基于stc单片机的嵌入式plc工控板 |
CN104111890A (zh) * | 2014-07-29 | 2014-10-22 | 北京航空航天大学 | 一种实时性能测试方法与系统 |
CN105867295A (zh) * | 2016-06-03 | 2016-08-17 | 浪潮通用软件有限公司 | 一种通信方法及上位机 |
CN107241306A (zh) * | 2017-01-06 | 2017-10-10 | 深圳市九州安域科技有限公司 | 一种人机识别方法、服务端、客户端及人机识别系统 |
Non-Patent Citations (1)
Title |
---|
"一种软PLC编译执行方法";高丽;《组合机床与自动化加工技术》;20111120;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108958738A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800159B (zh) | 程序调试方法、程序调试装置、终端设备及存储介质 | |
CN108388598B (zh) | 电子装置、数据存储方法及存储介质 | |
CN108255602B (zh) | 任务组合方法及终端设备 | |
CN111538942B (zh) | 表达式处理方法、电子装置及存储介质 | |
CN102609241A (zh) | 热补丁方法及装置 | |
CN110769002A (zh) | 基于LabVIEW的报文解析方法、系统、电子设备和介质 | |
CN108958738B (zh) | Plc控制的梯级代码编译方法及装置 | |
CN111061489A (zh) | 一种多平台编译检测方法、装置、设备及介质 | |
CN111078563A (zh) | 覆盖率数据处理方法、终端设备及计算机可读存储介质 | |
CN109656453A (zh) | 规则编辑方法、装置和设备 | |
CN110427277B (zh) | 数据校验方法、装置、设备及存储介质 | |
CN107291614B (zh) | 文件异常检测方法和电子设备 | |
US10474443B2 (en) | Code lineage tool | |
CN112698825B (zh) | 编程积木块转换方法、装置、处理设备及存储介质 | |
CN113177094A (zh) | 时序数据库的数据处理方法、装置、服务器和存储介质 | |
CN107612919B (zh) | 协议配置方法及装置 | |
CN112181434A (zh) | 组合仪表故障的诊断方法、装置、设备及存储介质 | |
KR101761732B1 (ko) | 어플리케이션 소스 코드의 오류 검출 장치 및 그 방법 | |
CN110430267A (zh) | 区块链上的投票关联数据处理方法及其装置 | |
CN115576265B (zh) | Plc设备模拟方法、装置、设备以及存储介质 | |
CN112346780B (zh) | 一种信息处理方法、装置和存储介质 | |
CN114490916B (zh) | 一种gis数据处理模型定制方法 | |
CN112527660B (zh) | 代码的静态检测方法和装置 | |
JP6156175B2 (ja) | 情報処理装置及びプログラム | |
CN101557391A (zh) | 一种使用状态码标识应答状态的办法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |