CN112327744B - 用于可编程逻辑控制器的梯形图与指令表互相转换方法 - Google Patents
用于可编程逻辑控制器的梯形图与指令表互相转换方法 Download PDFInfo
- Publication number
- CN112327744B CN112327744B CN202011315254.4A CN202011315254A CN112327744B CN 112327744 B CN112327744 B CN 112327744B CN 202011315254 A CN202011315254 A CN 202011315254A CN 112327744 B CN112327744 B CN 112327744B
- Authority
- CN
- China
- Prior art keywords
- node
- executing
- instruction
- block
- current access
- 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
- 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/054—Input/output
-
- 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
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13018—Conversion ladder diagram to decision system, machine code, language
Abstract
本发明公开了一种用于可编程逻辑控制器的梯形图与指令表的互相转换方法,指令表包括至少一行,每行由左及右依次包括行号、指令操作符以及指令操作数或者依次包括行号和指令,所述方法根据对梯形图中节点的扫描,在各行内添加指令操作符和指令操作数或者单独添加指令,以生成指令表的一行,具体的,在将梯形图转换为指令表的过程中,依据由左及右,由上到下的扫描顺序,遍历梯形图后,在每个梯级内根据是否存在多分支输出块、串联块和并联块等将梯形图转换为指令表,多分支输出块、串联块和并联块内部还各自设置了相应的转换规则,在指令表中,将指令归为了十类,从而可以快速地将指令表转换为梯形图。
Description
技术领域
本发明涉及可编程逻辑控制器编程软件领域,具体涉及一种应用于可编程逻辑控制器的梯形图转换为指令表、指令表转换为梯形图的方法。
背景技术
PLC(可编程逻辑控制器)广泛应用于工业自动化领域,用户使用编程软件为PLC编制程序实现设备自动控制,梯形图与指令表互相转换功能是PLC编程软件进行程序编译的基本功能,梯形图与指令表互相转换的方案主要分为两类:
方案一:以二叉树为中心的转换算法。从梯形图转为指令表时先扫描梯形图建立相应的顶点活动AOV(Activity On Vertex)图,再根据顶点的出度和入度将AOV图转化为二叉树森林,对每颗二叉树进行后序遍历生成指令表。从指令表转为梯形图时先扫描指令表得到所有梯级,再根据指令间的串并联逻辑关系得到每个梯级对应的二叉树,对二叉树进行中序遍历生成梯形图。
方案二:基于块递归划分的指令表生成算法。首先将梯形图划分成多个梯级,按从下往上,从右往左的顺序遍历梯级,通过特定算法将梯级划分为输入模块和输出模块,然后分别调用输入模块的递归转换方法和输出模块的递归转换方法进行转换生成指令表。
方案一算法过程繁琐,数据结构复杂,生成二叉树时需建立多个冗余的树节点,因此带来以下几个不利影响:
1:具有较高的时间和空间复杂度,会占用更多的计算机存储空间;
2:不易编程实现;
3:转换效率低;
方案二实现了从梯形图转为指令表,但不能从指令表转为梯形图,转换过程不可逆。
发明内容
本发明主要解决的技术问题是提供一种用于可编程逻辑控制器上的转换效率高,占用计算机资源少的梯形图转换为指令表的方法,以及相应的指令表转换为梯形图的方法。
根据第一方面,一种实施例中提供一种梯形图转换为指令表的方法,所述指令表包括至少一行,每行由左及右依次包括行号、指令操作符以及指令操作数或者依次包括行号和指令,所述方法根据对梯形图中节点的扫描,在各行内添加指令操作符和指令操作数或者单独添加指令,以生成指令表的一行,且在生成指令表的一行后跳转至下一行,以生成下一行指令,所述方法包括步骤:
遍历梯形图,所述梯形图包括多个节点和/或连接块,所述连接块包括串联块、并联块和多分支输出块,所述块包括至少两个节点,各节点均具有预先设置的节点符号,相邻节点通过连线相连,所述节点包括输入节点和输出节点,所述输入节点预先设有对应的串联块转换标志,所述串联块转换标志包括第一标志和第二标志,所述第一标志用于表示所述输入节点未存在被转换为指令表的串联块,所述第二标志用于表示所述输入节点已存在被转换为指令表的串联块;
获取所述梯形图的梯级个数,以及各所述梯级中的根节点,所述根节点为梯级中的首个节点;
依照自上而下的顺序,依次将各所述梯级转换为指令表;
将所述梯级转换为指令表,包括:
S100、访问当前梯级的根节点;
S101、判断当前访问节点是否存在左下节点;如果存在左下节点,执行步骤S102,如果不存在左下节点,执行步骤S107;
S102、判断所述当前访问节点是否存在多分支输出块,如果存在多分支输出块,执行步骤S103,如果不存在多分支输出块,执行步骤S104;
S103、将所述多分支输出块转换为相应指令表,执行步骤S114;
S104、判断所述当前访问节点是否存在串联块,如果存在串联块,执行步骤S105,如果不存在串联块,执行步骤S107;
S105、将所述当前访问节点的串联块转换为相应指令表后,执行步骤S106;
S106、判断所述当前访问节点的串联块的返回节点是否存在并联块,如果所述返回节点存在并联块,执行步骤S109,如果所述返回节点不存在并联块,执行步骤S111;
S107、将所述当前访问节点转换为相应指令表,执行步骤S108;
S108、判断所述当前访问节点是否存在并联块,如果所述当前访问节点存在并联块,执行步骤S109,如果所述当前访问节点不存在并联块,执行步骤S111;
S109、将所述当前访问节点的并联块转换为相应指令表后,执行步骤S111;
S110、将所述返回节点的并联块转换为相应指令表后,执行步骤S111;
S111、将所述当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S112;
S112、判断当前访问节点为输入节点还是输出节点,如果为输入节点,执行步骤S104,如果为输出节点,执行步骤S113;
S113、将所述输出节点转换为相应指令表,执行步骤S114;
S114,结束所述当前梯级的转换;
判断节点是否存在串联块的步骤为:
判断所述节点是否存在左下节点,如果不存在左下节点,则所述节点不存在串联块,如果所述节点存在左下节点,自所述左下节点向右扫描,如果扫描到存在右上节点的另一节点,则所述节点存在串联块;
判断节点是否存在并联块的步骤为:
判断所述节点是否存在右下节点,如果不存在右下节点,则所述节点不存在所述并联块,如果所述节点存在右下节点,自所述右下节点向左扫描,如果扫描到存在左上节点的另一节点,则所述节点存在所述并联块,且所述右下节点为所述并联块的右端节点,所述另一节点为并联块的左端节点;
判断节点是否存在多分支输出块的步骤为:
判断所述节点是否存在左下节点,如果不存在左下节点,则所述节点不存在多分支输出块,如果所述节点存在左下节点,则自所述左下节点向右扫描,执行扫描判断步骤:
向右扫描中判断是否存在新节点,如果不存在新节点,则所述节点不存在多分支输出块,如果存在新节点,判断所述新节点是否为输出节点,如果为输出节点,则所述节点存在多分支输出块,如果不为输出节点,则判断所述新节点是否存在右上节点,如果所述新节点存在右上节点,则所述节点不存在多分支输出块,如果所述新节点不存在右上节点,则继续执行扫描判断步骤。
根据第二方面,一种实施例中提供一种指令表转换为梯形图的方法,所述指令表包括至少一行,每行由左及右依次包括行号、指令操作符以及指令操作数或者包括行号和指令,所述方法由上及下依次读取各行的指令或者指令操作符和指令操作数,所述方法包括:
将当前梯形图的最大行坐标和最大纵坐标置零;
将所述指令表的首行作为当前行;
读取所述当前行的指令或读取所述当前行的指令操作符和指令操作数,根据读取到的指令改变所记录的最大行坐标和/或最大纵坐标,根据读取到的指令、以及当前所记录的最大行坐标和最大纵坐标,在所述梯形图的对应行坐标和纵坐标的位置生成对应节点;
根据所述节点在指令表中的对应指令,在所述节点之间添加连线,以生成梯形图。
根据第三方面,一种实施例中提供一种计算机可读存储介质,包括程序,所述程序能够被处理器执行以实现如上述实施例所述的方法。
上述实施例中,既可实现梯形图向指令表的转换,同时也可实现指令表向梯形图的转换,省掉了复杂的数据结构和繁琐的算法过程,这带来下好处:1:在转换时需要的计算机资源少,或者说,在运用相同计算机资源的情况下,转换时间短;2:用户更容易编程实现;3:可实现高效率双向的可逆转换。
附图说明
图1为一种实施例的节点的示意图;
图2为一种实施例的包含串联块的梯形图;
图3为另一种实施例包含串联块与并联块的梯形图;
图4为一种实施例的包含两个梯级的梯形图;
图5为一种实施例的包含多分支输出块的梯形图;
图6为一种实施例的将一个梯级转换为指令表的流程图;
图7为一种实施例的将串联块转换为指令表的流程图;
图8为一种实施例的将并联块转换为指令表的流程图;
图9为一种实施例的将多分支输出块转换为指令表的流程图;
图10为一种实施例的将一条输出分支转换为指令表的流程图;
图11为一种实施例的可相互转换的指令表和梯形图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
下面对本发明中出现的术语进行解释:
(1)节点
梯形图由一个个节点相互连接形成,前后节点或节点块具有严格的前驱后继关系,只有前驱节点有效时后继节点才能动作。从视图上看,整个梯形图表现为一个节点矩阵,每个节点使用各种图符填充,使用(行号,列号)表示节点在梯形图中的位置,也就是说,每个节点都有对应的行坐标和列坐标。节点的连接关系分水平连接和垂直连接,如图1所示,有向左(left)、向右(right)、左上(up)、左下(unup)、右上(undown)、右下(down)共6个连接方向,如果A节点的左上方向还有一个B节点,那么B节点就是A节点的左上节点。
节点依照类型区分,还可以被分为输入节点和输出节点,该分类为本领域的常规知识,在此不赘述。
(2)串联块
判断节点是否存在串联块的步骤为:
判断节点是否存在左下节点,如果不存在左下节点,则节点不存在串联块,如果节点存在左下节点,自左下节点向右扫描,如果扫描到存在右上节点的另一节点,则节点存在串联块,如果所述节点的左下节点也存在左下节点,则重复上述过程扫描过程。例如如图2所示,X1、X2、X3、X4、X5、X6分别为输入节点,X1存在串联块,且在图2中,X4是串联块的结束节点,而在图3中,X1存在串联块,该串联块包括X1、X2、X3、X4、X5、X6,X1是起始节点,X6是结束节点。
(3)并联块
判断节点是否存在并联块的步骤为:
判断所述节点是否存在右下节点,如果不存在右下节点,则所述节点不存在所述并联块,如果节点存在右下节点,自所述右下节点向左扫描,如果扫描到存在左上节点的另一节点,则节点存在并联块,且右下节点为并联块的右端节点,另一节点为并联块的左端节点。例如如图3所示,X1、X2、X3、X4、X5分别为输入节点,第二行的并联块包括节点X2和节点X3,第三行的并联块包含节点X4和X5,其中X2是第二行的并联块的左端节点,X3是第二行的并联块的右端节点,X4是第三行并联块的左端节点,X5是第三行并联块的右端节点。
(4)梯级
梯级的判别方法为:如图4所示,如果某一行的所有节点都不为空且均没有左上节点,则判断该行是一个新梯级的首行,并存储该行的首节点为新梯级的根节点,该行的上一非空行为上一个梯级的末尾行。
(4)多分支输出块
如图5所示为多分支输出块,判断节点是否存在左下节点,如果不存在左下节点,则节点不存在多分支输出块,如果节点存在左下节点,则自左下节点向右扫描,执行扫描判断步骤:
向右扫描中判断是否存在新节点,如果不存在新节点,则所述节点不存在多分支输出块,如果存在新节点,判断所述新节点是否为输出节点,如果为输出节点,则所述节点存在多分支输出块,如果不为输出节点,则判断所述新节点是否存在右上节点,如果所述新节点存在右上节点,则所述节点不存在多分支输出块,如果所述新节点不存在右上节点,则继续执行扫描判断步骤。
如果存在多分支输出块,扫描完成后保存扫描到的输出分支个数,以及每一条输出分支的起始节点。
本发明中的指令,包括指令操作符和指令操作数,在一些情况下只包含指令操作符。
本发明节点的访问顺序(扫描顺序)遵循由左及右后由上及下的顺序。在整个梯形图遵循该顺序(节点和节点之间、连接块与连接块之间),在串联块、并联块和多分支输出块的内部也遵循该顺序,在连接块最后一行的最右侧节点访问后,才会访问下一个连接块的第一个节点。
请参照图6-11,本发明提供了一种梯形图转换为指令表的方法,指令表包括至少一行,每行由左及右依次包括行号、指令操作符以及指令操作数或者依次包括行号和指令,方法根据对梯形图中节点的扫描,在各行内添加指令操作符和指令操作数或者单独添加指令,以生成指令表的一行,且在生成指令表的一行后跳转至下一行,以生成下一行指令。如图6所示,方法包括:
遍历梯形图,梯形图包括多个节点和/或连接块,连接块包括上述串联块、并联块和多分支输出块,连接块包括至少两个节点,各节点均具有预先设置的节点符号,对节点扫描时可得到相应的指令。相邻节点通过连线相连,节点包括输入节点和输出节点,输入节点预先设有对应的串联块转换标志,串联块转换标志包括第一标志和第二标志,第一标志用于表示输入节点未存在被转换为指令表的串联块,第二标志用于表示输入节点已存在被转换为指令表的串联块。
获取梯形图的梯级个数,以及各梯级中的根节点,根节点为梯级中的首个节点;
依照自上而下的顺序,依次将各梯级转换为指令表。
其中,如图6所示,将一个梯级转换为指令表,包括以下步骤:
S100、访问当前梯级的根节点;
S101、判断当前访问节点是否存在左下节点;如果存在左下节点,执行步骤S102,如果不存在左下节点,执行步骤S107;
S102、判断当前访问节点是否存在多分支输出块,如果存在多分支输出块,执行步骤S103,如果不存在多分支输出块,执行步骤S104;
S103、将多分支输出块转换为相应指令表,执行步骤S114;
S104、判断当前访问节点是否存在串联块,如果存在串联块,执行步骤S105,如果不存在串联块,执行步骤S107;
S105、将当前访问节点的串联块转换为相应指令表后,执行步骤S106;
S106、判断当前访问节点的串联块的返回节点是否存在并联块,如果返回节点存在并联块,执行步骤S109,如果返回节点不存在并联块,执行步骤S111;
S107、将当前访问节点转换为相应指令表,执行步骤S108;
S108、判断当前访问节点是否存在并联块,如果当前访问节点存在并联块,执行步骤S109,如果当前访问节点不存在并联块,执行步骤S111;
S109、将当前访问节点的并联块转换为相应指令表后,执行步骤S111;
S110、将返回节点的并联块转换为相应指令表后,执行步骤S111;
S111、将当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S112;
S112、判断当前访问节点为输入节点还是输出节点,如果为输入节点,执行步骤S104,如果为输出节点,执行步骤S113;
S113、将输出节点转换为相应指令表,执行步骤S114;
S114,结束当前梯级的转换;
如图7所示,本实施例中,将节点的串联块转换为相应指令表的方法,包括:
S301、判断当前访问节点的串联块转换标志为第一标志还是第二标志,如果为第一标志,则执行步骤S302,如果为第二标志,则执行步骤S307;
S302、将当前访问节点转换为相应指令表,执行步骤S303;
S303、判断当前访问节点是否存在并联块,如果存在并联块,则执行步骤S304,如果不存在并联块,则执行步骤S306;
S304、将当前访问节点的并联块转换为相应指令表,执行步骤S305
S305、判断当前访问节点的并联块的返回节点是否为节点的串联块的结束节点,如果是结束节点,执行步骤S316,如果不是结束节点,执行步骤S306;
S306、将当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S307;
S307、判断当前访问节点是否存在左下节点,如果存在左下节点,则执行步骤S308,如果不存在左下节点,则执行步骤S313;
S308、判断当前访问节点是否存在串联块,如果存在串联块,执行步骤S309,如果不存在串联块,执行步骤S313;
S309、将当前访问节点的串联块转换为相应指令表,执行步骤S310;
S310、判断当前访问节点的串联块的返回节点是否存在并联块,如果存在并联块,执行步骤S311,如果不存在并联块,执行步骤S313;
S311、将返回节点的并联块转换为相应指令表,执行步骤S312;
S312、判断返回节点的并联块的返回节点是否为节点的串联块的结束节点,如果是结束节点,执行步骤S316,如果不是结束节点,执行步骤S313;
S313、判断当前访问节点是否已被转换为相应指令表,如果当前访问节点已被转换为相应指令表,则执行步骤S314,如果当前访问节点未被转换为相应指令表,则执行步骤S315;
S314、将当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S301;
S315、保持当前访问节点不变,执行步骤S301;
S316、结束节点的串联块的转换,在指令表的相应位置添加串联块指令。
如图8所示,本实施例中,将节点的并联块转换为相应指令表的方法,包括:
S401、将节点的并联块的左端节点作为当前访问节点,
S402、判断当前访问节点的串联块转换标志为第一标志还是第二标志,如果为第一标志,执行步骤S403,如果为第二标志,执行步骤S408;
S403、将当前访问节点转换为相应指令表,执行步骤S404;
S404、判断当前访问节点是否存在并联块,如果存在并联块,执行步骤S405,如果不存在并联块,执行步骤S406;
S405、将当前访问节点的并联块转换为相应指令表,执行步骤S406;
S406、判断当前访问节点是否为节点的并联块的右端节点,如果是右端节点,执行S417,如果不是右端节点,执行步骤S407;
S407、将当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S408;
S408、判断当前访问节点是否存在左下节点,如果存在左下节点,执行步骤S409,如果不存在左下节点,执行步骤S402;
S409、判断当前访问节点是否存在串联块,如果存在串联块,执行步骤S410,如果不存在串联块,执行步骤S402;
S410、将当前访问节点的串联块转换为相应指令表,执行步骤S411;
S411、判断当前访问节点是否已被转换为相应指令表,如果当前访问节点已被转换为相应指令表,则执行步骤S412,如果当前访问节点未被转换为相应指令表,则执行步骤S413;
S412、将当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S314;
S413、保持当前访问节点不变,执行步骤S414;
S414、判断当前访问节点是否为节点的并联块的右端节点且已被转换,如果是,执行步骤S415,如果不是,执行步骤S402;
S415、判断节点的并联块的返回节点是否存在并联块,如果存在并联块,执行步骤S416,如果不存在并联块,执行步骤S417;
S416、将节点的并联块的返回节点的并联块转换为相应指令表,执行步骤S417;
S417、结束节点的并联块的转换,在指令表的相应位置添加并联块结束指令。
如图9所示,本实施例中,将多分支输出块转换为相应指令表的方法,包括:
S501、获取多分支输出块中输出分支数量,执行步骤S502;
S502、选择分支输出中的第一条输出分支作为当前输出分支,执行步骤S503;
S503、扫描当前输出分支的起始节点,获取扫描结果以及已扫描过的起始节点的数量,执行步骤S504;
S504、判断扫描结果是否满足第一条件,第一条件包括不存在入栈输出分支标志、存在输入节点标志且剩余输出分支的数量大于一,如果满足第一条件,执行步骤S505,如果不满足,执行步骤S506;
S505、生成与多分支输出块中输出分支的起始节点均关联的入栈输出分支标志,并在指令表中添加入栈指令,执行步骤S511;
S506、判断扫描结果是否满足第二条件,第二条件包括存在输入节点标志以及剩余输出分支的数量大于一,如果满足第二条件,执行步骤S507,如果不满足第二条件,执行步骤S508;
S507、在指令表中添加读栈指令,执行步骤S511;
S508、判断扫描结果是否满足第三条件,第三条件包括存在输入节点标志以及剩余输出分支的数量等于一,如果满足第三条件,执行步骤S509,如果不满足第三条件,执行步骤S510;
S509、在指令表中添加出栈指令,执行步骤S511;
S510、判断扫描结果是否满足第四条件,第四条件包括剩余输出分支的数量等于零,如果满足第四条件,执行步骤S513,如果不满足第四条件,执行步骤S511;
S511、将当前输出分支转换为相应指令表,执行步骤S512;
S512、将当前输出分支的下一输出分支作为新的当前输出分支,执行步骤S503;
S513、结束多分支输出块的转换;其中,剩余输出分支数量由输出分支数量以及已扫描过的起始节点的数量得到,输入节点标志为预先设置的用于表征被扫描节点为输入节点的标志。
如图10所示,将当前输出分支转换为相应指令表,包括:
S200、访问当前输出分支的起始节点;
S201、判断当前访问节点是否存在左下节点;如果存在左下节点,执行步骤S202,如果不存在左下节点,执行步骤S206;
S202、判断当前访问节点是否存在串联块,如果存在串联块,执行步骤S203,如果不存在串联块,执行步骤S206;
S203、将当前访问节点的串联块转换为相应指令表后,执行步骤S204;
S204、判断当前访问节点的串联块的返回节点是否存在并联块,如果返回节点存在并联块,执行步骤S205,如果返回节点不存在并联块,执行步骤S209;
S205、将返回节点的并联块转换为相应指令表后,执行步骤S209;
S206、将当前访问节点转换为相应指令表,执行步骤S207;
S207、判断当前访问节点是否存在并联块,如果当前访问节点存在并联块,执行步骤S208,如果当前访问节点不存在并联块,执行步骤S209;
S208、将访问节点的并联块转换为相应指令表后,执行步骤S209;
S209、将当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S210;
S210、判断当前访问节点为输入节点还是输出节点,如果为输入节点,执行步骤S201,如果为输出节点,执行步骤S211;
S211、将输出节点转换为相应指令表,执行步骤S212;
S212,结束当前输出分支的转换。
在一些实施例中,将梯形图转换为指令表后,还可将指令表下载到可编程逻辑控制器中执行实现用户要求的控制或工艺功能,具体包括步骤:
S701,扫描可编程逻辑控制器的输入端子,将输入端子的开关状态存储到第一软元件中;
S702,在可编程逻辑控制器中周期性地逐条执行由所述梯形图转换的指令表;
S703,根据第二软元件的状态控制可编程逻辑控制器的输出端子的开关状态。
其中,软元件是可编程逻辑控制器(PLC)内部具有一定功能的编程元件,这些编程元件包括继电器、寄存器、定时器和计数器等,其能够通过软件方式来完成与真实元件相同的功能,但其和真实元件具有一些区别,例如“软继电器”的工作线圈没有工作电压等级、功耗大小和电磁惯性等问题,触点没有数量限制、没有机械磨损和电蚀等问题,在不同的指令操作下,其工作状态可以无记忆,也可以有记忆,还可以作为脉冲数字元件使用。软元件的类型包括输入继电器(X)、输出继电器(Y)、辅助继电器(M)、状态继电器(S)、定时器(T)、计数器(C)、数据寄存器(D)、特殊辅助继电器(SM)和特殊数据寄存器(SD)9种类型。
需要说明的是,上述步骤存在迭代关系,例如将串联块转换为指令表的过程中,其中的节点如果有存在串联块需要转换时,则依照串联块转换为指令表的步骤进行转换。下面举一实例说明如何将图11中的右侧梯形图转换为左侧的指令表。
首先遍历该梯形图,获取梯级个数,依照上述梯级个数的获取方法,可知,该梯形图中有两个梯级。
接着将该梯级进行转换,访问该梯级的根节点M0,M0不存在左下节点,所以直接将M0转换,在指令表的第零行内添加相应指令操作符LD(起始节点对应的指令操作符为LD),并添加指令操作数M0。
接着向右访问X1,X1存在左下节点且存在串联块,因此进入串联块转换步骤。
首先获取X1对应的串联块转换标志,由于X1未经过串联块转换,故将X1转换为指令表,在指令表的第一行内添加相应指令操作符LD(起始节点对应的指令操作符为LD),并添加指令操作数X1。接着判断X1是否存在并联块,由于X1不存在并联块,故将右侧的X2作为当前访问节点,而由于X2左下不存在节点,且X2还未经过转换,则获取X2对应的串联块转换标志,同理,由于X2未经过转换,则将X2转换为指令表,在指令表的第二行内添加相应指令操作符AND(串联对应的指令操作符为AND),并添加指令操作数X2。接着判断X2是否存在并联块,由于X2存在并联块,进入并联块转换步骤。
从X2的并联块左端节点X3开始访问,而X3的串联块转换标志为第一标志,故将X3转换,在指令表的第三行添加相应指令操作符LD以及指令操作数X3,而X3既不存在并联块,又不是右端节点,所以右移至访问下一节点X4,X4不存在左下节点,且X4的串联块转换标志也为第一标志,则在指令表的第四行添加相应指令操作符AND以及指令操作数X4,再判断X4是否存在并联块,而X4不存在并联块,故结束并联块的转换,在指令表中的第五行添加标识并联块结束标志ORB后,跳转至下一行。并联块的返回节点为X4,所指的返回节点,就是结束转换时访问的节点。接着又回到了串联块的转换步骤中。
在串联块转换中,判断该并联块的返回节点是否为串联块的结束节点,返回节点为X4,而串联块的结束节点为X6(上述判断串联块中,可一直判断节点是否存在左下节点,得到串联块的最后一行,X1存在左下节点X2,X2存在左下节点X6,所以X6是X1的串联块的结束节点),由于不是串联块的结束节点,故执行步骤将下一未转换的节点作为当前访问节点,将X6作为当前访问节点,在串联块转换步骤中再次判断X6是否存在左下节点,由于不存在左下节点,再次判断X6的串联块转换标志为第一标志还是第二标志,由于X6的串联块转换标志为第一标志,所以转换X6节点,在指令表中的第六行中添加OR指令(并联对应的指令操作符为OR),而X6是串联块的结束节点,故结束串联块的转换,在指令表的第七行添加ANB指令。
接着,访问M1,可以发现M1节点存在多分支输出块,因此进入多分支输出块的转换步骤,在转换M1所在分支前,在指令表的第8行添加入栈指令MPS,在转换M2所在分支前,在指令表中添加读栈指令MRD,在转换输出节点Y2所在分支前,在指令表的第14行添加出栈指令MPP,其中将输出节点转换为相应指令表时,是在对应行内添加OUT指令。
最后扫描P0和END,并将其直接转换,从而完成梯形图到指令表的转换。
本发明还提供了一种相应的将指令表转换为梯形图的方法,指令表包括至少一行,每行由左及右依次包括行号、指令操作符以及指令操作数或者包括行号和指令,所述方法由上及下依次读取各行的指令或者指令操作符和指令操作数,所述方法包括:
将当前梯形图的最大行坐标和最大纵坐标置零;
将所述指令表的首行作为当前行;
读取所述当前行的指令或读取所述当前行的指令操作符和指令操作数,根据读取到的指令改变所记录的最大行坐标和/或最大纵坐标,根据读取到的指令、以及当前所记录的最大行坐标和最大纵坐标,在所述梯形图的对应行坐标和纵坐标的位置生成对应节点。
下文中,最大行坐标用符号maxy表示,最大列坐标以maxx表示。
根据节点在指令表中的对应指令,在节点之间添加连线,以生成梯形图。也就是说,逐行地读取指令,以确定该指令在梯形图坐标位置,然后在该坐标位置上根据该指令生成相应的节点,具体的,梯级以LD类指令开始,输出指令或MPP分支的输出指令结束,串联块以LD类指令开始,ANB指令结束,并联块以LD类指令开始,ORB指令结束,多分支输出块以MPS指令开始,MPP分支的输出指令结束。这四类指令块使用统一方法进行处理,当扫描到某类块的起始指令时,进入函数进行处理,扫描到结束指令时,从处理函数返回,在本发明中,将节点分为以下十类:
LD类:该类指令作为梯级、串联块、并联块的起始指令,在当前块处理函数中确定指令在块内(指连接块)的坐标位置,处理函数返回后确定指令在上层块中的坐标位置。
OR类:该类指令作为只有1条指令的最小并联块,扫描到该条指令,最大行坐标maxy加1,x为列坐标,设置指令坐标为(maxy,x)。
AND类:该类指令位于块内部,最大列坐标maxx加1,y为行坐标,设置指令坐标为(y,maxx)。
ANB:该指令作为串联块的结束指令,在梯形图中没有位置,设置为(-1,-1),且返回串联块的最大坐标位置(maxy,maxx)。
ORB:该指令作为并联块的结束指令,在梯形图中没有位置,设置为(-2,-2),且返回并联块的最大坐标位置(maxy,maxx)。
MPS:该指令作为多分支输出的开始指令,在梯形图中没有位置,设置为(-4,-4),在处理函数中确定多分支输出内的指令在分支内的坐标位置,返回后确定该多分支输出内的指令在上层分支中的坐标位置,若上层分支属于某条多分支输出的分支,还要确定该多分支输出在上层多分支输出中的坐标位置。
MRD:该指令作为多分支输出内的指令,在梯形图中没有位置,设置为(-5,-5),处理上条输出分支的maxx和maxy后,将maxx和maxy归零,开始该分支内指令的坐标确定。
MPP:该指令作为多分支输出内的最后一条分支的开始指令,在梯形图中没有位置,设置为(-6,-6),处理上条输出分支的maxx和maxy后,将maxx和maxy归零,开始该分支内指令的坐标确定。
OUT类:扫描到该类输出指令,最大列坐标maxx加1,不属于多分支输出的输出分支数y加1,设置指令坐标为(y,maxx)。若该类指令属于多分支输出内的某条分支,确定该类指令在多分支输出内的坐标。
标号类:主要指P和I指令,该类指令被当作一个梯级,设置指令坐标为(0,0)。
根据指令类型可以判断在节点之间添加水平连线还是垂直连线,其中,OR类、ORB、MPS类指令需要添加垂直连线,OUT类指令需要添加水平连线。
上述一些指令设置了小于0的行列坐标,是因为其在梯形图中没有坐标位置,指令的坐标设为(-1,-1)、(-2,-2)、(-4,-4)、(-5,-5)、(-6,-6)的作用是为了补全数据,也可以作为指令类型标示。
下面以图11为例说明如何将左侧的指令表准换为右侧的梯形图。本例子中maxx0为梯形图第一个梯级的最大列坐标,maxy0为梯形图第一个梯级的最大行坐标,而maxxn为块n内部的最大列坐标,maxyn为块n内部的最大行坐标,n大于等于1。
行号为0的LD指令是一个梯级的开始,该梯级记为梯级1,LD指令在梯级1内行列坐标为(0,0),此时梯级1的最大行坐标maxy0为1,最大列坐标maxx0为1。
行号为1的LD指令是一个块的开始,该块记为块1,LD指令在块1内的行列坐标位置为(0,0),行号为2的AND指令在块1内的列坐标加1,其在块1内的坐标位置为(0,1),此时块1的最大行坐标maxy1为1,最大列坐标maxx1为2。
行号为3的LD指令是一个块的开始,该块记为块2,LD指令在块2内的行列坐标位置为(0,0),行号为4的AND指令在块2内的列坐标加1,其在块2内的坐标位置为(0,1)。
行号为5的ORB指令表示一个块的结束,最近的块是块2,说明块2是一个并联块。更新块2内的指令在块1内的行列坐标,由于是并联块,块2内的指令行坐标分别加上块1的最大行坐标maxy1,因此上一步骤中的行号3、4指令的坐标位置分别为(1,0)和(1,1),此时块1的最大行坐标maxy1为2,最大列坐标maxx1为2。
行号为6的OR指令在块1内的行坐标加1,其在块1内的坐标位置为(2,0),此时块1的最大行坐标maxy1为3,最大列坐标maxx1为2。
行号为7的ANB指令表示一个块的结束,最近的块是块1,说明块1是一个串联块。更新块1内的指令在梯级1内的行列坐标,由于是串联块,块1内的指令坐标分别加上梯级1的最大列坐标maxx0,因此块1内行号1、2、3、4、6的坐标位置分别为(0,1)、(0,2)、(1,1)、(1,2)、(2,1),此时梯级1的最大行坐标maxy0为3,最大列坐标maxx0为3。
行号为8的MPS指令表示一个多分支输出的开始,该多分支输出记为多分支1,同时也表示一条输出分支的开始,该输出分支记为输出1。行号为9的AND指令在输出1内的行列坐标为(0,0),行号为10的OUT输出指令在输出1内的行列坐标为(0,1),同时表示一条输出分支的结束,最近的输出分支为输出1,更新输出1内指令在多分支1中的坐标,9、10号指令在多分支1中的坐标分别为(0,0)、(0,1)。
行号为11的MRD指令表示一条输出分支的开始,该输出分支记为输出2,行号为12的AND指令在输出2内的坐标位置为(0,0),行号为13的OUT输出指令在输出2内的行列坐标为(0,1),同时表示一条输出分支的结束,最近的输出分支为输出2,更新输出2内指令在多分支1中的坐标,12、13号指令在多分支1中的坐标分别为(1,0)、(1,1)。
行号为14的MPP指令表示一条输出分支的开始,该输出分支记为输出3,行号为15的OUT指令在输出3内的坐标位置为(0,0),同时表示一条输出分支的结束,最近的输出分支为输出3,更新输出3内指令在多分支1中的坐标,15号指令在多分支1中的坐标为(2,0)。MPP指令同时表示一个多分支输出的结束,最近的多分支输出为多分支1,更新多分支1内指令在梯级1中的坐标,分别加上梯级1的最大列坐标maxx0,9、10、12、13、15号指令在梯级1中的坐标分别为(0,3)、(0,4)、(1,3)、(1,4)、(2,3)。
上一步骤中MPP指令前面只有1条MPS指令需要匹配,因此多分支1的结束意味着梯级1的结束,更新梯级1内指令在梯形图中的行列坐标。0、1、2、3、4、6、9、10、12、13、15号指令在梯形图中的坐标分别为(0,0)、(0,1)、(0,2)、(1,1)、(1,2)、(2,1)、(0,3)、(0,4)、(1,3)、(1,4)、(2,3),此时梯形图的最大行数maxRow为3。
行号为16的P0指令单独作为一个梯级,该梯级记为梯级2,P0指令在梯级2内的行列坐标为(0,0),在梯形图中的行坐标加上梯形图的最大行数,P0指令在梯形图中的行列坐标为(3,0),此时梯形图的最大行数maxRow为4。
行号为17的END指令单独作为一个梯级,该梯级记为梯级3,END指令在梯级3内的行列坐标为(0,0),在梯形图中的行坐标加上梯形图的最大行数,END指令在梯形图中的行列坐标为(4,0),此时梯形图的最大行数maxRow为5。
前面步骤确定了所有指令在梯形图中的坐标,然后添加每条指令间的连线。3、4号指令为并联块,在并联块的起点和终点分别添加向上的垂直连线。6号指令为OR类,添加水平连线与并联块等长,在起点和终点分别添加向上的垂直连线。9、12、15号指令为多输出分支内的起始点,添加向上的垂直连线。10、13、15、17号指令为输出指令,添加水平连线移至最后一列。
用户需要监控可编程逻辑控制器中的程序运行状况时,将指令表从可编程逻辑控制器中上传至上位机编程软件,利用指令表转换梯形图的方法生成梯形图进行监控。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
上述实施例中,既可实现梯形图向指令表的转换,同时也可实现指令表向梯形图的转换,省掉了复杂的数据结构和繁琐的算法过程,这带来下好处:1:在转换时需要的计算机资源少,或者说,在运用相同计算机资源的情况下,转换时间短;2:用户更容易编程实现;3:可实现高效率双向的可逆转换。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。
Claims (9)
1.一种梯形图转换为指令表的方法,其特征在于,所述指令表包括至少一行,每行由左及右依次包括行号、指令操作符以及指令操作数或者依次包括行号和指令,所述方法根据对梯形图中节点的扫描,在各行内添加指令操作符和指令操作数或者单独添加指令,以生成指令表的一行,且在生成指令表的一行后跳转至下一行,以生成下一行指令,所述方法包括步骤:
遍历梯形图,所述梯形图包括多个节点和/或连接块,所述连接块包括串联块、并联块和多分支输出块,所述串联块、并联块和多分支输出块中的任意一个均包括至少两个节点,各节点均具有预先设置的节点符号,相邻节点通过连线相连,所述节点包括输入节点和输出节点,所述输入节点预先设有对应的串联块转换标志,所述串联块转换标志包括第一标志和第二标志,所述第一标志用于表示所述输入节点未存在被转换为指令表的串联块,所述第二标志用于表示所述输入节点已存在被转换为指令表的串联块;
获取所述梯形图的梯级个数,以及各所述梯级中的根节点,所述根节点为梯级中的首个节点;
依照自上而下的顺序,依次将各所述梯级转换为指令表;
将所述梯级转换为指令表,包括:
S100、访问当前梯级的根节点;
S101、判断当前访问节点是否存在左下节点;如果存在左下节点,执行步骤S102,如果不存在左下节点,执行步骤S107;
S102、判断所述当前访问节点是否存在多分支输出块,如果存在多分支输出块,执行步骤S103,如果不存在多分支输出块,执行步骤S104;
S103、将所述多分支输出块转换为相应指令表,执行步骤S114;
S104、判断所述当前访问节点是否存在串联块,如果存在串联块,执行步骤S105,如果不存在串联块,执行步骤S107;
S105、将所述当前访问节点的串联块转换为相应指令表后,执行步骤S106;
S106、判断所述当前访问节点的串联块的返回节点是否存在并联块,如果所述返回节点存在并联块,执行步骤S109,如果所述返回节点不存在并联块,执行步骤S111;
S107、将所述当前访问节点转换为相应指令表,执行步骤S108;
S108、判断所述当前访问节点是否存在并联块,如果所述当前访问节点存在并联块,执行步骤S109,如果所述当前访问节点不存在并联块,执行步骤S111;
S109、将所述当前访问节点的并联块转换为相应指令表后,执行步骤S111;
S110、将所述返回节点的并联块转换为相应指令表后,执行步骤S111;
S111、将所述当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S112;
S112、判断当前访问节点为输入节点还是输出节点,如果为输入节点,执行步骤S104,如果为输出节点,执行步骤S113;
S113、将所述输出节点转换为相应指令表,执行步骤S114;
S114,结束所述当前梯级的转换;
判断节点是否存在串联块的步骤为:
判断所述节点是否存在左下节点,如果不存在左下节点,则所述节点不存在串联块,如果所述节点存在左下节点,自所述左下节点向右扫描,如果扫描到存在右上节点的另一节点,则所述节点存在串联块;
判断节点是否存在并联块的步骤为:
判断所述节点是否存在右下节点,如果不存在右下节点,则所述节点不存在所述并联块,如果所述节点存在右下节点,自所述右下节点向左扫描,如果扫描到存在左上节点的另一节点,则所述节点存在所述并联块,且所述右下节点为所述并联块的右端节点,所述另一节点为并联块的左端节点;
判断节点是否存在多分支输出块的步骤为:
判断所述节点是否存在左下节点,如果不存在左下节点,则所述节点不存在多分支输出块,如果所述节点存在左下节点,则自所述左下节点向右扫描,执行扫描判断步骤:
向右扫描中判断是否存在新节点,如果不存在新节点,则所述节点不存在多分支输出块,如果存在新节点,判断所述新节点是否为输出节点,如果为输出节点,则所述节点存在多分支输出块,如果不为输出节点,则判断所述新节点是否存在右上节点,如果所述新节点存在右上节点,则所述节点不存在多分支输出块,如果所述新节点不存在右上节点,则继续执行扫描判断步骤。
2.如权利要求1所述的方法,其特征在于,将节点的串联块转换为相应指令表的方法,包括:
S301、判断当前访问节点的串联块转换标志为第一标志还是第二标志,如果为第一标志,则执行步骤S302,如果为第二标志,则执行步骤S307;
S302、将所述当前访问节点转换为相应指令表,执行步骤S303;
S303、判断所述当前访问节点是否存在并联块,如果存在并联块,则执行步骤S304,如果不存在并联块,则执行步骤S306;
S304、将所述当前访问节点的并联块转换为相应指令表,执行步骤S305;
S305、判断所述当前访问节点的并联块的返回节点是否为所述节点的串联块的结束节点,如果是结束节点,执行步骤S316,如果不是结束节点,执行步骤S306;
S306、将所述当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S307;
S307、判断所述当前访问节点是否存在左下节点,如果存在左下节点,则执行步骤S308,如果不存在左下节点,则执行步骤S313;
S308、判断当前访问节点是否存在串联块,如果存在所述串联块,执行步骤S309,如果不存在串联块,执行步骤S313;
S309、将所述当前访问节点的串联块转换为相应指令表,执行步骤S310;
S310、判断所述当前访问节点的串联块的返回节点是否存在并联块,如果存在并联块,执行步骤S311,如果不存在并联块,执行步骤S313;
S311、将所述返回节点的并联块转换为相应指令表,执行步骤S312;
S312、判断所述返回节点的并联块的返回节点是否为所述节点的串联块的结束节点,如果是结束节点,执行步骤S316,如果不是结束节点,执行步骤S313;
S313、判断所述当前访问节点是否已被转换为相应指令表,如果所述当前访问节点已被转换为相应指令表,则执行步骤S314,如果所述当前访问节点未被转换为相应指令表,则执行步骤S315;
S314、将所述当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S301;
S315、保持当前访问节点不变,执行步骤S301;
S316、结束所述节点的串联块的转换,在指令表的相应位置添加串联块指令。
3.如权利要求1所述的方法,其特征在于,将节点的并联块转换为相应指令表的方法,包括:
S401、将所述节点的并联块的左端节点作为当前访问节点;
S402、判断当前访问节点的串联块转换标志为第一标志还是第二标志,如果为第一标志,执行步骤S403,如果为第二标志,执行步骤S408;
S403、将所述当前访问节点转换为相应指令表,执行步骤S404;
S404、判断所述当前访问节点是否存在并联块,如果存在并联块,执行步骤S405,如果不存在并联块,执行步骤S406;
S405、将所述当前访问节点的并联块转换为相应指令表,执行步骤S406;
S406、判断所述当前访问节点是否为所述节点的并联块的右端节点,如果是右端节点,执行S417,如果不是右端节点,执行步骤S407;
S407、将所述当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S408;
S408、判断所述当前访问节点是否存在左下节点,如果存在左下节点,执行步骤S409,如果不存在左下节点,执行步骤S402;
S409、判断所述当前访问节点是否存在串联块,如果存在串联块,执行步骤S410,如果不存在串联块,执行步骤S402;
S410、将所述当前访问节点的串联块转换为相应指令表,执行步骤S411;
S411、判断所述当前访问节点是否已被转换为相应指令表,如果所述当前访问节点已被转换为相应指令表,则执行步骤S412,如果所述当前访问节点未被转换为相应指令表,则执行步骤S413;
S412、将所述当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S314;
S413、保持当前访问节点不变,执行步骤S414;
S414、判断所述当前访问节点是否为所述节点的并联块的右端节点且已被转换,如果是,执行步骤S415,如果不是,执行步骤S402;
S415、判断所述节点的并联块的返回节点是否存在并联块,如果存在并联块,执行步骤S416,如果不存在并联块,执行步骤S417;
S416、将所述节点的并联块的返回节点的并联块转换为相应指令表,执行步骤S417;
S417、结束所述节点的并联块的转换,在指令表的相应位置添加并联块结束指令。
4.如权利要求1所述的方法,其特征在于,将多分支输出块转换为相应指令表的方法,包括:
S501、获取多分支输出块中输出分支数量,执行步骤S502;
S502、选择所述分支输出中的第一条输出分支作为当前输出分支,执行步骤S503;
S503、扫描所述当前输出分支的起始节点,获取扫描结果以及已扫描过的起始节点的数量,执行步骤S504;
S504、判断所述扫描结果是否满足第一条件,所述第一条件包括不存在入栈输出分支标志、存在输入节点标志且剩余输出分支的数量大于一,如果满足第一条件,执行步骤S505,如果不满足,执行步骤S506;
S505、生成与所述多分支输出块中输出分支的起始节点均关联的入栈输出分支标志,并在指令表中添加入栈指令,执行步骤S511;
S506、判断所述扫描结果是否满足第二条件,所述第二条件包括存在输入节点标志以及剩余输出分支的数量大于一,如果满足第二条件,执行步骤S507,如果不满足第二条件,执行步骤S508;
S507、在指令表中添加读栈指令,执行步骤S511;
S508、判断所述扫描结果是否满足第三条件,所述第三条件包括存在输入节点标志以及剩余输出分支的数量等于一,如果满足第三条件,执行步骤S509,如果不满足第三条件,执行步骤S510;
S509、在指令表中添加出栈指令,执行步骤S511;
S510、判断所述扫描结果是否满足第四条件,所述第四条件包括剩余输出分支的数量等于零,如果满足第四条件,执行步骤S513,如果不满足第四条件,执行步骤S511;
S511、将所述当前输出分支转换为相应指令表,执行步骤S512;
S512、将所述当前输出分支的下一输出分支作为新的当前输出分支,执行步骤S503;
S513、结束所述多分支输出块的转换;
其中,所述剩余输出分支数量由所述输出分支数量以及已扫描过的起始节点的数量得到,所述输入节点标志为预先设置的用于表征被扫描节点为输入节点的标志。
5.如权利要求4所述的方法,其特征在于,将当前输出分支转换为相应指令表,包括:
S200、访问当前输出分支的起始节点;
S201、判断当前访问节点是否存在左下节点;如果存在左下节点,执行步骤S202,如果不存在左下节点,执行步骤S206;
S202、判断所述当前访问节点是否存在串联块,如果存在串联块,执行步骤S203,如果不存在串联块,执行步骤S206;
S203、将所述当前访问节点的串联块转换为相应指令表后,执行步骤S204;
S204、判断所述当前访问节点的串联块的返回节点是否存在并联块,如果所述返回节点存在并联块,执行步骤S205,如果所述返回节点不存在并联块,执行步骤S209;
S205、将所述返回节点的并联块转换为相应指令表后,执行步骤S209;
S206、将所述当前访问节点转换为相应指令表,执行步骤S207;
S207、判断所述当前访问节点是否存在并联块,如果所述当前访问节点存在并联块,执行步骤S208,如果所述当前访问节点不存在并联块,执行步骤S209;
S208、将所述访问节点的并联块转换为相应指令表后,执行步骤S209;
S209、将所述当前访问节点的下一未访问节点作为新的当前访问节点,执行步骤S210;
S210、判断当前访问节点为输入节点还是输出节点,如果为输入节点,执行步骤S201,如果为输出节点,执行步骤S211;
S211、将所述输出节点转换为相应指令表,执行步骤S212;
S212,结束所述当前输出分支的转换。
6.如权利要求1所述的方法,其特征在于,将节点转换为相应指令表的方法包括:
获取所述节点的位置,根据所述节点的位置及节点的扫描信息,在指令表的相应位置添加指令操作符和指令操作数或者单独添加指令;
扫描节点块,根据扫描结果在指令表的相应位置添加对应的连接指令。
7.如权利要求1所述的方法,其特征在于,将所述梯形图转换为指令表后,还包括:将所述指令表下载至可编程逻辑控制器中,执行以下步骤:
S701,扫描可编程逻辑控制器的输入端子,将输入端子的开关状态存储到第一软元件中;
S702,在可编程逻辑控制器中周期性地逐条执行由所述梯形图转换的指令表;
S703,根据第二软元件的状态控制可编程逻辑控制器的输出端子的开关状态。
8.一种指令表转换为梯形图的方法,其特征在于,所述指令表包括至少一行,每行由左及右依次包括行号、指令操作符以及指令操作数或者包括行号和指令,所述方法由上及下依次读取各行的指令或者指令操作符和指令操作数,所述方法包括:
将当前梯形图的最大行坐标和最大纵坐标置零;
将所述指令表的首行作为当前行;
读取所述当前行的指令或读取所述当前行的指令操作符和指令操作数,根据读取到的指令改变所记录的最大行坐标和/或最大纵坐标,根据读取到的指令、以及当前所记录的最大行坐标和最大纵坐标,在所述梯形图的对应行坐标和纵坐标的位置生成对应节点;
根据所述节点在指令表中的对应指令,在所述节点之间添加连线,以生成梯形图。
9.一种计算机可读存储介质,其特征在于,包括程序,所述程序能够被处理器执行以实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011315254.4A CN112327744B (zh) | 2020-11-20 | 2020-11-20 | 用于可编程逻辑控制器的梯形图与指令表互相转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011315254.4A CN112327744B (zh) | 2020-11-20 | 2020-11-20 | 用于可编程逻辑控制器的梯形图与指令表互相转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112327744A CN112327744A (zh) | 2021-02-05 |
CN112327744B true CN112327744B (zh) | 2021-10-22 |
Family
ID=74321359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011315254.4A Active CN112327744B (zh) | 2020-11-20 | 2020-11-20 | 用于可编程逻辑控制器的梯形图与指令表互相转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112327744B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117221146B (zh) * | 2023-11-09 | 2024-01-23 | 成都科江科技有限公司 | 一种梯形图逻辑组态的界面布局系统及布局方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2479984A (en) * | 1983-02-24 | 1984-08-30 | Leslie John Feeney | Memory addressing control system |
JPH06250712A (ja) * | 1993-02-26 | 1994-09-09 | Toyoda Mach Works Ltd | プログラマブルコントローラの周辺装置 |
DE19621062A1 (de) * | 1996-05-24 | 1997-11-27 | Siemens Ag | Programmiergerät |
CN101561671A (zh) * | 2009-06-01 | 2009-10-21 | 杭州电子科技大学 | 基于构件的梯形图设计方法 |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN102508654A (zh) * | 2011-10-11 | 2012-06-20 | 江苏科技大学 | 嵌入式可编程控制器的梯形图编辑软件设计方法 |
CN102541514A (zh) * | 2010-12-09 | 2012-07-04 | 沈阳高精数控技术有限公司 | 一种将结构文本语言转换为梯形图语言的方法 |
CN104331314A (zh) * | 2014-10-31 | 2015-02-04 | 郑州众智科技股份有限公司 | 一种基于发电机组控制器的plc梯形图转指令表的方法 |
CN107168298A (zh) * | 2017-07-03 | 2017-09-15 | 贵州大学 | 梯形图动态解析方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58213304A (ja) * | 1982-06-05 | 1983-12-12 | Fanuc Ltd | ラダ−ダイヤグラム表示方式 |
WO2008101916A1 (de) * | 2007-02-19 | 2008-08-28 | Schneider Electric Automation Gmbh | Verfahren zur umwandlung von kontaktplänen |
CN103123590A (zh) * | 2011-11-18 | 2013-05-29 | 中国科学院沈阳计算技术研究所有限公司 | 指令表il程序到c语言程序的编译方法 |
CN102736552A (zh) * | 2012-07-01 | 2012-10-17 | 西北工业大学 | 一种应用于plc开发的梯形图转换为语句表的方法 |
KR101821032B1 (ko) * | 2013-05-17 | 2018-01-22 | 미쓰비시덴키 가부시키가이샤 | 프로그래머블 컨트롤러와 그 주변 장치, 및 프로그래머블 컨트롤러의 테이블 데이터 액세스 프로그램 |
CN103941627B (zh) * | 2014-01-08 | 2017-09-08 | 东南大学 | 一种基于plc编程中sfc到梯形图的转换方法 |
CN103942081A (zh) * | 2014-03-07 | 2014-07-23 | 东莞市升力智能科技有限公司 | Plc梯形图il指令表生成方法 |
CN104460489B (zh) * | 2014-11-12 | 2017-04-12 | 郑州众智科技股份有限公司 | 一种基于发电机组控制器的plc指令表转梯形图的方法 |
CN105607569B (zh) * | 2015-12-25 | 2018-02-23 | 山东超越数控电子股份有限公司 | 一种将il语言转换为梯形图的方法及装置 |
US10272014B2 (en) * | 2016-01-22 | 2019-04-30 | Hayward Industries, Inc. | Systems and methods for providing network connectivity and remote monitoring, optimization, and control of pool/spa equipment |
EP3287916B1 (en) * | 2016-08-26 | 2019-05-01 | Sap Se | Method and system for control of electromechanical medical devices |
CN106990750B (zh) * | 2017-04-01 | 2019-12-24 | 贝加莱工业自动化(中国)有限公司 | 一种梯形图在线编辑方法 |
CN108595208B (zh) * | 2017-12-30 | 2021-11-26 | 北京联合大学 | 一种可处理函数顶点的梯形图转换成指令序列的方法 |
-
2020
- 2020-11-20 CN CN202011315254.4A patent/CN112327744B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2479984A (en) * | 1983-02-24 | 1984-08-30 | Leslie John Feeney | Memory addressing control system |
JPH06250712A (ja) * | 1993-02-26 | 1994-09-09 | Toyoda Mach Works Ltd | プログラマブルコントローラの周辺装置 |
DE19621062A1 (de) * | 1996-05-24 | 1997-11-27 | Siemens Ag | Programmiergerät |
CN101561671A (zh) * | 2009-06-01 | 2009-10-21 | 杭州电子科技大学 | 基于构件的梯形图设计方法 |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN102541514A (zh) * | 2010-12-09 | 2012-07-04 | 沈阳高精数控技术有限公司 | 一种将结构文本语言转换为梯形图语言的方法 |
CN102508654A (zh) * | 2011-10-11 | 2012-06-20 | 江苏科技大学 | 嵌入式可编程控制器的梯形图编辑软件设计方法 |
CN104331314A (zh) * | 2014-10-31 | 2015-02-04 | 郑州众智科技股份有限公司 | 一种基于发电机组控制器的plc梯形图转指令表的方法 |
CN107168298A (zh) * | 2017-07-03 | 2017-09-15 | 贵州大学 | 梯形图动态解析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112327744A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101957745A (zh) | 梯形图语言转换为结构文本语言的方法 | |
US5819097A (en) | Industrial controller compiler with expandable instruction set | |
CN107402563B (zh) | 梯形程序分析装置 | |
WO2010089862A1 (ja) | ラダープログラム編集装置 | |
CN112327744B (zh) | 用于可编程逻辑控制器的梯形图与指令表互相转换方法 | |
JP7068575B2 (ja) | 最適化システム、最適化装置及び最適化システムの制御方法 | |
CN113608495B (zh) | 一种可编程逻辑控制实现方法 | |
CN108614515B (zh) | 一种基于物流生产线控制的plc梯形图到指令表的转换方法 | |
EP0318985A2 (en) | Interrogating device and method | |
EP0318984B1 (en) | Interrogating device | |
KR101566355B1 (ko) | 자동화 공정의 정상 운영 판단을 위한 마스터 패턴 생성방법 및 장치 | |
JP4755516B2 (ja) | 工程編成方法 | |
JP4424198B2 (ja) | ファンクションブロックダイアグラムのプログラム装置 | |
PL180755B1 (pl) | Sposób generowania i zapamiętywania programu użytkowego dla sterownika programowalnego | |
Poli et al. | The evolutionary computation cookbook: Recipes for designing new algorithms | |
US11157163B1 (en) | Paintbrush-like techniques for determining fabricable segmented designs | |
CN110532577B (zh) | 数字逻辑电路编译方法及装置 | |
CN113568365B (zh) | 控制工业控制器的方法、计算设备和计算机存储介质 | |
Li et al. | Tile-world—A case study of Genetic Network Programming with automatic program generation | |
CN117136342A (zh) | 开发支持装置、开发支持装置的控制方法、信息处理程序以及记录介质 | |
Ványi | Object oriented design and implementation of a general evolutionary algorithm | |
JPS59189471A (ja) | 配線経路探索システム | |
Kundu et al. | A multicriteria approach to control system design with genetic algorithm | |
JP4327416B2 (ja) | トレースデータ処理装置、トレースデータ処理方法およびその方法を実行するためのプログラム | |
US5161224A (en) | List type data storing and retrieving system |
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 |