文/王东明
道路交通标志作为道路安全设施必要的组成部分,影响着道路使用者的方方面面。道路交通标志结构设计是保障交通标志结构能够正常使用的前提,为了能使复杂、繁琐的运算简单化、有效提升工作效率,我们将计算机程序引入至结构运算中。目前,市面多见的交通安全及结构设计软件较多,运行及界面比较丰富,但是针对标志结构设计的软件可以说得上是“凤毛麟角”,这使得在实际应用中遇到特殊标志结构仍需要进行手工或编制excel 表进行电算,给设计人员带来了不少的麻烦。本文针对这种情况,提出用Python 语言编制相应结构设计验算软件,用来解决问题[1]。
无论是城市道路还是公路,目前道路交通标志结构的支撑形式常见的主要有以下几种:门式、单悬臂式、双悬臂式、单柱式、双柱式以及附着式,其中门式结构主要分为整体式管状门架结构及桁架结构两种。
标志结构设计中除恒载外,由于考虑标志所在地区离平坦空旷地面10m 高,因此要加上风荷载。譬如在北京城区,根据相应规范一般会选取重现期为50年一遇10min 的计算平均最大风速,即29.2m/s;而基础地基承载力应按地勘报告予以取值。一般来说,标志版面除小型单柱或附着版面会采用玻璃钢材质外,其余均使用铝合金板材。铝合金板材:标志结构主要材料为钢材,钢管型材一般采用Q235 钢或Q345 无缝钢管。铝材:标志板、滑动槽铝均采用防锈铝,牌号为5A02。
交通标志是一种长期使用的结构物,任何一个交通标志结构都必须经过计算验证,以确保在一定的使用年限之内,交通标志能够正常发挥作用。常用的标志结构计算方法有两种:一种是应用结构力学和材料力学的原理将标志结构简化为杆件体系,采用极限状态设计方法进行验算;另一种是采用有限单元法,近似计算求解。后者目前国内外计算软件都可以进行辅助设计,多用于复杂桁架结构;而前者在大部分结构设计当中都能通过极限状态法给出足够精确的结论结果,属于传统型验算方法。本文主要探讨研究以“极限状态设计”方法下的结构验算,其设计原则如下:
γ0(δGd + δQd)≤fd
式中,γ0 为结构重要性系数,交通标志结构安全等级按照二级考虑,该系数取1;δGd 为永久荷载在结构构件截面或连接中产生的应力效应;δQd 为可变荷载(主要为风载)在结构构件截面或连接中产生的应力效应。
应考虑荷载的短期效应组合,表达式为:
v=vG+vQ≤[V]
式中,v 为交通标志结构或构件中产生的变形值;vG 为永久荷载标准值在交通标志结构或构件中产生的变形值;vQ 为可变荷载标准值在交通标志结构或构件中产生的变形值;[V]为结构或构件的容许变形值。一般情况下,交通标志结构的基础不需要进行变形验算,按地基承载力确定基础底面积以及埋深。
Python 语言是由Guido van Rossum 于1990年代初设计的,起初仅仅是作为ABC 语言的一个延续,Python 语言真正计入高速的发展并广泛运用要追溯到2004年。目前市面上常用的Python 语言主要版本有Python2 系和Python3 系。Python 语言具有程序语句、语法简单明了,程序免费、开源,比较自由,相比较一些其他语言来讲运行速度快,兼容性和可植入性强,对搭建在其基础上的二次开发非常有优势。同时,Python 语言还拥有多种类型的“库”,方便使用者根据使用需求选择相应“库”的调用。但是Python 语言也有以下两个缺点:相比C 类语言,它的运行速度较慢(但是从本项目运行上来看,几乎可以忽略该缺点);可视性外观较差,简易程序的基础开发很便捷,如果对其进行visual 化的话对程序搭建要求比较复杂[2]。
市面上常用工程计算机编程语言,有Autolisp、MATLAB、Fortran2003、C、C++等。本程序选用Python 语言的原因,有以下几个方面:其自身属于脚本语言,小巧灵活,搭建速度快,极易投入使用;Python语言自带的math 库与MATLAB 在工程计算中应用上一样强大,且计算速度和搭建难度以及人机交互上,前者更有优势。
此次用Python 语言开发的程序基于windows XP操作系统以上即可运行,Python 选用3.7 版本。
此次用Python 语言所写的主程序以gui.py 是程序的入口文件,也是程序visual 化的关键环节。Python 自带很多强大的库资源,gui.py 就是调用了其自带的Tkinter 库。Tkinter 具有成熟、稳定的特点,其内部 设 有Label、Frame、Entry、Text、Button、Listbox、Scrollbar 等主要控件。譬如Button 绑定相应事件,当用户点击按钮即可触发后续操作,Entry 实例为软件提供了输入的窗口,从而方便用户进行参数输入。main.py 为程序的主体文件,通过不同数据条件的调入,根据计算分析,提供结果供使用人选取或进一步更改。此次main.py 中架构含有横梁、立柱验算、柱脚螺栓及法兰盘验算及基础验算三大模块,首先通过输入验算所需基础数据,然后通过分析计算进入一般受力分析,计算出的数据给出如何更改基础数据的结论,或者满足受力分析后进入下一阶段调试,最终输出验算结果,以便使用者记录或进行图纸的相应更改。math.py 为数学函数调用库,也是Python 语言自带常用科学计算模块,通过此模块调用各种科学函数可以解决结构验算上的各种问题。譬如,在做基础柱脚螺栓核验时,本程序采用盛金公式解决一元三次方程,通过输出结果,区别实数、复数,选取合理的数值,进行下一步验算。
一般来说,某一地区的交通标志结构,固定参数主要是立柱材质、版面材质等,但是不排除会有其他参数需要调制修改地方。由于笔者的工程项目大部分都在北京地区,所以程序自身数据选取的基本参数也以北京地方常用参数为基础。但是,对一个工程辅助程序本身而言,还应考虑其能够应用到不同的地域、不同的环境条件下,所以在本程序最开始参数输入的界面中加入一个控件用来修改与北京地区不同的参数,以适应不同地域的标志结构设计以及相应标志结构在标准提升时发生的变化,如图1 所示。
图1 单悬标志验算系统初始界面
通过对基础数据的确认,单击验算开始,开始对横梁根部最大正应力、横梁根部最大剪应力、横梁合成挠度、立柱正应力、立柱危险点验算、风荷载引起的立柱变形验算以及横梁的垂直总位移进行验算。点击验算开始后,如果验算成功,就会出现对话框以进行再一步,并继续进行柱脚螺栓、法兰盘验算及基础验算。当所有验算通过后,会显示验算成功后界面(如图2),同时根据结论进行修改图纸或进一步验算其他标志结构。
图2 单悬标志验算系统最终界面
目前北京市新机场高速北线、京新高速(北京段)、大件路等多条北京市、郊区公路标志结构均通采用过该软件进行验算复核及设计,并且都在正常运营使用中。
通过计算机编程语言的介入,大大提高了标志结构设计验算的速度,节约了比以往科学计算、EXCEL电子表格计算的30%以上的时间。基于Python 语言具有较强的包容性和广泛的介入性,不久本程序将会有效地把PYAutoCad、xlrd 等模块结合起来,进行基于Python 的Autocad 的二次开发,实现图纸、计算书一体化的验算软件。