本发明涉及自动化控制的技术领域,尤其涉及一种逻辑元件的连线避让方法、装置及存储介质。
背景技术:
一般的,在自动化控制领域的组态软件中,可以对可编程逻辑控制器对应的图形进行连线,从而实现可编程逻辑控制器的组态。
在一种实现方式中,可以在组态软件中,配置各可编程逻辑控制器中各针脚的连接关系。进一步的,当一针脚与另一针脚具有连接关系时,可以使用一连接线连接这两个针脚。
进一步的,组态软件可以使用连线算法来实现自动连线的功能。
目前,连线算法主要有dijkstra算法、manhattan算法和sugiyama算法等。其中,dijkstra算法和manhattan算法适用于寻路优化,如寻找最短路径,即寻找最短的连线。sugiyama算法则较为复杂,多用于星型网络拓扑。
但这些算法只解决了最短路径的问题,无法实现连接线之间的互相避让,容易造成因连接线多次重叠,而造成布线结构复杂,不利工程人员查看的问题,从而无法满足自动化控制领域中图形组态的需求。
技术实现要素:
本发明的目的在于提出一种逻辑元件的连线避让方法、装置及存储介质,实现图形编程中各连接线的避让,优化连接线的布局、增强图形可读性,提高工程人员的使用效率的技术效果。
为实现上述目的,本申请第一方面提供了一种逻辑元件的连线避让方法,包括:
确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;
根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;
按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让。
进一步地,所述线型包括:第一线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的右下方时,确定所述连接线为第一线型;
其中,所述第一线型的连接线中设置有两个拐点,所述连接线为依次连接所述输出针脚、两个所述拐点和所述输入针脚的下折弯线。
进一步地,所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
当一所述逻辑元件具有多条第一线型的连接线输出时,在靠近所述逻辑元件的位置设置第一避让区域;
在所述第一避让区域设置每一所述第一线型的连接线的拐点,以使每一所述第一线型的连接线在所述第一避让区域中互相避让。
进一步地,所述线型包括:第二线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的右上方时,确定所述连接线为第二线型;
其中,所述第二线型的连接线中设置有两个拐点,所述连接线为依次连接所述输出针脚、两个所述拐点和所述输入针脚的上折弯线。
进一步地,所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
当一所述逻辑元件具有多条第二线型的连接线输入时,在靠近所述逻辑元件的位置设置第二避让区域;
在所述第二避让区域设置每一所述第二线型的连接线的拐点,以使每一所述第二线型的连接线在所述第二避让区域中互相避让。
进一步地,所述线型包括:第三线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的左侧、且所述输入针脚所属的逻辑元件与所述输出针脚所属的逻辑元件之间在竖直方向的间隙大于零时,确定所述连接线为第三线型;
其中,所述第三线型的连接线设置有四个拐点,所述连接线为依次连接所述输出针脚、四个所述拐点和所述输入针脚的“s”型折弯线。
进一步地,所述逻辑元件包括第一逻辑元件和第二逻辑元件;所述第一逻辑元件的输出针脚与所述第二逻辑元件的输入针脚连接有多条第三线型的连接线;
所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
在靠近所述第一逻辑元件的位置设置第三避让区域;
在所述第一逻辑元件与所述第二逻辑元件之间的、竖直方向的间隙设置第四避让区域;
在靠近所述第二逻辑元件的位置设置第五避让区域;
在所述第三避让区域设置第一拐点,所述第四避让区域设置第二拐点和第三拐点,在所述第五避让区域设置第四拐点,以使每一所述第三线型的连接线在所述第三避让区域、所述第四避让区域和所述第五避让区域中互相避让。
进一步地,所述线型包括:第四线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的左侧、且所述输入针脚所属的逻辑元件与所述输出针脚所属的逻辑元件之间在竖直方向的间隙小于等于零时,确定所述连接线为第四线型;
其中,所述第四线型的连接线设置有四个拐点,所述连接线为依次连接所述输出针脚、四个所述拐点和所述输入针脚的“u”型折弯线。
进一步地,所述逻辑元件包括第三逻辑元件和第四逻辑元件;所述第三逻辑元件的输出针脚与所述第四逻辑元件的输入针脚连接有多条第四线型的连接线;
所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
在靠近所述第三逻辑元件的位置设置第六避让区域;
在所述第三逻辑元件与所述第四逻辑元件的下方设置第七避让区域;
在靠近所述第四逻辑元件的位置设置第八避让区域;
在所述第六避让区域设置第一拐点,所述第七避让区域设置第二拐点和第三拐点,在所述第八避让区域设置第四拐点,以使每一所述第四线型的连接线在所述第六避让区域、所述第七避让区域和所述第八避让区域中互相避让。
进一步地,还包括:
当一所述逻辑元件在同一侧存在多条不同线型的连接线上下交错时,对上下交错的所述连接线进行避让处理,使得所有的所述连接线相互避让。
进一步地,所述对上下交错的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
当上下交错的所述连接线从所述逻辑元件输出时,往上折弯的连接线避让往下折弯的连接线;
当上下交错的所述连接线输入所述逻辑元件时,往下折弯的连接线避让往上折弯的连接线。
为实现上述目的,本申请第二方面提供了一种逻辑元件的连线避让装置,包括:
连接线确定模块,用于确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;
线型确定模块,用于根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;
避让模块,用于按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让。
为实现上述目的,本申请第三方面提供了一种逻辑元件的连线避让设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一所述的逻辑元件的连线避让方法。
为实现上述目的,本申请第四方面提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面中任一所述的逻辑元件的连线避让方法。
由上可见,本申请提供的技术方案,通过确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,解决了逻辑元件之间的连接线相互重叠而带来的图形编程中布局复杂、可读性差的问题,实现图形编程中各连接线的避让,优化连接线的布局、增强图形可读性,提高工程人员的使用效率的技术效果。
附图说明
图1为本发明实施例1中提供的一种逻辑元件的连线避让方法的流程图;
图2为本发明实施例1中提供的一种逻辑元件的连线避让的示意图;
图3为本发明实施例3中提供的一种逻辑元件的连线避让装置的结构示意图;
图4为本发明实施例4提供的一种逻辑元件的连线避让设备的结构示意图。
具体实施方式
以下实施例用于说明本发明,但不用来限制本发明的范围。
实施例1
本申请提供一种逻辑元件的连线避让方法,该方法可以由逻辑元件的连线避让装置来执行,该逻辑元件的连线避让装置可以通过软件和/或硬件的方式实现,并集成在可进行在逻辑元件的连线避让设备中。可选的,该逻辑元件的连线避让设备包括但不限定于电脑、服务器等终端。本实施例中,以该逻辑元件的连线避让设备为电脑为例进行详细说明,进一步地,该电脑中可以安装有组态软件,可以用于对逻辑元件进行组态,具体的,可以用于执行本实施例中提供的逻辑元件的连线避让方法。
图1为本发明实施例1中提供的一种逻辑元件的连线避让方法的流程图,图2为本发明实施例1中提供的一种逻辑元件的连线避让的示意图,参照图1,该方法可以包括如下的步骤:
s110、确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚。
本实施例中,逻辑元件可以是自动控制领域中的电子元件,如可编程逻辑控制器或其他控制器。在组态软件中,可以使用图形来表示该逻辑元件。另外,逻辑元件上设置有输入针脚和输出针脚,同样可以在上述的图形中引出针脚进行表示。示例性的,参照图2,b1、b2、b3和b4均为逻辑元件对应的图形。
进一步地,本实施例中,输入针脚和输出针脚可以各自分布于逻辑元件中的一侧,如参照图2,输入针脚位于逻辑元件的左侧,输出针脚位于逻辑元件的右侧。
在一具体的实施例中,在进行组态时,可以将逻辑元件对应的图形拖曳到组态软件的组态界面中。进一步的,还可以在组态软件中设置组态界面中各逻辑元件中各针脚(包括输入针脚和输出针脚)之间的连接关系。凡是具有连接关系的两针脚,均可以确定存在一连接线将两针脚连接。
s120、根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型。
本实施例中,线型为连接线的形状。一般的,连接线中设置有拐点,连接线的形状可以根据拐点的个数和位置进行确定。进一步的,本实施例中,线型可以包括第一线型、第二线型、第三线型和第四线型等。
其中,第一线型的连接线中设置有两个拐点,连接线为依次连接输出针脚、两个拐点和输入针脚的下折弯线,如图2中的连接线e1、e2、e3、e4和e5等。
其中,第二线型的连接线中设置有两个拐点,连接线为依次连接输出针脚、两个拐点和输入针脚的上折弯线,如图2中的连接线e6、e7、e8、e9和e14等。
其中,第三线型的连接线设置有四个拐点,连接线为依次连接输出针脚、四个拐点和输入针脚的“s”型折弯线,如图2中的连接线e10、e11、e12和e13等。
其中,第四线型的连接线设置有四个拐点,连接线为依次连接输出针脚、四个拐点和输入针脚的“u”型折弯线,如图2中的连接线e16。
本实施例中,输入针脚和输出针脚之间的相对位置,表示的是输入针脚在输出针脚的左边、右边、左上、右上、左下和右下等位置关系。
进一步地,本实施例中,可以根据输入针脚和输出针脚之间的相对位置,将连接线的线型设置为第一线型、第二线型、第三线型和第四线型中的一种。
s130、按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让。
本实施例中,预先设定的避让方式可以设置为至少包括:
方式1:对应于第一线型,下折弯线在逻辑元件中输出针脚所在的一侧避让;
方式2:对应于第二线型,上折弯线在逻辑元件中输入针脚所在的一侧避让。
方式3:对应于第三线型,‘s’型折弯线的在两逻辑元件的中间位置避让;
方式4:对应于第四线型,‘u’型折弯线的在两逻辑元件的下方避让。
进一步地,在上述4种避让方式的基础上,还可以设置避让方式包括:
方式5:当一逻辑元件在同一侧存在多条不同线型的连接线上下交错时,对上下交错的连接线互相避让,如图2中逻辑元件b3中同一侧的连接线e13避让连接线e15;逻辑元件b4中同一侧的连接线e14避让连接线e10、e11和e12。
具体的,本实施例中,可以是通过设置连接线上拐点的位置,来对连接线实现上述的5种避让方式。
本实施例提供的技术方案中,通过确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,解决了逻辑元件之间的连接线相互重叠而带来的图形编程中布局复杂、可读性差的问题,实现图形编程中各连接线的避让,优化连接线的布局、增强图形可读性,提高工程人员的使用效率的技术效果。
在上述技术方案的基础上,本实施例中,将对如何确定连接线上的拐点的位置,来实现连接线的相互避让,进行详细的描述。
本实施例中,可以设置连接上的拐点序列p=[p0,…,pi]=[(x0,y0),…,(xi,yi)],其中,pi为连接线上的第i个拐点,其坐标可以表示为(xi,yi)。
另外,逻辑元件的引脚还可以连接包含块v,如图2中的“out_var1”、“out_var2”、“out_var3”、“int_var1”、“int_var2”和“int_var4”等。进一步的,包含块v的宽高分别为hv和wv,多个包含块时取宽高最大值。
本实施例中,每一连接线用于连接一源逻辑元件(source)的输出针脚与另一目标逻辑元件(target)的输入针脚。
其中,输出针脚的位置可以表示为(xp1,yp1),输出针脚的位置可以表示为(xp2,yp2)。
本实施例中,逻辑元件的位置可以使用逻辑元件对应的图形的左上角的坐标表示。如源逻辑元件(source)的位置可以表示为(xb1,yb1),目标逻辑元件(target)的位置可以表示为(xb2,yb2)。
进一步地,源逻辑元件(source)的宽高可以表示为(wb1,hb1),目标逻辑元件(target)的宽高可以表示为(wb2,hb2)。
为了表述清楚,本实施例中,将对不同线型对应的不同避让方式进行分类描述。
1、第一线型
本实施例中,当输入针脚在输出针脚的右下方时,确定连接线为第一线型。
在一具体的实施例中,当xp2>xp1且yp2>yp1时,可以确定连接线的线型为第一线型,如图2中的连接线e3、e4和e15等。
进一步地,参照图2,当一逻辑元件具有多条第一线型的连接线输出时,在靠近逻辑元件的位置设置第一避让区域21;在第一避让区域21设置每一第一线型的连接线的拐点,以使每一第一线型的连接线在第一避让区域21中互相避让。
在一具体的实施例中,当xp2>xp1且yp2>yp1时,可以在靠近源逻辑元件(source)的位置设置第一避让区域21,并在第一避让区域21设置每一第一线型的连接线的拐点p0和p1。
进一步的,若第一线型的连接线下方不存在包含块v,如图2中的连接线e3和e4,对其右侧下方所有向下连接线计数为n,则其拐点的位置可以使用如下公式计算:
p0=(xp1 n*gap gap,yp1)
p1=(xp1 n*gap gap,yp2)
本实施例中,可以将组态界面进行栅格化,每个小格子的边长为gap,小格子的边可以用于绘制连接线。本实施例中,以gap等于5为例进行说明。
进一步地,若第一线型的连接线下方存在包含块v,如图2中的连接线e1和e2,对其右侧下方所有向下连接线计数为n,右侧下方的包含块v的宽度为wv,则其拐点的位置可以使用如下公式计算:
p0=(xp1 max(n*gap,wv) gap,yp1)
p1=(xp1 max(n*gap,wv) gap,yp2)
在一具体的实施例中,以连接线e2为例,输入针脚(xp2,yp2)的坐标值为(185,55),输出针脚(xp1,yp1)的坐标值为(50,20),则满足xp2>xp1且yp2>yp1,也就是,输入针脚(xp2,yp2)在输出针脚(xp1,yp1)的右下方,可以将连接线e2的线型设置为第一线型。
进一步的,可以统计逻辑元件b1中的、在连接线e2中输出针脚(xp1,yp1)下的所有向下连接线(包含自身)计数为3,包含块“out_var2”的宽度wv=40,则x0=50 max(3*5,40)=90。进而,可以求得连接线e2的拐点序列为[(90,20),(90,55)]。
2、第二线型
本实施例中,当输入针脚在输出针脚的右上方时,确定连接线为第二线型。
在一具体的实施例中,当xp2>xp1且yp1>yp2时,可以确定连接线的线型为第二线型,如图2中的连接线e6、e7、e8和e9等。
进一步地,当一逻辑元件具有多条第二线型的连接线输入时,在靠近逻辑元件的位置设置第二避让区域22;在第二避让区域22设置每一第二线型的连接线的拐点,以使每一第二线型的连接线在第二避让区域22中互相避让。
在一具体的实施例中,当xp2>xp1且yp1>yp2时,可以在靠近目标逻辑元件(target)的位置设置第二避让区域22,并在第二避让区域22设置每一第二线型的连接线的拐点p0和p1。
进一步的,若第二线型的连接线下方不存在包含块v,如图2中的连接线e8和e9,对其左侧下方所有向下连接线计数为n,则其拐点的位置可以使用如下公式计算:
p0=(xp2–n*gap–gap,yp2)
p1=(xp2–n*gap–gap,yp1)
进一步地,若第二线型的连接线下方存在包含块v,如图2中的连接线e6、e7和e14,对其左侧下方所有向下连接线计数为n,左侧下方的包含块v的宽度为wv,则其拐点的位置可以使用如下公式计算:
p0=(xp2–max(n*gap,wv)–gap,yp2)
p1=(xp2–max(n*gap,wv)–gap,yp1)
3、第三线型和第四线型
本实施例中,当输入针脚在输出针脚的左侧时,若输入针脚所属的逻辑元件与输出针脚所属的逻辑元件之间在竖直方向的间隙大于零,则确定连接线为第三线型;若输入针脚所属的逻辑元件与输出针脚所属的逻辑元件之间在竖直方向的间隙小于等于零,则确定连接线为第四线型。
本实施例中,输入针脚所属的逻辑元件与输出针脚所属的逻辑元件之间在竖直方向的间隙可以使用δy表示,δy=yb2–yb1 hb1。
3.1、针对第三线型
当xp1>xp2且δy>0时,可以确定连接线的线型为第三线型。
如,当xp1>xp2且yp2>yp1,且δy>0时,可以确定连接线的线型为第三线型,如图2中的连接线e10、e11和e12等。
又如,当xp1>xp2且yp1>yp2,且δy>0时,可以确定连接线的线型为第三线型,如图2中的连接线e13。
进一步地,本实施例中,假设逻辑元件包括第一逻辑元件和第二逻辑元件,其中,第一逻辑元件的输出针脚与第二逻辑元件的输入针脚连接有多条第三线型的连接线。即第一逻辑元件为源逻辑元件(source),第二逻辑元件为目标逻辑元件(target)。
进一步地,参照图2,可以在靠近第一逻辑元件的位置设置第三避让区域23;在第一逻辑元件与第二逻辑元件之间的、竖直方向的间隙设置第四避让区域24;在靠近第二逻辑元件的位置设置第五避让区域25;在第三避让区域23设置第一拐点p0,第四避让区域24设置第二拐点p1和第三拐点p2,在第五避让区域25设置第四拐点p3,以使每一第三线型的连接线在第三避让区域23、第四避让区域24和第五避让区域25中互相避让。
3.1.1、针对xp1>xp2且yp2>yp1的情况
如图2中的连接线e10、e11和e12等,可以确定第一逻辑元件(source)与第二逻辑元件(target)之间所有第三线型的连接线计数n0。确定当前计算的连接线的索引i,如当前计算的连接线为e12,该索引i为3。进一步的,对第一逻辑元件(source)右侧的、在当前计算的连接线所在位置下方的所有向下连接线计数n1;对第二逻辑元件(target)左侧的、在当前计算的连接线所在位置下方所有向上连线计数n2;取第一逻辑元件(source)与第二逻辑元件(target)之间在竖直方向的间隙δy=yb2–yb1 hb1。
若δy>0,则拐点的位置可以使用如下公式计算:
p0=(xp1 max(n1*gap gap,wv1),yp1)
p1=(xp1 max(n1*gap gap,wv1),yb1 (δy ((n0/2)–i)*gap)/2)
p2=(xp2–max(n2*gap–gap,wv2),yb1 (δy ((n0/2)–i)*gap)/2)
p3=(xp2–max(n2*gap–gap,wv2),yp2)
3.1.2、针对xp1>xp2且yp1>yp2的情况
如图2中的连接线e13,可以确定第一逻辑元件(source)与第二逻辑元件(target)之间所有第三线型的连接线计数n0。确定当前计算的连接线的索引i,如当前计算的连接线为e13,该索引i为1。进一步的,对第一逻辑元件(source)右侧的、在当前计算的连接线所在位置上方的所有向上连接线计数n1;对第二逻辑元件(target)左侧的、在当前计算的连接线所在位置下方所有向下连线计数n2;取第一逻辑元件(source)与第二逻辑元件(target)之间在竖直方向的间隙δy=yb2–yb1 hb1。
若δy>0,则拐点的位置可以使用如下公式计算:
p0=(xp1 max(n1*gap,wv1) gap,yp1)
p1=(xp1 max(n1*gap,wv1) gap,yb2–(δy ((n0/2)–i)*gap)/2)
p2=(xp2–max(n2*gap,wv2)–gap,yb2–(δy ((n0/2)–i)*gap)/2)
p3=(xp2–max(n2*gap,wv2)–gap,yp2)
3.2、针对第四线型
当xp1>xp2且δy<0时,可以确定连接线的线型为第四线型。
如,当xp1>xp2且yp2>yp1,且δy<0时,可以确定连接线的线型为第四线型,如图2中的连接线e16。
又如,当xp1>xp2且yp1>yp2,且δy<0时,可以确定连接线的线型为第四线型。
进一步地,本实施例中,假设逻辑元件包括第三逻辑元件和第四逻辑元件;第三逻辑元件的输出针脚与第四逻辑元件的输入针脚连接有多条第四线型的连接线。即第三逻辑元件为源逻辑元件(source),第四逻辑元件为目标逻辑元件(target)。
进一步地,参照图2,在靠近第三逻辑元件的位置设置第六避让区域26;在第三逻辑元件与第四逻辑元件的下方设置第七避让区域27;在靠近第四逻辑元件的位置设置第八避让区域28;在第六避让区域26设置第一拐点p0,第七避让区域27设置第二拐点p1和第三拐点p2,在第八避让区域28设置第四拐点p3,以使每一第四线型的连接线在第六避让区域26、第七避让区域27和第八避让区域28中互相避让。
3.2.1、针对xp1>xp2且yp2>yp1的情况
可以确定第三逻辑元件(source)与第四逻辑元件(target)之间所有第三线型的连接线计数n0。确定当前计算的连接线的索引i,如当前计算的连接线为e12,该索引i为3。进一步的,对第三逻辑元件(source)右侧的、在当前计算的连接线所在位置下方的所有向下连接线计数n1;对第四逻辑元件(target)左侧的、在当前计算的连接线所在位置下方所有向上连线计数n2;取第三逻辑元件(source)与第四逻辑元件(target)之间在竖直方向的间隙δy=yb2–yb1 hb1。
若δy<0,如图2中的连接线e16,则拐点的位置可以使用如下公式计算:
p0=(xp1 max(n1*gap,wv1) gap,yp1)
p1=(xp1 max(n1*gap,wv1) gap,max(yb1 hb1,yb2 hb2) i*gap)
p2=(xp2–max(n2*gap,wv2)–gap,max(yb1 hb1,yb2 hb2) i*gap)
p3=(xp2–max(n2*gap,wv2)–gap,yp2)
3.1.2、针对xp1>xp2且yp1>yp2的情况
可以确定第三逻辑元件(source)与第四逻辑元件(target)之间所有第三线型的连接线计数n0。确定当前计算的连接线的索引i,如当前计算的连接线为e13,该索引i为1。进一步的,对第三逻辑元件(source)右侧的、在当前计算的连接线所在位置上方的所有向上连接线计数n1;对第四逻辑元件(target)左侧的、在当前计算的连接线所在位置下方所有向下连线计数n2;取第三逻辑元件(source)与第四逻辑元件(target)之间在竖直方向的间隙δy=yb2–yb1 hb1。
若δy<0,则拐点的位置可以使用如下公式计算:
p0=(xp1 max(n1*gap,wv1) gap,yp1)
p1=(xp1 max(n1*gap,wv1) gap,max(yb1 hb1,yb2 hb2) i*gap)
p2=(xp2–max(n2*gap,wv2)–gap,max(yb1 hb1,yb2 hb2) i*gap)
p3=(xp2–max(n2*gap,wv2)–gap,yp2)
在上述实施例的基础上,当一逻辑元件在同一侧存在多条不同线型的连接线上下交错时,对上下交错的连接线互相避让,如图2中逻辑元件b3中同一侧的连接线e13避让连接线e15;逻辑元件b4中同一侧的连接线e14避让连接线e10、e11和e12。
具体的,对于逻辑元件同一侧连接线的上下交错,可以分两种情况,分别对临近的拐点pi的x坐标进行修正。其中,临近的拐点pi已经通过上述各线型对应的拐点确定方式计算完毕。
本实施例中,假设一逻辑元件在某一侧的所有连接线在x轴方向的最大偏移为δx=max(ni*gap gap,wvi),其中,i表示各连接线的索引。
第一种情况:当上下交错的所述连接线从所述逻辑元件输出时,往上折弯的连接线避让往下折弯的连接线;
具体的,在逻辑元件中输出针脚的一侧存在多条不同线型的连接线上下交错,且所有连接线均满足yp2<yp1,如逻辑元件b3的输出针脚一侧所示,所有从下方出的连接线拐点pi在x轴方向应加上所有从上方出的连接线的最大偏移,表示为:
x=pix δx
如,逻辑元件b3中的从下方出的连接线e13应该避让从上方出的连接线e15,从图2中可看出,δx=gap,连接线e13从逻辑元件b3输出经过的第一个拐点p0应当向右避让一个gap的距离。
第二种情况:当上下交错的所述连接线输入所述逻辑元件时,往下折弯的连接线避让往上折弯的连接线。
具体的,在逻辑元件中输入针脚的一侧存在多条不同线型的连接线上下交错且所有连接线均满足yp2>yp1,如逻辑元件b4的输入针脚的一侧所示,所有从上方进的连接线拐点pi在x轴方向应减去所有从下方进的连接线的最大偏移:
x=pix-δx
如,逻辑元件b4中的从上方进的连接线e14应该避让从下方进的连接线e10、e11和e12,从图2中可看出,δx等于连接线e10的偏移,连接线e14输入逻辑元件b4之前的最后一个拐点应当向左避让连接线e10一个gap的距离。
实施例2
本申请提供一种逻辑元件的连线避让装置,该逻辑元件的连线避让装置可以通过软件和/或硬件的方式实现,并集成在可进行在逻辑元件的连线避让设备中。可选的,该逻辑元件的连线避让设备包括但不限定于电脑、服务器等终端。本实施例中,以该逻辑元件的连线避让设备为服务器为例进行详细说明。
图3为本发明实施例2中提供的一种逻辑元件的连线避让装置的结构示意图,参照图3,该装置可以包括如下的结构:连接线确定模块310、线型确定模块32和避让模块330。
连接线确定模块310,用于确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚。
线型确定模块320,用于根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型。
避让模块330,用于按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让。
本实施例提供的技术方案中,通过确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,解决了逻辑元件之间的连接线相互重叠而带来的图形编程中布局复杂、可读性差的问题,实现图形编程中各连接线的避让,优化连接线的布局、增强图形可读性,提高工程人员的使用效率的技术效果。
在上述技术方案的基础上,所述线型包括:第一线型;
所述线型确定模块320,包括:
第一线型确定单元,用于当所述输入针脚在所述输出针脚的右下方时,确定所述连接线为第一线型;其中,所述第一线型的连接线中设置有两个拐点,所述连接线为依次连接所述输出针脚、两个所述拐点和所述输入针脚的下折弯线。
在上述技术方案的基础上,所述避让模块330,具体用于:
当一所述逻辑元件具有多条第一线型的连接线输出时,在靠近所述逻辑元件的位置设置第一避让区域;
在所述第一避让区域设置每一所述第一线型的连接线的拐点,以使每一所述第一线型的连接线在所述第一避让区域中互相避让。
在上述技术方案的基础上,所述线型包括:第二线型;
所述线型确定模块320,包括:
第二线型确定单元,用于当所述输入针脚在所述输出针脚的右上方时,确定所述连接线为第二线型;其中,所述第二线型的连接线中设置有两个拐点,所述连接线为依次连接所述输出针脚、两个所述拐点和所述输入针脚的上折弯线。
在上述技术方案的基础上,所述避让模块330,具体用于:
当一所述逻辑元件具有多条第二线型的连接线输入时,在靠近所述逻辑元件的位置设置第二避让区域;
在所述第二避让区域设置每一所述第二线型的连接线的拐点,以使每一所述第二线型的连接线在所述第二避让区域中互相避让。
在上述技术方案的基础上,所述线型包括:第三线型;
所述线型确定模块320,包括:
第三线型确定单元,用于当所述输入针脚在所述输出针脚的左侧、且所述输入针脚所属的逻辑元件与所述输出针脚所属的逻辑元件之间在竖直方向的间隙大于零时,确定所述连接线为第三线型;其中,所述第三线型的连接线设置有四个拐点,所述连接线为依次连接所述输出针脚、四个所述拐点和所述输入针脚的“s”型折弯线。
在上述技术方案的基础上,所述逻辑元件包括第一逻辑元件和第二逻辑元件;所述第一逻辑元件的输出针脚与所述第二逻辑元件的输入针脚连接有多条第三线型的连接线;
所述避让模块330,具体用于:
在靠近所述第一逻辑元件的位置设置第三避让区域;
在所述第一逻辑元件与所述第二逻辑元件之间的、竖直方向的间隙设置第四避让区域;
在靠近所述第二逻辑元件的位置设置第五避让区域;
在所述第三避让区域设置第一拐点,所述第四避让区域设置第二拐点和第三拐点,在所述第五避让区域设置第四拐点,以使每一所述第三线型的连接线在所述第三避让区域、所述第四避让区域和所述第五避让区域中互相避让。
在上述技术方案的基础上,所述线型包括:第四线型;
所述线型确定模块320,包括:
第四线型确定单元,用于当所述输入针脚在所述输出针脚的左侧、且所述输入针脚所属的逻辑元件与所述输出针脚所属的逻辑元件之间在竖直方向的间隙小于等于零时,确定所述连接线为第四线型;其中,所述第四线型的连接线设置有四个拐点,所述连接线为依次连接所述输出针脚、四个所述拐点和所述输入针脚的“u”型折弯线。
在上述技术方案的基础上,所述逻辑元件包括第三逻辑元件和第四逻辑元件;所述第三逻辑元件的输出针脚与所述第四逻辑元件的输入针脚连接有多条第四线型的连接线;
所述避让模块330,具体用于:
在靠近所述第三逻辑元件的位置设置第六避让区域;
在所述第三逻辑元件与所述第四逻辑元件的下方设置第七避让区域;
在靠近所述第四逻辑元件的位置设置第八避让区域;
在所述第六避让区域设置第一拐点,所述第七避让区域设置第二拐点和第三拐点,在所述第八避让区域设置第四拐点,以使每一所述第四线型的连接线在所述第六避让区域、所述第七避让区域和所述第八避让区域中互相避让。
在上述技术方案的基础上,该装置还包括:
上下交错避让模块,用于当一所述逻辑元件在同一侧存在多条不同线型的连接线上下交错时,对上下交错的所述连接线进行避让处理,使得所有的所述连接线相互避让。
在上述技术方案的基础上,所述上下交错避让模块,具体用于:
当上下交错的所述连接线从所述逻辑元件输出时,往上折弯的连接线避让往下折弯的连接线;
当上下交错的所述连接线输入所述逻辑元件时,往下折弯的连接线避让往上折弯的连接线。
实施例3
图4为本发明实施例3提供的一种逻辑元件的连线避让设备的结构示意图。如图4所示,该逻辑元件的连线避让设备包括:处理器40、存储器41、输入装置42以及输出装置43。该逻辑元件的连线避让设备中处理器40的数量可以是一个或者多个,图4中以一个处理器40为例。该逻辑元件的连线避让设备中存储器41的数量可以是一个或者多个,图4中以一个存储器41为例。该逻辑元件的连线避让设备的处理器40、存储器41、输入装置42以及输出装置43可以通过总线或者其他方式连接,图4中以通过总线连接为例。该逻辑元件的连线避让设备可以是电脑和服务器等。本实施例以逻辑元件的连线避让设备为服务器进行详细说明,该服务器可以是独立服务器或集群服务器。
存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例所述的逻辑元件的连线避让方法对应的程序指令/模块(例如,逻辑元件的连线避让装置中的连接线确定模块310、线型确定模块32和避让模块330)。存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置42可用于接收输入的数字或者字符信息,以及产生与逻辑元件的连线避让设备的设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。输出装置43可以包括扬声器等音频设备。需要说明的是,输入装置42和输出装置43的具体组成可以根据实际情况设定。
处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的逻辑元件的连线避让方法。
实施例4
本发明实施例4还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种逻辑元件的连线避让方法,包括:
确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;
根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;
按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的逻辑元件的连线避让方法操作,还可以执行本发明任意实施例所提供的逻辑元件的连线避让方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的逻辑元件的连线避让方法。
值得注意的是,上述逻辑元件的连线避让装置中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
在本说明书的描述中,参考术语“在一实施例中”、“在又一实施例中”、“示例性的”或“在具体的实施例中”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
虽然,上文中已经用一般性说明、具体实施方式及试验,对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
1.一种逻辑元件的连线避让方法,其特征在于,包括:
确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;
根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;
按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让。
2.根据权利要求1所述的方法,其特征在于,所述线型包括:第一线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的右下方时,确定所述连接线为第一线型;
其中,所述第一线型的连接线中设置有两个拐点,所述连接线为依次连接所述输出针脚、两个所述拐点和所述输入针脚的下折弯线。
3.根据权利要求2所述的方法,其特征在于,所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
当一所述逻辑元件具有多条第一线型的连接线输出时,在靠近所述逻辑元件的位置设置第一避让区域;
在所述第一避让区域设置每一所述第一线型的连接线的拐点,以使每一所述第一线型的连接线在所述第一避让区域中互相避让。
4.根据权利要求1所述的方法,其特征在于,所述线型包括:第二线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的右上方时,确定所述连接线为第二线型;
其中,所述第二线型的连接线中设置有两个拐点,所述连接线为依次连接所述输出针脚、两个所述拐点和所述输入针脚的上折弯线。
5.根据权利要求4所述的方法,其特征在于,所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
当一所述逻辑元件具有多条第二线型的连接线输入时,在靠近所述逻辑元件的位置设置第二避让区域;
在所述第二避让区域设置每一所述第二线型的连接线的拐点,以使每一所述第二线型的连接线在所述第二避让区域中互相避让。
6.根据权利要求1所述的方法,其特征在于,所述线型包括:第三线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的左侧、且所述输入针脚所属的逻辑元件与所述输出针脚所属的逻辑元件之间在竖直方向的间隙大于零时,确定所述连接线为第三线型;
其中,所述第三线型的连接线设置有四个拐点,所述连接线为依次连接所述输出针脚、四个所述拐点和所述输入针脚的“s”型折弯线。
7.根据权利要求6所述的方法,其特征在于,所述逻辑元件包括第一逻辑元件和第二逻辑元件;所述第一逻辑元件的输出针脚与所述第二逻辑元件的输入针脚连接有多条第三线型的连接线;
所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
在靠近所述第一逻辑元件的位置设置第三避让区域;
在所述第一逻辑元件与所述第二逻辑元件之间的、竖直方向的间隙设置第四避让区域;
在靠近所述第二逻辑元件的位置设置第五避让区域;
在所述第三避让区域设置第一拐点,所述第四避让区域设置第二拐点和第三拐点,在所述第五避让区域设置第四拐点,以使每一所述第三线型的连接线在所述第三避让区域、所述第四避让区域和所述第五避让区域中互相避让。
8.根据权利要求1所述的方法,其特征在于,所述线型包括:第四线型;
所述根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型,包括:
当所述输入针脚在所述输出针脚的左侧、且所述输入针脚所属的逻辑元件与所述输出针脚所属的逻辑元件之间在竖直方向的间隙小于等于零时,确定所述连接线为第四线型;
其中,所述第四线型的连接线设置有四个拐点,所述连接线为依次连接所述输出针脚、四个所述拐点和所述输入针脚的“u”型折弯线。
9.根据权利要求8所述的方法,其特征在于,所述逻辑元件包括第三逻辑元件和第四逻辑元件;所述第三逻辑元件的输出针脚与所述第四逻辑元件的输入针脚连接有多条第四线型的连接线;
所述按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
在靠近所述第三逻辑元件的位置设置第六避让区域;
在所述第三逻辑元件与所述第四逻辑元件的下方设置第七避让区域;
在靠近所述第四逻辑元件的位置设置第八避让区域;
在所述第六避让区域设置第一拐点,所述第七避让区域设置第二拐点和第三拐点,在所述第八避让区域设置第四拐点,以使每一所述第四线型的连接线在所述第六避让区域、所述第七避让区域和所述第八避让区域中互相避让。
10.根据权利要求2-9任一所述的方法,其特征在于,还包括:
当一所述逻辑元件在同一侧存在多条不同线型的连接线上下交错时,对上下交错的所述连接线进行避让处理,使得所有的所述连接线相互避让。
11.根据权利要求10所述的方法,其特征在于,所述对上下交错的所述连接线进行避让处理,使得所有的所述连接线相互避让,包括:
当上下交错的所述连接线从所述逻辑元件输出时,往上折弯的连接线避让往下折弯的连接线;
当上下交错的所述连接线输入所述逻辑元件时,往下折弯的连接线避让往上折弯的连接线。
12.一种逻辑元件的连线避让装置,其特征在于,包括:
连接线确定模块,用于确定至少两个逻辑元件之间所有的连接线,每一所述连接线用于连接一所述逻辑元件的输出针脚与另一所述逻辑元件的输入针脚;
线型确定模块,用于根据所述输入针脚和所述输出针脚的相对位置,确定所述连接线的线型;
避让模块,用于按照预先设定的与所述线型相关联的避让方式对位于所述逻辑元件同一侧的、同种线型的所述连接线进行避让处理,使得所有的所述连接线相互避让。
13.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-11中任一所述的逻辑元件的连线避让方法。
技术总结