系统扩展论文

2024-10-06

系统扩展论文(精选12篇)

系统扩展论文 篇1

摘要:利用B/S网络架构,通过数据库共享技术,实现了扩展性考评系统。系统扩展性好,可根据评委人数的增加智能化增加评委,评委打分机位不需要安装任何打分客户端,只需要配置合理IP地址,即可成为一名新增评委。考评主程序为Windows Form应用程序,由控制员操作,可对待考评人员考评顺序进行随机排序。考评人员按照随机排序顺序逐次答辩,考评题目为系统随机抽取,考评分数由计算机自动汇总计算,去掉最高分和最低分,取平均值,作为考评对象最终得分。评委打分结果自动入库,记录详尽,考评过程公平公正。

关键词:B/S架构,数据库共享,IP地址

1 B/S 网络架构简析

B/S结构即浏览器和服务器结构。它是随着Internet技术的兴起, 对C/S结构的一种变化或者改进的结构。在这种结构下, 用户工作界面是通过WWW浏览器来实现, 极少部分事物逻辑在 前端 (Browser) 实现 , 主要事物 逻辑在服 务器端(Server) 实现 , 形成所谓的三层3-tier结构。B/S结构是Web兴起后的一种网络结构模式, Web浏览器是客户端最主要的应用软件。这种模式统一了客户端, 将系统功能实现的核心部分集中到服务器上, 简化了系统的开发、维护和使用。客户机上只要安装了一个浏览器 (Browser), 如Netscape Naviga-tor或Internet Explorer, 服务器安 装Oracle、Sybase、informix或SQL Server等数据库。浏览器通过Web Server同数据库进行数据交互。这样就大大简化了客户端电脑荷载, 减轻了系统维护与 升级的成 本和工作 量 , 降低了用 户的总体 成本(TCO)。

2 考评系统设计与实现

本系统总体设计思路是: 首先设计数据库, 评委打分和考评人员答辩访问的是一个数据库, 要求对数据库设计合理,数据访问、改写、删除正常, 日志文件完备, 数据备份良好;其次, 设计评委打分程序, 采用B/S架构, 在操作主机上搭建局域网站, 配置合理IP地址, 评委打分各个机位可正常访问主机; 最后, 设计答辩系统, 采用C# Windows Form, 实现考评人员答辩顺序随机排序, 题目随机排序, 智能化显示评委人数及评分, 自动计算该考评对象最后得分。系统总体框架如图1所示。

2.1 数据库

本系统关 键所在就 是数据库 共享 , 采用了SQL Server2008数据库 , 评委表设计如表1所示。

IDpingwei IPpingweifenkaopinghao

其中ID为主键, pingwei IP记录评委IP地址, pingweifen记录当前评委打分分值, kaopinghao记录当前答辩人员ID号(具有唯一性 )。

考评人员表如表2所示。

其中ID为主键, name为考评人员名字, danwei为考评人员单位, kaopinghao为考评人员答辩序号 (由答辩模块随机排序确定 ) , biaoshi为考评人 员是否为 当前答辩 人员标示 ,zhuanye为考评人员答辩专业。

其中ID为主键, problem为试题题干, daan为试题答案,type为试题所属科目。

2.2 评委打分设计与技术实现

本模块开发程序采用C# 语言开发, 在操作主机 架设网站, IP地址配置为192.168.1.110。评委机位各个IP地址配置为192.168.1.*, 例如有10位评委, 只需将10台计算机IP地址配置为192.168.1.1~192.168.1.10, 需要增加评委时, 只需将IP地址加1即可, 通过截取各个机位IP地址字节, 便可识别是几号评委。例如, IP地址192.168.1.9号机位提交打分, 通过截取“192.168.1.9”字节的第10位之后字节“9”便可识别是9号评委提交的分数。评委打分界面通过Ajax技术, 50ms便刷新一次人员信息, 通过定时器读取当前人员信息, 评委根据当前人员答辩情况, 可作出评分, 并在最后通过提示提交至主机。

2.2.1 智能获取评委编号

智能获取各个评委机位IP地址, 就是在各个评委机位访问主机打分页面时, 识别其IP地址。其代码如下:

2.2.2 Ajax 技术

Ajax (Asynchronous Java Script And XML ), 是指一种创建交互式网页应用的网页开发技术。Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量 数据交换 ,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下, 对网页的某部分进行更新。传统的网页(不使用Ajax) 如果需要更新内容 , 必须重载整个网页页面。

Ajax不是一种新的编程语言 , 而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。使用Java Script向服务器提出请求并 处理响应 而不阻塞 用户。核 心对象XML-HTTPRequest。通过这个对象 , Java Script可在不重载页面的情况下与Web服务器交换数据。Ajax可使因特网应用程序更小、更快、更 友好。Ajax基于下列Web标准 : Java Script XML-HTMLCSS在Ajax中使用的Web标准已被良好定义 , 并被所有的主流浏览器支持。Ajax应用程序独立于浏览器和平台 。Web应用程序较桌面应用程序有诸多优势 ; 它们能够涉及广大的用户, 它们更易安装及维护, 也更易开 发。通过Ajax,因特网应用程序可以变得更完善、更友好。

2.3 答辩设计与技术实现

答辩模块采用了C# 预语言开发, 创建Windows Form程序 (桌面程序)。程序功能包括试题录入、修改、删除模块;考评人员录入、修改、删除模块; 考评人员随机排序 模块 ;试题随机抽取考评模块; 评委打分模块。

答辩流程为, 有公正人员开启考评人 员随机排 序按钮 ,所有考评人员在大屏幕滚动显示随机答辩序号, 等公正人员点停止按钮, 所有考评人员答辩顺序将在大屏幕按顺序排列,避免了之前提前抽签繁琐的答辩顺序确定。之后开始从1号答辩人员至最后一名答辩人员答辩。答辩过程抽取题目为随机从题库中抽取, 并对已抽试题做标记处理, 保证之后答辩人员不会抽到之前考评人员试题。于此同时, 评委计算机屏幕显示当前考评人员信息, 当前考评人员试题与答案, 答辩人员答辩完成后, 评委可提交对当前考评人员总体得分。最后大屏幕上显示当前答辩人员各评委打分情况, 答辩评委统分模块, 进行50ms一次刷新查询数据库, 进行分值计算和汇总, 当所有评委提交评分后, 主机计算机自动计算最后得分,去掉一个最高分, 一个最低分, 剩余评委打分取平均分为最后考评对象得分。对于此计算得分结果, 也可根据不同计算方式进行修改。所有考评对象答辩结束后, 大屏幕将显示此次考评人员总分排名情况, 真正做到了公平公正。

3 结语

本系统经典之处在于评委打分功能的设计, 巧妙地将桌面程序和因特网应用程序结合到了一起, 可以灵活地增加评委人数。考评模块实现了考评人员随机排序和试题抽取随机排序, 达到了最大限度地公平公正选拔人才, 对于机关单位考评干部队伍具有促进意义。下一步将增加评委打分界面更加详尽的考评人员信息显示, 包括其工作经历、个人照片信息等等, 评委可以在短时间内更详尽地了解答辩对象, 做出更有依据的评测。

系统扩展论文 篇2

将上述嵌入式系统应用于实时多媒体数据的网络传输,如图2所示。这里的实时多媒体可以是 MPEG-4或 MPEG-2 等,其数据流一般是连续、恒定码率的。

2.2 硬件扩展

根据上述数据流的特点,需在嵌入式系统与外设(编、解码器)之间加入数据缓冲控制单元。对于发送端和接收端,数据缓冲控制单元的设计有所不同,下面以MPEG-2 为例说明。这里考虑系统的处理能力、网络的承受能力以及图像质量,MPEG-2 的输出为 4Mbps 的CBR(固定比特率)TS流。

2.2.1 发送端

编码器送出连续、恒定速率的码流。如果将此码流直接送到 CPU 外部总线,将会导致操作系统频繁地处理中断,甚至会产生中断不能及时处理从而导致数据丢失。因此,有必要在编码器与外部总线之间加上 FIFO,同时用 CPLD 实现 FIFO 的读写控制逻辑。编码器送出的数据流连续不断地以恒定速率写入FIFO;当FIFO中的数据积聚到一定值后,每写入若干个数据就向CPU发一个中断;CPU在收到中断后通过外部总线读入相当量的数据,并将其打包送入网络。正常情况下,每个中断读数据个数是一定的,在一段时间内FIFO写入和读出将维持平衡,且不会产生“饥饿”状态;当操作系统因处理别的任务而没有及时响应中断时,FIFO将暂时进入“饱和”状态,但只要FIFO容量足够大就不会产生数据溢出现象。由于CPU从FIFO读取单位数据的速度大大高于外设向FIFO写单位数据的速度,“饱和”状态一般能消除。由此,可以解决前述问题。

2.2.2 接收端

在接收端,由于解码器的输入要求是一个连续、恒定速率的码流,同样要求在CPU外部总线与编码器之间加上FIFO和CPLD。同时,接收端的数据包由于经过了网络,不可避免地会引入延时,且数据包之间的延时是不确定的,甚至会产生数据包的丢失。这些都需要在接收端予以考虑,增加了接收端数据缓冲控制单元的复杂度。

为了解决数据包到达延时及抖动问题(数据包的丢失将间接导致延时的增加),可以简单地靠增大FIFO容量解决。但增大FIFO将意味着从编码器到解码器之间延时的增加,影响了实时性。因此,为了保证一定的实时性,同时考虑成本因素,不能单纯靠增大FIFO解决。

由于FIFO容量的限制,在出现大延时的情况下,FIFO将可能出现“空”状态。这意味着送给解码器的数据流会有中断,从而可能导致解码器的不正常工作并可能不能恢复(在数据流恢复正常后)。为此,需要在FIFO出现“空”状态之前,即处于“饥饿”状态时(可以设置一个阈值),由CPLD停止向FIFO读数据而向解码器发填充包。填充包中含有同步头,可以维持解码器的同步。短时间的插空包会使视频图像出现马赛克,如果时间过长,可能会出现黑屏。在实际试验中,接收端视频的质量与网络的负载情况有关。当网络负载较重时,图像会出现马赛克,黑屏现象一般极少发生。

2.3 驱动程序

系统扩展论文 篇3

据悉,该中心落地在IBM中国系统中心,IBM中国区400多名System z相关开发人员中的15%将组成中心的支持团队。此外来自伯布林根、波基普西、蒙彼利埃、盖瑟斯堡实验室的250多位主机专家组成虚拟团队对该中心进行支持。中心涵盖四大功能,可顺利通过“主机云”进行提供:解决方案演示——System z硬件、服务器整合、解决方案和Demo演示;教育和培训——为中国客户和合作伙伴提供关于硬件、软件的系统接入、Linux编程、z/VM、IBM WAVE、System z在云、移动、分析和数据方面的软件培训;解决方案测试/PoC测试——基于Red Hat、SUSELinux的PoC应用测试和优化、应用迁移辅助、性能基准测试;客户体验——最新的zEC2、zBC12和软件完成客户体验。

IBM大中华区副总裁、系统与科技部服务器解决方案总经理侯淼表示,IBM大型主机经历了50年的发展,正在进入一个全新的阶段。“特别是一些新的客户,带来了新的应用。在云和大数据的时代,大型主机仍旧是用户的重要选择。在过去的一年里,不管是在传统的银行核心业务,还是在物流、社保、农信等新的应用行业,IBM大型主机都有所斩获。”

IDC报告显示,Linux服务器需求持续受到云基础设施部署的推动而保持增长态势。2013年第四季度,Linux服务器在整体服务器营收当中已占据28.5%,同比提高4.6%。IBM从2000年开始支持Linux on System z,System z的顶级企业级特性结合Linux的开放优势,使Linux on System z备受用户推崇。目前已有3000多个面向Linux on System z的应用,仅2013年上半年就新增或更新了超过180个。System z全球客户100强中有81%的客户都在大型机上运行Linux系统。

IBM系统与科技部服务器解决方案主机产品部总经理李航认为,50岁的IBM主机继续发展下去,需要有良性的生态环境,其中既包括了解主机的开发者,也需要有了解用户的合作伙伴,同时也离不开最终的用户。“移动、社交网络、大数据分析、云计算正在影响和改变着用户业务的创新。未来,IBM大型主机除了专注在金融领域,还会加大对新兴应用领域的投入。在进一步引进新的技术与人才的同事,继续加强与大学及合作伙伴的深入合作。”李航说。

户外转播系统扩展技术研究 篇4

1 视频系统级联与扩展

系统扩展可以用图1 所示的分层结构来描述,摄像机信号接入属于最基本的要求,通联、返送、切换指示、返送、光圈控制和源名更改属于较高层次的功能。在底层功能满足的情况下会有更高层次的需求,而底层功能的缺失会导致上层功能实现毫无意义,越上层的功能实现起来越复杂。讯道级扩展一般实现低层次的功能,通过ENG或EFP摄像机接入系统实现高层次的功能,常通过2 套或2 套以上的系统级联扩展实现。为方便叙述,本文将导播所操作的系统称为主系统,接入主系统的系统称为从系统。

视频系统的扩展包括视频信号( 本机、返送) 、切换指示和与监看系统有关的源名等方面。摄像机本机信号的接入很早就已实现,ENG摄像机的SDI输出用同轴电缆接入系统帧同步机( 卡) ,有些简单的系统切换台自带帧同步功能,帧同步机都可省去,返送一般在系统级扩展中实现,也比较简单。视频系统扩展的主要难点是切换指示的传输和源名的自动切换。

1. 1 切换指示和源名的原理

切换指示,用于提示导播、摄像等工种当前的PGM切换状态,又称TALLY。摄像机的切换指示由多个LED灯实现,在摄像机身和寻像器上的多个位置有TALLY灯,用于给摄像和主持人提供切换信息。以索尼的HDC2580 高清摄像机为例[1],其TALLY信号是三极管集电极输出的直流通断信号,TTL电平,电压为5 V,如图2 所示,切换台切中某台摄像机时,从对应的端口输出一个直流电平进入摄像机基站,基站通过光缆传至摄像机机头,经摄像机放大后驱动对应的TALLY灯。切换指示是非常重要的状态信息,没有切换指示会导致摄像长期高度紧张,导播混淆PGM信号,主持人视线漂移等问题,影响节目质量。

源名是指是监看系统的信号源名称。目前的户外转播系统多采用源名跟随机制,“跟随”是相对于“静态”而言,即源名会随着信号源的改变而改变[2]。图3 是本台10 讯道高清转播车的源名系统结构图,切换台和矩阵将交叉点和源名信息通过串行总线提供给TALLY服务器,服务器通过检索交叉点-源名映射表中获取源名,将源名信息通过RS-485 总线发送至分割器及UMD显示器,实现源名的动态显示。其中分割器和UMD显示器都使用TSL协议进行通信。

TSL协议是TALLY设备之间的通信协议,现在已有5. 0版本,常用的有TSL3. 0,TSL4. 0 协议。TSL协议的物理层采用RS-422 /RS-485 串行总线结构,所有的设备串联在一起,分配不同的地址。一条电缆可连接最多127 个设备。了解TSL报文的结构对理解切换指示和源名有重要意义,TSL报文结构如图4 所示[3]。

每个TSL数据包由地址、控制字、数据字段等部分组成。其中地址字段用于区分不同的设备,控制字段用于设置显示设备的亮度,而源名信息被包含在16 byte的数据字段内,可显示8个中文字符或16个英文字符(由于源名显示要求简洁易懂,实际使用控制在5~8个字符),切换状态信息在颜色字段显示,所以使用TSL协议通信的设备(切换台、分割器)无须另接GPIO就可实现切换指示。

1. 2 系统级联时切换指示和源名的实现

1. 2. 1 切换指示的实现

GPIO设备和TSL协议设备的GPIO实现方式不同。摄像机、监视器为GPIO设备,切换指示通过并行接口传递,务必按照接口定义进行接线。级联时的切换指示大多通过GPIO予以实现( 通过协议实现也可,但需修改原有TALLY服务器程序,需集成商提供编程接口) ,有时会涉及到多重接口和设备,每条接线都必须正确,否则信号就无法传递过去。以我台10 讯道高清转播车为例,切换台有6 组TALLY信号输出到车尾接口板,再从接口板通过级联箱将信号传输至EFP系统。其TALLY系统接线图如图5 所示。

10 讯道高清转播车切换台选用的是索尼MVS8000GSF高清切换台,其设备控制单元MKS8700 将GPIO的输出到车尾的DB25 口,一个接口内共有4 路双色TALLY和2 路单色TALLY。通过光传输系统传输到EFP,索尼摄像机的TALLY /通联/音频信号集成在一个接口,为了方便级联,本台EFP系统的摄像机的TALLY口已单独引出在飞行箱接口板,使用XLR接口,方便接线。

1. 2. 2 系统源名自动更改

系统扩展时,外来信号有时使用主系统帧同步设备的端口,此时要将帧同步设备的源名改为CAM + XX的形式。如果是系统级扩展,从系统的源名也要相应更改,否则两个相同的CAM1 会引起混乱。源名更改有两种方式,一种是手动更改,在需要的时候进入设备控制界面更改; 一种是自动更改。自动更改能使级联更加快捷,减少技术人员的工作量。本台两台高清转播车级联时,采用源名自动更改方式,级联时车的讯道源名从CAM1-6 自动更改为CAM11-16。其实现方式,仍然是通过TSL协议通信,将从系统TALLY服务器作为主系统的外设进行编址,当主系统切选从系统设备时,其源名信息通过以太网传输至从系统TALLY服务器,使之检测到级联状态,之后由从系统的TALLY服务器通过TSL协议将切换指示和更改的源名信息发送至分割器,从而实现自动源名跟随和切换指示。

2 通话信号的扩展

导演的拍摄意图必须告诉摄像才能得到实现,没有通话系统会使摄像和导演之间的沟通十分困难,因此通话系统在当今节目制作中显得越来越重要。通话系统的扩展目标,是使导播能与所有的摄像和工种通话,通话系统扩展的难点在于不同通话信号之间的接驳。

2. 1 常见通话信号与接口

通话信号和接口种类较多,标准不一导致通话系统对接比较复杂。通话信号有模拟四线、数字四线、数字两线、模拟两线等类型,接口有RJ-45,DB9,XLR等。通话双方话音物理通路分开的称为四线系统,不分开的称为两线系统。四线信号可以拆分为两线信号,两线信号比较变成四线信号。同种类型的通话接口必须统一针脚定义后才能对接。常见4 线通话接口与针脚定义如表1 所示。

Riedel的输出电平是- 4 d Bμ,Telex和Clearcom是0 d Bμ。因此在系统接入时需在软件中将后者的电平适量调高。不同设备的通话接口针脚定义是通话系统扩展的基础,根据定义,即可实现信号的接入。

2. 2 通话系统扩展实现

系统级扩展时,涉及到两套通话系统的级联。为了实现通话矩阵的无缝接入,我台的两台高清转播车采用了同品牌的通话矩阵,通过光纤将两个矩阵串在一起,从而整合成一个大矩阵,如图6 所示,此时所有接入矩阵的端口都可以在控制软件中进行调配,形同一个矩阵。

对于不同品牌的矩阵,也可以通过电缆连接的方式进行连接,我台在户外转播时,转播车与卫星车的通话接入就采用了模拟四线接入的方式,用一条CAT-5 双绞线将两个矩阵的模拟四线口连接起来,实现话音的通信。此方法通过预先配置好两系统的矩阵,可以实现任意端口间的通话,但对预先没有考虑到的通话需求则不便满足。比如主系统导播已经设置好跟从系统导播通话,在节目制作过程中突然需要与从系统的无线通话主站通话,此时就需要临时对从系统矩阵进行配置。此外,由于矩阵协议不同,系统的级联只能做到音频接入,但矩阵的源名无法共享,一端矩阵无法设置对方的源名。如果要做到不同品牌的两个矩阵无缝连接,需要增加1台服务器,用于不同协议之间的源名格式转换,具体型号视不同厂家的矩阵而异。因此,台内的转播系统统一通话矩阵的品牌对系统扩展有重要意义。

讯道级扩展时,对于ENG摄像机来说,通常只铺设1 条视频电缆传回信号。通话方式一般采用无线通话腰包的方式予以实现。可以将无线通话主站的模拟四线口与矩阵的模拟四线口对接,从而实现扩展功能。使用EFP摄像机时,摄像机基站有四线通话接口,用双绞线将矩阵的模拟四线口与基站的通话口对接起来,就可以实现全双工通话。

3 利用光传输系统实现更高层次的级联功能

如前文所述,PGM返送信号和光圈远程控制属于较高层次的功能,随着通话和切换指示的实现,这两项功能就渐渐呼之欲出。摄像通过查看返送信号可以获悉导演切中机位的景别和拍摄对象,避免同景别重复拍摄,远程光圈控制可以让技术人员调整光圈,减轻摄像的负担,提高节目质量。系统扩展时,主系统要向从系统提供PGM声音。有时从系统要另外制作一套立体声节目,就需要向其提供全套音源信号。

进入高清时代,高层次功能的实现主要是传输上的问题。1 920 × 1 080 /50i的高清视频信号码率为1. 5 Gbit / s[4-5],用同轴线缆的传输极限大约是200 m,超出此距离,信号眼图很差,基本无法传输,而摄像机控制的多芯电缆长度一般为10 m,只能在讯道附近进行控制。模拟音频信号虽然传输距离较远,但是音源多时会有较大的线缆铺设量,降低工作效率和安全性。为了实现更高层次的功能,使用光传输系统是一个极好的选择。本台的光传输系统就是为转播车扩展而设计的,考虑到扩展时的视频、音频、通话、GPIO、网络等信号的传输需求,在一个周边机箱内的解决方案,板卡配置情况如图7所示。

其系统框图如图8 所示,该系统可实现6 路高清视频、2路高清返送、16 路AES音频、8 路模拟音频、3 路四线通话、8通道GPIO、以太网等信号的传输,基本可以实现两套系统6讯道从视频信号接入、通话到源名所有层次功能。该系统常用于本台大型户外转播车节目中的车-现场信号传输、备份传输通道和系统级联。

4 实际节目中的系统扩展案例

2014 年9 月,广州国际登高邀请赛在广州地标广州塔举行,我台承担比赛转播任务。本次登高赛共有6 000 多人报名,分核心筒和蜘蛛侠栈道两个赛道同时进行,比赛起点在广州塔2 楼观景平台,终点在广州塔488 平台,起点有启动仪式,终点有颁奖仪式。节目组要求在起点用3 ~ 4 个机位拍摄起跑仪式,在赛道中段的3 个点安排4 ~ 6 个机位拍摄选手画面,在终点用4 个机位拍摄选手冲线画面和颁奖仪式。

本次转播的难点在于在垂直空间内大间隔分布了数量不等的机位,转播车系统的讯道虽然很多但是只能提供在距地面100 m以内的高度内使用。为了全方位报道比赛画面,我们制定了详细的技术方案,如图9 所示。

本次转播采用10 讯道高清转播车作为主系统和信号调度中心,同时负责提供2 楼观景平台的讯道。位于塔身中段的机位,通过单机微波的方式传输至高清车,由于无线讯道的特点,这些机位只能实现信号回传和通话功能。由于塔顶平台距地面488 m,不可能使用转播车讯道,经过测试此处微波信号衰减较大。为了如实记录终点的比赛结果,在塔顶架设一套4 讯道高清EFP系统,如果使用卫星、微波等无线方式将塔顶信号送回,将无法实现通话、返送等功能,导致塔顶团队无法看到播出信号,与转播车的通信无法得到保障,影响节目效果。因此通过光纤接入转播车系统。通过前文所述的视频、通话等各层次的扩展技术,将转播车、EFP和若干无线讯道无缝地衔接在一起,组成了一个空间维度巨大的系统,顺利完成了转播任务。

5 结束语

随着电视技术的不断发展,系统扩展将向多元化和常态化发展,对扩展的功能要求将越来越高。作为技术人员,目标是使扩展工作简单化,使系统与系统的接入无缝化。扩展的核心问题主要集中在信号传输、接口匹配和标准化。在系统集成阶段时,应考虑到未来的需求,预留充足的接口,后集成的系统与较早的系统做到接口定义一致,从而简化扩展时的工作量。本文结合实际工作情况提出了一些系统扩展的解决方案和经验,希望能起到抛砖引玉的作用。同时也呼吁广电设备厂商和电视台,加快通话和控制信号的标准化进程,早日结束接口种类过多的现状。

参考文献

[1]SONY Corporation,HDC 1580R maintenance manual[EB/OL].[2015-04-15].http://pro.sony.com.cn/pro/.

[2]傅庆健,浅谈UMD&TALLY系统的设计[J],电视技术,2014,38(14):82-84.

[3]Television System Liminted,TALLY Systems training[EB/OL].[2015-04-16].http://tslsystems.co.uk/contact/enquiry-form/.

[4]张琦,杨盈昀,数字电视中心技术[M].北京:北京广播学院出版社,2004.

系统扩展论文 篇5

环境说明:

centos5.6 32bit

php 5.2.17

php安装路径 /usr/local/php

phpize路径 /usr/bin

php-config路径 /usr/bin

php.ini路径 /etc/

1.首先下载php的mongodb扩展

从pecl.php.net/package/mongo这个网址下载mongodb的扩展源码包

wget pecl.php.net/get/mongo-1.4.5.tgz

2.解压安装包

tar zxf mongo-1.4.5.tgz

3.进入解压目录,运行phpize进行安装准备

cd mongo-1.4.5

/usr/local/php/bin/phpize

4.安装编译

上述命令运行完后,在目录下就生成了configure文件

使用./configure命令进行安装配置,然后使用make && make install进行编译安装,命令如下:

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

5.编辑php.ini增加下述一行添加mongodb扩展

extension=mongo.so

重启web容器,然后查看phpinfo,看到mongodb的内容就说明安装成功,

例子

服务器环境Cent OS 5.6 32位, php版本 5.2.17编译安装,安装路径/usr/local/php

首先下载最新的php mongodb扩展源码,源码可以在pecl.php.net/package/mongo下载到

wget pecl.php.net/get/mongo-1.2.0.tgz

tar zxf pecl.php.net/get/mongo-1.2.0.tgz

cd mongo-1.2.0

进入文件夹后,首先运行phpize来准备编译扩展的环境,phpize这个程序的介绍在这里

/usr/local/php/bin/phpize

运行后执行结果如下:

运行后,./configure 脚本就会生成了,这个时候我们运行./configure脚本来进行配置

./configure --with-php-config=/usr/local/php/bin/php-config

--with-php-config这个参数是告诉配置脚本php-config这个程序的路径,php-config的介绍在这里

上面命令在正确配置的环境下运行结果如下

这时用make来编译扩展

make && make install

正确编译执行结果如下(下图是编译输出的最后几行)

完成后,请编辑你php.ini文件增加一行

extension=mongo.so

一般默认的编译php的ini文件在

/usr/local/php/etc/php.ini

生命意义的扩展 篇6

1987年9月在美国新墨西哥州的洛斯阿拉莫斯召开的第一次国际人工生命会议把生命的内涵和外延做了极大的扩展。当把生物生命和信息技术结合,并用信息技术来模拟自然生命时,生命的功能和本质就有了重大的改观,兰顿对人工生命的思想做了归纳和总结,集中体现在《人工生命》的报告中。

人工生命是关于一切可能的生命形式的生物学。今天我们每个人以同样的方式和本质出现在地球上,并不是必然的,这仅仅是因为原先地球上存在的那些物质和进化的结果。然而,进化可能建立在更普遍的规律之上,但这些规律人类可能还没有认识到。所以,今天的生物学仅仅是实际生命的生物学。

而现在利用计算机技术创造人工生命所用的是集成的方法,而不是用分析的方法。对传统生命的理解是解剖和分析现有生命的物种、器官、细胞、细胞器和分子,而人工生命是用综合集成的方法将简单的零部件组合在一起,使之产生类似生命的行为、甚至思想。传统的生物学研究一直强调根据生命的最小部分分析生命并解释它们,而人工生命研究试图在计算机或其他媒介中合成生命的过程和行为。

不管实际的生命,还是可能的生命,都不由它们所构成的具体物质决定。生命当然离不开物质,但是生命的本质并不取决于具体的物质。生命是一个过程,恰恰是这一过程的形式而不是物质才是生命的本质。因此可以忽略物质,从其中抽象出控制生命的逻辑或规律。如果能够在另外一种物质中获得相同的逻辑,人类就可以创造出不同材料的另外一种生命,如硅基生命。

人工生命与人工智能有区别。合成人工生命的最好方法是通过以计算机为基础的被称为“自下而上编程”的信息处理原则来进行:在底层定义许多小的单元和几条关系到它们内部的、完全是局部的相互作用的简单规则,从这种相互作用中产生出连贯的“全体”行为,这种行为不是根据特殊规则预先编好的。

自下而上的编程与人工智能(AI)中主导的编程原则是完全不同的。在人工智能中,人们试图根据从上到下的编程手段建构智力机器:总体的行为是先验地通过把它分解成严格定义的子序列编程,子序列依次又被分成子程序、子子程序……

人工生命中的自下而上的方法是模仿或模拟自然中自组织的过程,力图从简单的局部控制出发,让行为从底层凸现出来。按兰顿的说法,生命也许确实是某种生化机器,但要启动这台机器,不是把生命注入这台机器,而是将这台机器的各个部分组织起来,让它们产生互动,从而使其具有“生命”。

人工生命研究在国际上已经召开过7次学术会议,涉及人工生命的方方面面。

研究生命的自组织和自我复制,包括研究天体生物学、宇宙生物学、自催化系统、分子自装配系统、分子信息处理等;探讨发育和变异,研究多细胞发育、基因调节网络、自然和人工的形态形成理论。目前人们采用细胞自动机等进行研究;研究系统复杂性,从系统角度来看待生命的行为,首先在物理上可以定义为非线性、非平衡的开放系统。生命体是混沌和有序的复合。非线性是复杂性的根源,这不仅表现在事物形态结构的无规律分布上,也表现在事物发展过程中的近乎随机变化上。然而,通过混沌理论,却可以洞察到这些复杂现象背后的简单性。非线性把表象的复杂性与本质的简单性联系起来。

人工生命也探讨进化和适应动力学,包括进化的模式和方式、人工仿生学、进化博弈、分子进化、免疫系统进化、学习等,遗传算法和进化计算是目前极为活跃的研究领域。研究智能主体。智能主体是具有自治性、智能性、反应性、预动性和社会性的计算实体。研究智能主体的形式化模型、通信方式、协作策略、集体行为、协作、社会语言系统等。

人工生命还探讨自主系统,即有自我管理能力的系统,自我管理具体体现在四个方面。自我配置:系统必须能够随着环境的改变自动地、动态地进行系统的配置;自我优化:系统不断地监视各个部分的运行状况,对性能进行优化;自我恢复:系统必须能够发现问题或潜在的问题,然后找到替代的方式或重新调整系统使系统正常运行;自我保护:系统必须能够察觉、识别和使自己免受各种各样的攻击,维护系统的安全性和完整性。

人工生命也探讨机器人和人工脑,研究生物感悟的机器人、自治和自适应机器人、进化机器人等。

人工生命的上述种种问题又产生了很多挑战,包括:生命的转变、生命的进化潜能和生命与思想和文化之间的关系。这些问题又细分为;

1.命是怎样从非生命中出现的:在生物体外产生第一个分子有机体:用人工化学的方法以硅的形式达到生命的转变;确定新的生命组织能否根本存在:模拟单细胞组织的整个生命周期;解释规则和符号如何从生命系统的物理动力学中产生。

2.生命系统的潜力和极限是什么:确定在生命的未确定的进化过程中什么是不可避免的;确定进化过程中从具体到一般的响应系统的最小条件;为各种情况下的合成动力的层次创建一个正式的框架;确定利用组织和生态系统的进化结果的预言性;建立一个有关信息处理、信息流和信息生成的进化系统的理论。

3.生命是如何与思想、机器和文化相关的;论证人工生命系统中智能和思想的出现;评估下一代主要的生命进化转变对机器的影响程度;提供一个文化和生物进化之间的相互影响的定量模型;为人工生命建立伦理原则等。

尽管高级人工生命的创造存在很多困难,但未来这样的生命创造出来后将不仅是对生命的扩展,而且是对人类自身的挑战。

裂纹扩展疲劳试验测控系统研究 篇7

疲劳裂纹扩展试验是一种通过采用各种方法实时测量试件在设定交变载荷作用下所产生的疲劳裂纹长度,来研究材料疲劳断裂特性的一种重要的金属材料性能测试方式[1,2,3,4]。为了保证疲劳裂纹扩展试验结果的准确性和可靠性,必须保证裂纹扩展过程中试验载荷的控制精度,电磁谐振式疲劳裂纹扩展试验系统为一强迫振动系统,由电磁激振器产生所需要的正弦激振力作用在振动系统上从而使工作台产生同频率的正弦振动,带动试件运动,使正弦波试验载荷作用在试件上[5,6,7],在正弦波试验载荷的作用下,带有预制裂纹的试件将产生疲劳裂纹并不断扩展,试验载荷的频率应和振动系统的固有频率相等,从而使系统工作在谐振区,以几乎最小的能量维持系统的振动,保证试验的进行。随着试验的进行,试件上的疲劳裂纹不断扩展,裂纹长度不断增长,系统刚度随之不断减小,系统将不再工作在谐振区,试验载荷振幅急剧下降,为保证裂纹扩展过程中试验载荷的稳定性,且使系统始终工作在谐振区,首先必须要精确跟踪系统的固有频率,同时保持试验载荷振幅的稳定性[8]。文献[9]研究了谐振式曲轴弯曲疲劳试验中试件裂纹扩展对谐振系统载荷放大特性的影响,在此基础上实现了试验系统的高精度恒载荷控制; 文献[10]利用分数阶PID控制器对载荷频率进行了控制,运用分数阶PID控制器控制载荷频率可以较好地消除稳态误差,且具有较好的鲁棒性。

本研究所提出的基于裂纹长度在线测量的谐振式疲劳裂纹扩展试验振幅控制系统,在疲劳裂纹扩展过程中同时进行固有频率快速精确跟踪和试验载荷的准确控制,首先通过采用自行设计的基于图像处理技术的裂纹长度测量系统[11,12]可精确在线测量谐振式疲劳裂纹扩展过程中的裂纹尺寸及其所对应的系统的固有频率,在该固有频率值左右小范围区域内,采用自适应改进爬山法搜索系统精确固有频率值,同时采用模糊PID方法控制频率跟踪过程中造成的振幅波动。该方法可用于快速、准确跟踪疲劳裂纹扩展过程中系统的固有频率值,且保持试验载荷振幅的稳定性,很好地满足疲劳裂纹扩展试验的要求。

1基于裂纹在线测量的振幅控制系统

1.1系统总体组成

基于裂纹在线测量的谐振式疲劳裂纹扩展试验振幅控制系统总体组成如图1所示。其包括: 1试验载荷加载系统: 由疲劳试验机、试件、电磁激振器及其放大电路组成,主要完成将电磁激振器所产生的正弦激振力作用在主机工作台上,使工作台产生同频率的正弦振动,从而使正弦波试验载荷作用在试件上的功能。 2裂纹尺寸在线测量系统: 包括图像传感器( CCD) 、 光学镜头、光源、图像采集卡,安装有图像采集及裂纹尺寸计算软件模块的计算机,该系统主要完成疲劳裂纹扩展过程中裂纹尺寸在线测量的功能,裂纹测量精度为0. 1 mm。3试验载荷振幅控制系统: 该系统为上下位机分布式结构,下位机为基于DSP技术的完成数据采集分析、正弦波信号发生、数据通讯的微处理器, 上位机为安装有固有频率跟踪算法程序、振幅控制程序及RS232串口通讯程序的计算机,该系统主要完成疲劳裂纹扩展过程中频率跟踪及振幅控制。

1.2系统工作原理

1.2.1裂纹扩展过程中固有频率和振幅的变化规律

裂纹扩展过程中系统固有频率和振幅的变化如图2所示。

随着疲劳裂纹扩展试验的进行,试件上的疲劳裂纹不断扩展,裂纹尺寸不断增大,系统刚度随之不断减小,系统的幅频曲线由曲线1的位置移到曲线2的位置,在裂纹未扩展之前,试验载荷的频率等于此时系统的共振频率f1,系统工作在谐振点A点,随着裂纹的扩展,系统的幅频曲线移到曲线2,此时系统的共振频率为f2,而如果试验载荷的频率仍为f1,则系统将不再工作在谐振区,系统的工作点由A点转移到B点,谐振式疲劳裂纹扩展试验系统基本为锐共振系统,即幅频曲线谐振区附近曲线较陡,这样造成试验载荷振幅急剧下降,裂纹扩展时频率跟踪越慢,则试验载荷振幅下降越多,如及时准确跟踪固有频率的变化则系统工作点将由B点转移到C点,由系统动力学分析得知,裂纹扩展后系统的共振振幅增大,这样,裂纹扩展后固有频率跟踪过程中振幅的变化从A到B再到C,幅值上为“等于设定值—小于设定值—大于设定值”,跟踪越快越精确则振幅变化的波动度也越小,通过采用试验载荷振幅模糊PID控制可保持频率跟踪过程中振幅的稳定。

1.2.2基于裂纹在线测量的振幅控制方法

基于裂纹长度在线测量的疲劳裂纹扩展试验载荷控制包括裂纹长度计算、固有频率跟踪、振动载荷振幅控制,对于上、下位机式系统,除此之外,还包括RS232串口通讯程序。首先,需通过实验测量出系统固有频率和裂纹长度关系,并存于计算机内,由于同样材料、 同样尺寸的试件热处理、试验时受力条件不完全相同, 再加上固有频率、裂纹尺寸测量误差及裂纹尖端塑性区造成的影响,系统固有频率测量值和真实值不一定相等,因此本研究将系统固有频率测量值设定为频率跟踪的初始值。在疲劳裂纹扩展试验开始后,在设定交变正弦载荷的作用下裂纹开始萌生并不断扩展,由CCD镜头、图像采集卡采集裂纹图像并在计算机内图像采集软件的控制下,系统将该图像采集到计算机内, 通过图像处理疲劳裂纹长度计算程序计算出疲劳裂纹长度,根据存储在计算机内的系统固有频率和裂纹长度的关系,求出此时系统固有频率理论值,同时根据RS232串口通讯程序从DSP控制器传输来的振动载荷振幅值,在理论值附近小区域内采用自适应改进爬山法搜索系统精确固有频率值,并采用模糊PID控制器对试验载荷振幅进行控制,通过RS232将跟踪频率值和激振电压值发送给下位机DSP控制器,发生相应正弦波给电磁激振器,控制试验机以该频率振动,载荷传感器采集载荷波形信号,DSP控制器对信号处理后提取出振幅值和频率值发送给上位计算机,作为上位计算机频率跟踪和振幅控制的输入,如此循环直到找到固有频率和振幅达到设定值为止。

详细方法流程图如图3所示。

2基于疲劳裂纹在线测量的系统固有频率跟踪算法

根据本研究所提出的基于裂纹长度在线测量的谐振式疲劳裂纹扩展试验系统固有频率跟踪方法,首先可采用裂纹长度测量系统精确在线测量疲劳裂纹扩展试验过程中的裂纹尺寸,并可通过实验测得不同裂纹尺寸所对应的系统固有频率值,由于实验事先测定的系统固有频率值和疲劳裂纹扩展试验时系统固有频率存在一定的差值,笔者在该固有频率值左、右小范围区域内采用自适应结合改进爬山算法搜索系统精确固有频率值,完成准确固有频率的跟踪。

2.1不同裂纹长度时系统固有频率的测量

本研究加工出带有初始预制裂纹的CT紧凑拉伸试件,并在图1所示的试验系统进行疲劳裂纹扩展试验,当裂纹扩展到不同尺寸时,首先采用自行研制的机械视觉疲劳裂纹在线测量系统测得疲劳裂纹长度,然后停止疲劳裂纹扩展试验,进行该裂纹尺寸下系统扫频实验测得系统固有频率,此时固有频率测量为离线测量,而不是在疲劳裂纹扩展试验过程中的在线测量,测量精度要求较高,但对搜寻时间没有要求,笔者采用通过软件界面实时调整搜索步长的爬山法来实现,本研究在红山PLG-100谐振式高频疲劳试验机对材料为45号钢的CT紧凑拉伸试件进行了疲劳裂纹扩展过程中固有频率的测量,为测量同样实验设备、试件材料、尺寸及安装条件下实验数据的重复性,笔者共对6块试件进行了疲劳裂纹扩展固有频率测量实验,测得不同裂纹尺寸下系统固有频率测量数据如表1所示。

( 单位: Hz)

由表1中实验数据可以看出,同样裂纹尺寸试件系统固有频率实验数据最大偏差为2. 3 Hz,主要是由于同样材料、同样尺寸的试件热处理、试验时受力条件不完全相同,再加上裂纹测量误差、插值计算造误差及裂纹尖端塑性区造成的影响造成的。

2.2系统固有频率的跟踪算法

以往常用的谐振系统的固有频率跟踪方法有爬山法、改进爬山法、自适应模糊固有频率跟踪方法等,都是从大范围扫频开始,采用同一跟踪步长或采用各种策略逐渐改进跟踪步长[13,14],搜索固有频率,频率跟踪扫频范围大,不能很好地实现在裂纹扩展过程中固有频率的快速准确跟踪。本研究所提出系统固有频率跟踪方法如图4所示。

首先本研究测得系统固有频率和裂纹长度关系数据如表1所示,并将该数据存于计算机内,疲劳裂纹扩展试验开始后,在正弦振动试验载荷的作用下试件上的疲劳裂纹产生并不断扩展,造成系统固有频率减小, 为跟踪系统固有频率,本研究首先测量试件上疲劳裂纹长度和系统的振动频率,根据试验开始前测得的固有频率和裂纹长度关系数据求得裂纹扩展到这一尺寸时系统固有频率值,将该实验测定的系统固有频率值设置为频率跟踪初始值,求固有频率测定值和系统振动频率的差值,如差值大于2 Hz设定频率跟踪粗步长为差值的20% ,如差值小于2 Hz设定频率跟踪粗步长为差值的30% 而且大于0. 5 Hz,该数据可根据实验进行修正,该粗步长沿所设定频率搜索方向,向前搜索3步,采用试验载荷特征值提取算法计算出3个位置的振幅为f1,f2,f3,如果f1< f2< f3说明搜索方向正确,沿原方向采用同样步长继续向前搜索3步,如果f1> f2> f3说明搜索方向相反,如果是试验开始第一组搜索则从频率跟踪初始值开始采用同样步长沿反方向搜索, 如不是第一组则每次反向调整时粗调步长缩减为原先的70% ,如果f2< f1而f2< f3则说明遇到局部噪声干扰,以原步长继续往前搜索进行判断,当f1< f2而f2> f3时说明频率跟踪已越过系统固有频率点,频率返回f1,此时采用小步距回调,进入精调阶段,精调步长初始值约为此时粗调步长的20% 而且大于0. 2 Hz,重复上述过程,且每次反向调整时精调步长缩减为原先的70% 而且大于0. 2 Hz,一直到出现f1< f2而f2> f3时, 因精调阶段步上较小频率搜索过程中易遇到局部噪声干扰,当f1< f2而f2> f3时增加一步搜索判断,从而使系统的可靠性进一步增强。

3振动载荷振幅模糊PID控制

3.1振幅模糊PID控制结构

常用谐振系统的振幅控制方法有PID控制模糊PID控制,本研究所采用疲劳裂纹扩展试验工作载荷振幅模糊PID控制结构如图5所示。

主控制器是输入为振幅偏差e、输出为电磁激振器的激振电压U的PID控制器,3个“两输入单输出” 结构的模糊控制器用来在线整定谐振频率跟踪过程中振幅PID控制的比例、积分和微分参数,3个模糊控制器的输入均为振幅偏差e及偏差变化率ec,输出分别为比例、积分和微分参数的变化量 ΔKp、ΔKi、ΔKd。

3.2输入和输出量的模糊化

精确输入量e和ec需要分别乘以量化因子Ke和Kec及模糊化后转换成各自模糊论域内的模糊变量E和EC,而模糊控制器的输出量UP、UI、UD也需乘以相应比例因子后才能得到精确值 ΔKp、ΔKi、ΔKd。将模糊控制器输入量E和EC及输出量UP、UI、UD的标准论域皆设定为{ - 6,- 5,- 4,- 3,- 2,- 1,0,1,2,3, 4,5,6} ,将输入量E和EC在论域区间内定义为负大 ( NB) 、负中( NM) 、负小( NS) 、零( ZO) 、正小( PS) 、正中( PM) 、正大( PB) 7个语言值,其隶属函数采用具有良好抗干扰能力的高斯型隶属度函数,根据输入变量值及其隶属度函数,可获得输入变量在设定论域内各个元素对应各个模糊子集的隶属度值,从而得到输入量离散隶属度表。为了使系统有较高的分辨率,本研究同样将输出量UP、UI、UD定义为7个语言值,与输入量E和EC相同,其隶属度函数选用比较简单的三角型函数,采用同样方法可获得输出量离散隶属度表。

3.3模糊规则设计

在疲劳裂纹扩展过程中,本研究针对不同e和ec的情况,根据试验载荷振幅的控制要求制定相应模糊控制规则,求出所对应的 ΔKp、ΔKi、ΔKd参数,实现对PID控制参数Kp、Ki、Kd的在线整定。Kp、Ki、Kd在线整定的要求为:

( 1) 当e较大时,为了有较好的快速跟踪性能,并避免因开始时误差e的瞬间变大可能引起微分过饱和而使控制作用超出许可范围,应取较大Kp和较小Kd。 同时为了防止积分饱和,避免系统响应出现较大的超调,应对积分作用加以限制,此时取Ki= 0。

( 2) 当e和ec为中等大小时,为使系统响应具有较小的超调,Kp,Ki和Kd都不能取大值,应取较小的Ki值,Kp和Kd的值大小要适中,以保证系统的响应速度,其中Kd的取值对系统的响应速度影响较大。

( 3) 当e较小时,为使系统具有良好的稳态性能, 应取较大的Ki和Kd,同时为避免系统在设定值附近出现振荡,并考虑系统抗干扰性能,Kd应根据ec来选定,其原则是: 当ec较小时,Kd值可取大一些,通常取中等大小; 当ec较大时,Kd的值应取小一些。

控制规则的形式为: Ri: if E is Aiand EC is Bi, then UP is Ci,i = 1,2…49; Rj: if E is Ajand EC is Bj, then UI is Cj,j = 1,2…49; Rk: if E is Akand EC is Bk, then UP is Ck,k = 1,2…49。Ri、Rj、Rk表示第i、j、k条控制规则,E表示偏差的语言变量,EC表示偏差变化率的语言变量,UP、UI、UD表示 ΔKp、ΔKi、ΔKd的语言变量. 它们的语言值在相应论域中的模糊子集分别为Ai、Bi、Ci,i = 1,2…7,共建立了49 × 3 = 147条控制规则,ΔKp模糊规则表如表2所示。

3.4模糊推理规则及解模糊算法

振幅PID控制参数调整模糊控制器的推理算法采用如式( 1,2) 所示两输入单输出Mamdani MAX-MAN推理方法,去模糊化则采用精度较高的如式( 3) 所示重心法,具体模糊推理规则如下:

IF A1AND B1THEN C1

IF A2AND B2THEN C2

IF A3AND B3THEN C3

………………………

输入X0AND Y0结论C'

由前提“X0AND Y0”和各种模糊规则“AiAND BiTHEN Ci( i = 1,2,n) ”可得到推理结果: 激活的单条规则输出量C'i的隶属度值及总的激活规则输出量C'的隶属度值计算如式( 1,2) 所示:

3.5振幅模糊PID控制算法

振幅PID控制采用递推式控制算法如式( 5) 所示,疲劳裂纹扩展试验过程中PID控制在线整定的Kp、Ki和Kd参数采用式( 3,4) 进行计算:

3.6振动载荷振幅模糊PID控制的实现

在实际在线应用中,本研究首先根据输入输出离散隶属度表、模糊控制规则、式( 1,2) 所示两输入单输出Mamdani模糊推理方法和式( 3) 所示去模糊化重心法,得到模糊控制查询表,模糊控制表是用E、EC在各自论域中的全部元素的所有组合计算得出的相应的以论域内元素表示的控制量变化值,写成矩阵形式并在实验过程中加以修正得到。笔者将该控制查询表存放于计算机中,在疲劳裂纹扩展试验每一个控制周期中, 计算机将所采集的实测试验载荷振幅偏差e和偏差变化率ec值转换到各自的离散论域中,由模糊控制表可查到相应的控制输出值UP、UI、UD,再乘以各自相应的比例因子后便得到精确出值 ΔKp、ΔKi、ΔKd,根据式 ( 3) 得到整定好的PID控制参数Kp、Ki和Kd,采用式 ( 4) 求得振幅PID控制的输出控制量—电磁激振器的激振电压。控制查询表可离线计算,在线控制时计算量很小,所以控制系统具有很强的实时性,满足谐振式疲劳裂纹扩展试验的要求。ΔKp模糊控制表中某一元素值产生流程图如图6所示。

4实验及结果分析

为进行相关实验研究,笔者建立了电磁谐振式疲劳裂纹扩展试验固有频率跟踪系统实验平台,实验装置实物如图7所示。其中,疲劳试验机采用红山PLG100谐振式高频疲劳试验机,图像采集卡为美国NI公司所生产的PCI-1014图像采集卡,镜头为SONY 35 mm定焦镜头,CCD为XC-XT50CE高清晰度、高帧速率顺序扫描的黑白CCD摄像头,分辨率为724 × 568,试验载荷振幅控制系统下位机DSP数据采集分析及信号发生系统,所采用核心芯片为TMS320F2812信号发生器和TMS320F2812信号采集、分析模块,载荷传感器采用电阻应变片式传感器。裂纹图像采集与处理软件开发平台为IMAQ-VISION,载荷控制、频率跟踪、信号分析处理及通讯软件开发平台为VC语言。试块为CT紧凑标准试块,材料为45号钢。本研究在该实验平台上进行了不同裂纹长度系统固有频率测量实验和振幅控制实验,固有频率测量实验已在前面讲述。

为了验证基于裂纹在线测量的振动载荷振幅模糊PID控制系统的控制性能,本研究在所建立的实验平台上采用振幅PID控制方法、振幅模糊控制方法及本研究提出的控制方法对疲劳裂纹扩展试验的振动载荷振幅进行了控制,并在应用程序中增加了动态控制过程参数的测量功能: 调整过程中的超调幅度、调整时间的测量,系统运行界面如图8所示,测得具体实验数据如表3所示,系统采样时间为0. 5 s。为使实验结果具有普遍性,笔者测量了振幅不同设定值时各方法控制性能参数。实验结果表明: 本研究方法和振幅PID控制方法、振幅模糊控制方法相比,控制精度高( 稳态精度小于1% ,超调量小于2% ) ,调整时间短,控制过程稳定可靠。如要进一步提高其控制精度,则可从以下方面出发: 进一步提高裂纹图像识别算法和系统固有频率跟踪算法等,更加精确对地在线测量裂纹长度以及快速跟踪系统固有频率。

5结束语

为了实时跟踪由于裂纹扩展而逐渐减小的系统固有频率并保证疲劳裂纹扩展过程中试验载荷的稳定性,本研究建立了基于裂纹长度在线测量的谐振式疲劳裂纹扩展试验振幅控制系统,提出了基于裂纹在线测量的粗细步长结合改进爬山法固有频率跟踪算法及振动振幅模糊PID控制方法,本研究对所提出的方法进行了详细的理论和实验研究,实验结果表明: 采用本研究方法的实验系统在裂纹扩展过程中的振幅控制精度为2% ,控制精度高,调整时间短,能很好地满足疲劳裂纹扩展试验的要求。

扩展L-系统树木多态模拟研究 篇8

关键词:L-系统,自然景观模拟,三元素集

0 引言

L-系统[1]被广泛应用于自然景观模拟中, 是在给定描述规则与初始状态前提下, 利用迭代算法生成字符序列, 对字符序列进行几何解释来描述植物的拓扑结构。文献[2]实现了三维景物的模拟算法, 结果非常逼真。文献[3]模拟树木受自然环境影响而产生的趋光性和屈地性, 用IFS算法模拟植物纹理, 实验结果比较逼真。文献[4]利用L-系统实现对三维树木的模拟及利用Perlin噪声函数模拟风场, 提出了模拟树枝在风中运动的有效方法。文献[5-8]中利用L-系统, 在对产生式改进的前提下实现了植物自然生长的模拟。从参考文献分析得到, L-系统已经实现了植物自然生长和风中摇曳等现象的模拟, 然而缺少诸如风过大时树木折断现象的模拟。

为了更生动地描述植物生长的随机性, 将L-系统进行扩展, 可以得到更加逼真的模拟效果。为了更好地模拟树枝断裂的随机性, 在字符序列的几何解释中引入两个控制扩展参数。为了对花草树木修剪进行更贴近现实的模拟, 将字符统计迭代算法引入到L-系统中。

1 扩展单规则形态模拟

L-系统龟解释原理:首先定义字符集合, 然后给定初始字符串, 迭代后生成新的字符串。对生成的新字符串中的所有字符按照一定规则进行几何解释, 最终形成植物形态。

单规则L-系统指产生式只有一个, 利用给定的表1单规则产生式, 在不加扩展参数的情况下, 得到如图1所示的单规则分形图。

但分形图是上下文相关的, 形态确定, 不完全符合自然景观随机生长形态万变的规律。在分形的过程中, 加入扩展参数rand () %L (L为迭代后树形拓扑结构字符串的长度) , 使最终的分形结果更符合自然景观的随机性。利用给定的表1单规则产生式在加入扩展参数的情况下, 可得到如图2所示的单规则分形图。

2 景观多态模拟

景观在自然生长过程中呈现多种形态, 比如风吹折枝现象、景观修剪等。

2.1 折枝形态模拟

在风力过大时, 树枝折断是常见现象, 具有一定的随机性, 即断裂的位置不确定, 朝哪个方向断裂不确定。为了能够更好地模拟树枝断裂的随机性, 在字符序列的几何解释中引入两个控制扩展参数:rand () %L、rand () %360。其中参数rand () %L用于确定树木断裂的位置, L为树形拓扑结构字符序列的长度;参数rand () %360用于确定树木断裂的方向, 也就是风的方向。

利用产生式"F→F[F][+F][---F]F[++F]F", 迭代次数为3, 偏转角为20°, 没有扩展参数的条件下, 得到图3 (a) 所示的原始分形图, L=8001。加入扩展参数rand () %L和rand () %360后, 形成不同位置和不同方向上的树枝断裂分形图, 见图3 (b-d) 。

由以上模拟结果看出, 树枝折断现象在断裂位置和断裂方向上呈现了一定的随机性, 很好地模拟了现实。

2.2 景观修剪形态模拟

在自然环境下, 为了美观, 常常需要对花草树木进行修剪。为了使花草树木修剪更加贴近现实, 将字符统计算法引入到L-系统中。

对于每次迭代, 在生成的字符序列中加入字符统计算法, 统计相邻两个字符是相同字符的概率和种类。连续两个字符是"FF"的概率为P (F) , 连续两个字符是“++”的概率是P (+) , 连续两个字符是“--”的概率是P (-) 。如果连续两个出现相同字符, 便进行字符替换。替换规则是:“FF→F”、“++→+”、“--→-”。在替换过程中, P (F) 、P (+) 、P (-) 不断发生变化, 呈递减趋势。查找替换结束的条件是:经过有限次字符替换, 整个字符串不再存在连续两个相同的字符, 即P (F) 、P (+) 、P (-) 全部变为0。

字符统计算法是一个三元素集, 其表达式为:V1≤V, w, P>

其中V是迭代后替换前的字符序列, V1是经过一次查找替换过程后的字符序列, w是字符集合, P是指字符序列V中连续两次出现w字符集中字符的概率集

, 一个合理的分形树必有P (F) +P (+) +P (-) ≠1。自然景观的修剪过程就是遵循表达式V1≤V, w, P>求V1的过程, 把每次的字符集合V1进行几何解释, 形成相应的分形图形, 便实现了自然景观修剪过程的形态模拟。

对产生式F→“F[+F]F[+F-F][-FFF+F]”, 经过1次迭代, 字符统计算法结果如表2。可以看出, P (+) 和P (-) 的概率始终为0, 即不存在连续两次出现“+”和“-”的情况。

其中:

U1=F[+F]F[+F-F][-FFF+F][+F[+F]F[+F-F][-FFF+F]]F[+F]F[+F-F][-FFF+F][+F[+F]F[+F-F][-FFF+F]-F[+F]F[+F-F][-FFF+F]][-F[+F]F[+F-F][-FFF+F]F[+F]F[+F-F][-FFF+F]F[+F]F[+F-F][-FFF+F]+F[+F]F[+F-F][-FFF+F]]

U2=U3=F[+F]F[+F-F][-FF+F][+F[+F]F[+F-F][-FF+F]]F[+F]F[+F-F][-FF+F][+F[+F]F[+F-F][-FF+F]-F[+F]F[+F-F][-FF+F]][-F[+F]F[+F-F][-FF+F]F[+F]F[+F-F][-FF+F]F[+F]F[+F-F][-FF+F]+F[+F]F[+F-F][-FF+F]]

U4=U5=U6=F[+F]F[+F-F][-F+F][+F[+F]F[+F-F][-F+F]]F[+F]F[+F-F][-F+F][+F[+F]F[+F-F][-F+F]-F[+F]F[+F-F][-F+F]][-F[+F]F[+F-F][-F+F]F[+F]F[+F-F][-F+F]F[+F]F[+F-F][-F+F]+F[+F]F[+F-F][-F+F]]

用相同的原理对经过3次迭代的字符序列进行字符统计和计算, 把每次替换后的字符序列进行几何解释, 形成相应的分形图形, 在不加扩展参数的情况下, 偏转角30°, 修剪过程的形态模拟如图4。图4 (a) 为原始景观, 图4 (b) 为经过一次修剪后的景观, 图4 (c) 为经过二次修剪后的景观。由于经过4次迭代生成的字符序列长度L=140 240, 因此省略字符统计和替换结果。

由上可见, 在迭代后的字符序列中, 根据需要加入字符统计算法, 可以实现花草树木修剪过程的模拟, 更加逼真地表达现实世界的多样化。

3 结语

为了更好地模拟树枝断裂的随机性, 在字符序列中引入两个控制扩展参数, 并对L-系统中的字符序列进行新的龟解释, 实现了树枝断裂现象的模拟。同时, 将字符统计迭代算法的三元素集应用于字符序列中, 通过有限次迭代替换, 实现了花草树木修剪过程的模拟。实验结果表明, 通过调整L-系统中的扩展参数可以得到拓扑结构相同但形态差异较大的模拟结果。算法简洁, 实现手段简单, 参数使用灵活, 使折枝和修剪模拟更贴近于现实。

参考文献

[1]LINDENMAYER A.Mathematical models for cellular interaction in development[J].Journal of the Theoretical Biology, 1968 (18) :280-315.

[2]陈晓, 彭国华, 杨康.基于分形L系统生成三维景物的算法研究[J].计算机仿真, 2009, 26 (7) :240-242.

[3]丁欢, 万旺根, 王道臣.基于改进分形L系统植物自然现象的研究[J].计算机仿真, 2009, 26 (1) :200-202.

[4]王春华, 杨克俭.基于L-系统和Perlin噪声函数的风吹树动模拟[J].计算机工程, 2009, 35 (12) :192-196.

[5]柳有权, 王文成, 吴恩华.快速真实地生成树的自然摇曳[J].计算机学报, 2005, 28 (7) :1185-1191.

[6]袁修久, 刘欣, 王胜勇.二维L-系统的推广及在植物模拟中的应用[J].计算机工程与应用, 2010, 46 (1) :143-147.

[7]袁修久, 王胜勇, 刘欣, 等.推广的三维L-系统及在树木模拟中的应用[J].系统仿真学报, 2011, 23 (11) :2308-2311.

[8]孔勇.基于L系统的植物形态模拟[D].西安:西安电子科技大学, 2007.

C编写Tcl文件系统监测扩展 篇9

在内存里维护着一个保存了文件md5码的树形结构来模拟实际的文件系统,定时遍历文件系统与该树形结构,发现不同或比较存在两者的md5码,来判断文件是否发生变化。这个过程是比较复杂的,而且bug不断,所以最后弃之不用了。

有人说用ReadDirectoryChangeW来做的话会很方便,不过一来执着于只用Tcl来解决问题,再者长久没用C,在Tcl实现文件监控也暂时搁置下来了。事情的发展总是需要一些触发,前些时候在看oratcl的源码,大致想弄清楚Tcl与Oracle之间编码转化的问题,最后问题倒是没有解决,但是对于使用C来开发Tcl模块有了初步感性上的认识。当然,尝试的对象就是文件监控了。

2 Hello,World

下面就编写这个模块时的一些想法结合必要的框架,来介绍一下开发Tcl的C extension。而关于编程的学习,一般总是从Hello,World开始的,这里也不例外。例子来自于Tcl的wiki站,先列出代码:

当Tcl调用以上代码编译而成的dll文件时会查找函数PKG_Init作为模块的入口,其中PKG是模块的名字,这里就是Hello。在这个函数中,首先使用Tcl_initStubs来判断使用该模块的当前Tcl的版本。当该函数的第3个参数为1时,明确只有与TCL_VERSION一致的Tcl解析器,比如8.4版本,才能使用该模块;如果像上面例子里为0的话,则高于TCL_VERSION版本的解析器,比如8.5或者8.6也可以使用该模块。之后是一个提供模块信息的函数Tcl_PkgProvide。最后,也是最重要的部分,就是声明模块提供可用命令的函数Tcl_CreateObjCommand。另外还有一个比较旧的命令提供类似的功能,Tcl_CreateCommand,两者的区别在于,前者更好地支持参数的类型转换,所以现在一般只用前者。例子中这个命令的意思是,对于该模块中的hello命令,事实上将执行名为Hello_cmd的函数。最后,返回TCL_OK,表示成功创建模块。而这里的Hello_cmd也很简单,Tcl_SetObjResult设置了在Tcl中调用hello返回的结果。

3 ReadDirectoryChangesW

MSDN对这个函数讲得很清楚,网上也有大量的同步监测例子。该函数对指定文件夹中进行监控,并返回相关的信息。该函数有两种调用的方式,一种是同步调用,即在一个线程里使用阻塞的方式循环查询;另一种是异步调用,函数只在发现有文件变化的时候通知线程。

第一个参数就是被监控文件夹的句柄,它必须以FILE_LIST_DIRECTORY形式来打开;第二个参数用于存储文件变化的信息;第三个参数用于指定第二个参数的大小,一般sizeof第二个参数一下行了;第四个是指是否监控子目录;第五个参数指定监控文件变化的类型,比如是否仅仅监控读操作或者写操作或者两者兼顾;第六个参数在同步监控的情况下用于设置存入第二个参数的文件变化信息的长度,而在异步调用中是NULL;第七个参数只在异步调用中使用,是异步调用的关键所在;第八个参数是异步调用时的可选参数,取决于使用者决定采用何种异步方式,倘若被设定则每次发现文件变化都会调用该参数指向的函数。另外还可以考虑IOCP,即完成端口。但考虑到完成端口的使用需要另起一个线程,并在其中循环检测IOCP的可用状态,与同步并无实质区别。倘若调用它的Tcl解析器不支持多线程,则可能无法使用。即使可以使用多线程,也完全可以在Tcl语言层次上实现,所以在这里不考虑使用IOCP。

将该函数包装成Tcl模块,由易到难,分别是同步调用、多线程异步调用和事件通知形式调用。这里多线程的形式是C层次上的异步结合Tcl层次上线程来实现的;而事件通知则更涉及到Tcl的事件循环API,相比较而言又多出了一个实现目标,故最复杂。

4 同步调用

很长一段时间里困扰于阻塞,因此对此一直深恶痛绝,平时里一般是避之不及,这里之所以要写这个同步的例子是因为它最简单,适合说明问题。

无论为Tcl写怎么样的C Extension,首先是要写好入口函数来进行初始化,像上一章的例子Hello_Init,在这里则是Winnotify_Init。在其中将watch命令绑定到Watch_Cmd函数,具体说明一下。

还是从接收Tcl参数开始,watch命令接受一个可选的参数用于指定监控的文件夹,当忽略该参数时,默认为当前路径。对应的Watch_Cmd函数的objc表示了watch命令共包含了几个词,当等于1时,表示不带可选参数;等于2时则将提取objv[1]作为指定的被监控文件夹;当参数数目不正确时,则使用Tcl_WrongNumArgs来定义一个错误信息并返回TCL_ERROR。

Tcl_WrongnumArgs的第二个参数表示在objv中顺序提取的词的数量,它们将与第四个参数结合作为返回信息。这里Tcl_WrongnumArgs(interp,1,objv,"?path?")设置的信息将是“watch?path?”。

之后打开一个文件句柄,并将它交给ReadDirectoryChangesW循环检测。每当检测到变化的时候,执行循环体内的命令,即根据pnotify->Action打印文件变化的情况。这部分跟Tcl完全没有关系,而且为了简单起见把编码的情况也忽略了,所以无法监控中文目录和文件,但这并不重要,关键是要明白整个流程。

5 多线程调用

同步调用的缺点很多,不单阻塞任务效率低下,如果逻辑一旦复杂需要申请内存,那么还要精心设计内存释放。而像上面这个例子除非设置遇到某种异常或者捕获某个中断,不然无法退出循环,内存的分配和释放也只有在一次循环发生时一起执行。因此,无论什么时候最后是否采用多线程,我个人更倾向于异步执行。

5.1 异步的ReadDirectoryChangesW

在多线程的Winnotify版本中,异步地使用ReadDirectoryChangesW,与同步调用不同的是,必须设置该函数的第七个参数lpOverlapped,该参数将被第八个参数lpCompletionRoutine所指向的函数调用。通常情况下,需要在lpOverlapped的基础上再定义一个数据结构,利用出递给处理函数的首地址来得到所需要的信息。在这里我重新定义了如下的结构:

该结构中的第一个成员便是用于事件通知的,接着分别是文件句柄、接受文件变更信息的存储、指定监测文件变更的类型、是否停止监测、当前使用的Tcl解析器和Tcl中的主线程名称。其中fstop之前的部分基本上适用于ReadDirectoryChangesW的定义,如buffer即是获取文件变更信息的最重要的数据结构,而interp和pThread则将用于监测线程通知主线程所发生的变化。当启动监测函数之后,线程并未被阻塞,只有当监测到文件变更时,线程才会调用lpCompletionRoutine并读取HDIR_MONITOR指向的数据结构中的数据,并在处理完相关信息之后再调用监测函数来启动下一次异步监测。具体的代码就不贴出来了。

5.2 Tcl语言级的线程支持

由于Tcl提供了Thread模块,相比较API而言,不但功能上并未减少太多,而且更易于维护,所以完成启动异步监测之后,在Tcl语言级别完成多线程间的通信更方便。也就是说,在主线程新开一个或者多个线程用于监测文件夹,而主线程本身则处理监测到的信息并根据这些信息来完成进一步的工作。可以使用如下的程序流程:

在主线程中,定义了一个默认用于处理监测线程返回信息的函数proxy,定义了被监测目录与主线程id,后两者被作为参数传递给了监测线程。当启动监测之后,监测线程使用thread::wait来启动Tcl的事件循环,并在其后明确使用了winnotify::stop清理监测过程中所使用内存空间,该指令相对应的函数Stop_Cmd通过调用StopMonitoring来完成清理任务,Stop_Cmd由于比较简单就不列出来了。

由于该函数需要传入参数pMonitor,因此在模块入口函数Winnotify_Init中定义winnotify::watch和winnotify::stop之前,就应该实现定义并初始化pMontor,然后以ClientData的形式供watch和stop命令使用。

5.3 通知主线程

当监视线程发现文件变化之后,需要通知主线程来完成接下来相对应的工作,比如最简单的仅仅是打印变化消息。和线程的实现类似,通知主线程的实现也可以分为使用API实现和在Tcl语言级实现。

使用API,一般调用Tcl_ThreadQueueEvent在指定线程的事件队列中添加一个新的事件。该函数接收3个参数,分别是threadId、evPtr和position,表示线程的Id、某个具体的事件和插入事件队列的位置。事实上,要得到第一个参数就非常困难,由于Tcl语言级的线程Id与API中接收的Tcl_ThreadId数据结构没有太多共同之处,除了Tcl_GetCurrentThread用于得到当前线程Id外,没有能得到某个线程Id号的API,所以这不是一个直截了当的工作。

的确是有一个公共的数据结构维护着Tcl语言级Id号到Tcl_ThreadId数据结构的映射,可以通过它来得到有关线程的信息;当然还可以在主线程启动之后直接调用Tcl_GetCurrentThread得到主线程Id数据结构,并将其作为模块winnotidy指令的一部分参数传递给监控线程来调用。

相比较而言,在Tcl语言级实现监控线程对主线程的通知,显得方便很多。首先还是要得到主线程的Tcl语言级的Id号。这有很多方法,可以将其作为watch命令的一个参数;也可以在监控线程中使用thread::names得到所有线程之后再进行筛选,等等。当监控线程发现文件变化后,异步监控触发相应的lpCompletionRoutine函数,在其中使用thread::send指令给主线程Id号发送执行命令。下面就是该函数的代码:

在上面的代码里,Tcl_EvalEx负责在当前的Tcl解析器中执行一段指令。第一个参数是指向当前Tcl解析器的指针;第二个参数是执行的具体指令;第三个则是需要执行的指令的长度,一般去-1表示全部;第四个则是执行该指令的Tcl环境,TCL_EVAL_GLOBAL即是表示在全局环境中执行,如换成TCL_EVAL_DIRECT,则在当前Tcl模块函数的环境中执行,在这个例子里没有区别。

对于thread::send,还是应谨慎使用,有时候它会造成死锁。比如:

thread::send$tid_1"thread::send[thread::id]{puts hello}"

这段代码将永远不会返回,主线程等待tid_1完成任务,而tid_1则等待主线程执行打印hello的任务,于是死锁便产生。虽然这个例子很愚蠢,但是说明了危险的存在,有时候即使使用异步选项-async也不一定有效。

6 异步事件通知

仅仅在ReadDirectoryChangesW中使用异步的最好结果,也就是另开一个线程让监控在其中执行,这么做看起来事实上与同步调用并无区别。其实纯粹使用C编程时,即使采用IOCP也无非是这种模式,IOCP还是会在另一个线程中循环地检测。幸运的是Tcl有基于事件通知的消息传递机制,在异步调用监测的同时,结合Tcl的事件通知便可以实现在单线程中非阻塞地进行文件监视。

与多线程监测的MonitorCallback函数类似,在事件通知的异步通知函数里,仅仅是将Tcl_EvalEx换成了Tcl_QueueEvent,用于给当前Tcl解析器的事件队列中添加新的事件。它接受两个参数,分别是evtPtr和position,表示事件与事件加入队列的位置,这基本上和Tcl_ThreadQueueEvent很类似。之后还应调用Tcl_DoOneEvent,来处理事件队列中的一个事件,如果成功的话将立即返回,如果失败则可能会阻塞,这取决于传入的参数值。如参数TCL_DONT_WAIT,则无论成功与否都直接返回。

etvPtr是Tcl_Event数据结构的指针,该结构的初始化需要使用Tcl_Alloc来分配内存空间,并且需要给其中的proc成员指定一个执行函数,作为当事件触发时的处理函数。另外,为了方便给处理函数传递必要的参数,应将Tcl_Event包装成新的数据结构,在这里有如下的形式:

除了处于首地址位置的Tcl_Event结构外,还有指向当前Tcl解析器的指针和用于存储Tcl指令的缓冲区。当Tcl事件执行时,Tcl_Event数据结构指针将作为事件处理函数的第三个参数,而在处理函数内部应转换该结构为Cevent结构,从而得到Tcl解析器和执行指令。

之后的代码就一清二楚了,但需要注意的是该函数必须是要返回的一个int值,而且返回1或者0意义大不相同。当返回1时,表示执行完该处理函数后事件将从事件队列中删除,而返回0则表示在事件队列中继续保留该事件。在Tcl的API文档中虽有说明,但写得实在是很偏僻,一不留神就容易造成奇怪的现象。

7 编码

即使使用了WideCharToMultiByte,除非是直接打印,一旦被传入Tcl解析器执行后,这些数据依然会变成一堆乱码,这跟Tcl解析器对字符串的默认处理方式有关。在之前的解决Oratcl的问题时,已经深有体会了。比如“你好”一词,存入Oracle数据库后就成了一堆乱码,说是乱码却也是有迹可循。首先将“你好”用utf8解码,之后再用系统默认比如cp935编码出来,就成了真正存入数据库的数据。事实上,所有进入Tcl的数据都会被自动转化为utf8编码,因此在使用Tcl的API时,时刻要注意做必要的转换。

比如对于打开一个被监视文件夹,倘若是一个中文文件夹,那么对于从Tcl指令watch传入的参数需要重新将其转换为系统编码所表示的字符。

第一个参数表示转换用的编码,当NULL时使用系统默认值;第二个就是从watch指令中得到被监控文件的名称,-1表示使用全部长度的数据,ds是Tcl_DString结构的指针,用于动态存储Tcl中的字符串。一般使用如下的顺序初始化该结构,用完之后需要明确使用Tcl_DstringFree释放分配的内存。

在这个例子里还有一个需要处理字符串编码的位置,就是当发生文件变化时,事件传递回来的数据可能包含中文字符,这时候需要反过来将该数据转换为Utf8的编码,这样才能保证在Tcl中打印出正确编码的文字。

摘要:ReadDirectoryChangesW是Windows系统下用于监测文件系统变化的API函数。使用Tcl的C扩展API对其进行必要的整合与包装,分别从同步调用与异步调用两个角度介绍了如何实现阻塞与非阻塞的Tcl模块,并在此基础上结合Tcl的时间通知机制,实现了单线程非阻塞的文件监控模式。

关键词:Tcl,ReadDirectoryChangesW,事件,异步,编码

参考文献

[1]Brent B.Welch,Ken Jones,Jeffrey Hobbs.Practical Program-ming in Tcl and Tk[M].NJ:Prentice Hall PTR,2003.

[2]Joe Armstrong.Programming Erlang[M].北京:人民邮电出版社,2009.

一种信息系统软件的动态扩展方法 篇10

本文介绍一种让开发商省心、客户开心的信息系统软件的动态扩展方法。

1 实现方法

1.1 功能模块的封装

动态链接库DLL(Dynamic Link Library)是一些编译过的可执行代码。在Windows环境中使用DLL可以实现多个应用程序间的代码和资源共享。DLL独立于语言,在Windows编程环境中允许程序员调用存储在DLL中的函数或者其它资源[1]。以自主编写的病历复印模块为例,设计好并封装在DLL中。该DLL的代码清单如下:

1.2 动态菜单调用DLL

动态菜单生成技术主要是分离了权限与功能的对应逻辑完成角色的访问控制。采用动态菜单设计的思想,将菜单的自动生成与软件业务功能相对应,同时也与代码的更改剥离开来,使得系统管理员可以通过菜单配置工具(或称动态菜单编辑器)来动态的增加、减少各个子系统所需要的构件,从而实现角色所需要的特定的业务功能,也可通过菜单配置工具配置不同角色下包含的构件,而实现此角色下个性化的业务功能,达到以菜单的动态变化来适应企业内个性化的要求,这对大型企业信息化软件系统的开发和部署是至关重要的,同时也能提高软件的维护性、移植性和柔性化程度[2]。

例如应用动态菜单编辑器menu.exe,它通过主菜单文件KWHIS.ZMN连接多个分菜单文件,每个分菜单再连接多个子功能,在每个子功能下挂接多个节点功能模块,每个功能模块调用不同DLL的不同函数。以病历复印管理的DLL挂接为例,新增加的病历复印管理模块调用应用Project1.dll中的函数fyy_blfy,同时赋予一个唯一的菜单项编码,以便在数据库中注册该菜单项(见图1)。

1.3 在数据库中存储配置

2 结束语

没有让软件开发商修改源代码,客户通过动态链接库、动态菜单和数据库三位一体的紧密协作,实现了软件的动态扩展,节省了信息化投入,同时也体现了系统强大的可扩展性。在软件业竞争日益激烈的今天,这种方法极大的提高了信息系统的生命力,值得同行借鉴。

另外动态菜单是中间件技术的一个应用实例。随着计算机技术的飞速发展,各种各样的应用软件需要在各种平台之间进行移植,或者一个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统之间需要可靠和高效的数据传递或转换,使系统的协同性得以保证。伴随着应用系统集成需求不断提升,中间件本身也存在一个不断延伸与拓展的过程,原始的中间件是指位于操作系统与应用程序之间的软件中间件,而现在它则包括了所有应用系统之间的整合、集成,内涵远远超出了以前的范畴。中间件软件已经与操作系统、数据库并列为三大基础软件。依靠中间件—动态菜单编辑器来实现业务整合和工作流程的管理已成为一个趋势[3]。

摘要:随着应用环境的不断变化,对现有信息系统软件功能进行扩展的需求时有发生。该文介绍了一种利用动态链接库、动态菜单和数据库技术实现软件功能动态扩展的方法。

关键词:动态链接库,动态菜单,软件,动态扩展

参考文献

[1]何定华.在Delphi中实现窗体的DLL封装[J].电脑知识与技术,2010,6(14):3636-3637.

[2]王玉峰,张振业.基于.NET反射技术的动态菜单的设计与实现[J].微计算机信息,2008(3):9-11.

扩展思维向度 篇11

一、文言文教学为什么要扩展学生思维向度

(一)放飞学生思维,课堂才会精彩无限

文言文课堂教学,由于知识点相对难一些,许多教师就直接给学生讲,讲参考答案,讲教师自己的思路,这样做的问题就是学生思维容易受限,教师一步一步引导学生赞同自己的观点,学生被参考答案或是教师的观点淹没了,他们失去了自我,课堂当然就没有活力了。如果学生的思维受限,课堂的生成性问题就不会有,课堂就不会精彩,当然也就只能是风平浪静了。

当我们教师放飞学生思维,让他们尽情地去想、去展示时,你会发现学生的潜能是无限的,许多东西是教师无法做到或是想到的,课堂本身就应该是百花齐放、百家争鸣的地方,我们应让学生尽情去表达交流,因为每个人所想的不一样,才会产生观点的碰撞,才能促进大家的思考,才能得出不同的结论或是方法,因为不同所以丰富,因为丰富所以精彩,因为精彩所以有趣。

比如我教柳永《雨霖铃》时让学生充分发挥想象,将课文改写成散文诗,学生的思维被放飞,学生的积极性非常高,改写出来的散文稿一篇比一篇精彩。有的同学以男子角度来写“当树梢上的秋蝉发出最后一声凄凉低吟,当骤雨之后乌云慢慢散开,当你我依依不舍在傍晚的长亭下送别,当你强颜欢笑与我在都门帐外举杯饯行……”有的同学以女子角度来写,笔法各有特色,仅就借景抒情的用法,就各不相同,学生相互借鉴,相互启发,最终共同进步。

(二)设置不同向度,学生才会自由选择

学生怕学文言文是因为难懂,因为文言文学习是一个长期积累的过程,许多知识点、考点如果老师只是从某一方面或以某一方法来讲解可能只让一部分学生明白了,而另一部分学生未必清楚。教师布置文言文的某一项任务,可能有的学生能轻松完成,而的有学生则无法完成。同一种思维方式,同一种解题方法,同一种主题思想,不一定所有学生都接受,也就是说不一定能满足所有的学生,在教学中尤其是基础差、底子薄的学生往往被教师忽略了,这样会使两极分化越来越严重。解决差生问题我认为最好的办法就是设置多个向度,让学生根据自己的情况作出适当的选择。

比如教学李煜《虞美人》时,在理解鉴赏阶段,为了考虑和照顾到不同的学生,我提供了诗词理解鉴赏的多个向度。①说说你喜欢的好字好词,为什么;②从本词的意象意境方面谈谈你的理解;③你认为的经典名句是哪句,为什么;④谈谈读了这首词后的感想感悟;⑤这首词对你的写作有什么帮助……学生可自由选择其中的1-2个角度来谈谈。这样更多的向度,就能照顾到不同层次的学生,课堂当然就会精彩纷呈。

(三)扩展思维向度,考试才会灵活应变

当今的高考试题,灵活度更大,对思维能力的要求更高,很多时候,知识点学生已掌握,但缺乏多向度思维的能力,结果只能是错误越来越突出。我常给学生讲“同我者死,似我者俗,超我者巧”,要让我们的课堂精彩起来,让学生适应新高考,就必需扩展学生思维向度,让方法或答案丰富多彩。

比如在积累和复习文言虚词和实词时,不要死记硬背、生搬硬套,应结合具体语境,比如搭配、词性等情况灵活应变,毕竟考查的是理解“在文中的含义”,如此方可提高文言文阅读的解题能力。一种方法解不了,再换另一种方法;一种思路行不通,再从另一种思路着手。在多种方法中,在多向度思考中总有一种是能顺利而正确解题的。有多向度思维习惯的学生不会一条道走到黑,他们懂得灵活应变。我们常给学生讲采分点和对应采分点答题,这里的采分点一是要有条理性,更重要的一个方面是要会从不同角度来答,那么答到的点才会更全面,得分才会更高。

二、文言文教学怎样做到扩展学生思维向度

在文言文字词、翻译的教学上,可以设置多向度;学生可能对同一人物的看法不一,对同一人物的关注点不一样,所以对人物形象的分析答案也就能更丰富;从写作素材的运用上也可扩展学生思维向度,对同一个材料,我们可以选取它的不同角度应用于不同的话题或是主题中。

(一)尽量给学生一种最适合自己的方法

我经常给学生讲,同一件事至少有100种以上不同的解决办法,如果只有一种方法就意味着死路一条。达成同一目标,可以有不同的方法,在众多方法中学生可以选择自己认为最容易或是最喜欢的方法。比如在讲“而”字用法时可用口诀记为“你的修假并因转承递”谐音为“你的休假病因专程递”可以这样联想“你生病要休假,病假要写明病因,专程递给你的班主任”;也可用口诀记忆为“‘而的用法要记得,代、并、顺承、修、转折”;还可记为口诀“而你像并蒂莲,因羞却成假”;我还给学生这样讲“‘而象形字,小篆字形像胡须,上面的‘一表示鼻端,‘|表示人中;下面分内外两层,外层像两腮的胡子,内层像生在嘴下的胡子。胡须美观有修饰作用,胡须柔软有转折作用,胡须会变长有递进作用,胡须会变白是因为人老了所以有因果关系”等。对“而”字的讲解我提供了多种方法,学生可任选其中一种来记忆。

对人物形象的分析,往往是课堂最精彩的地方。又如有这样一段文言文:“肃宗为太子,常侍膳。尚食置熟俎,有羊臂臑。上顾太子,使太子割。肃宗既割,余污漫刃,以饼洁之,上熟视不怿。肃宗徐举饼啖之,上大悦,谓太子曰:‘福当如是爱惜。”我们可以引导学生从多角度分析这则故事的含义,可以从玄宗的角度看,也可以从肃宗角度看。第一,唐玄宗有心于培养自己的儿子爱惜物力的美德,善于从寻常小事考察太子;第二,唐玄宗自己骄奢淫欲,而对他人却严格要求;第三,唐肃宗爱惜物力已成习惯;第四,唐肃宗善于窥探父皇用心,因而小心翼翼,在各种小事方面也力图自保。

从写作素材的运用上扩展学生思维向度。我们不是缺乏写作材料,我们缺乏的是发现材料的眼力。对同一个材料,我们可以选取它的不同角度应用于不同的话题之中。面对材料《曹刿论战》,我们可从多角度来挖掘写作素材:第一,关心国家大事,要有强烈的参政意识;第二,要积极创设民主参政的环境;第三,位卑未敢忘忧国。

(二)尽量给学生一项最适合自己的任务

学生的个性不同,能力不同,在听、看、讲、想、做等要素中每个学生的能力是有差异的,教师对学生的要求也应该因人而异。教师布置任务时,应尽量照顾不同的学生,让不同兴趣爱好者、不同特长的学生都能选择适合自己的任务——也就是说在任务选择上,如果学生不是被迫的而是自主的,那么学生在完成任务时就会很投入、很认真。比如在教学荀子的《劝学》时,我给学生布置了如下作业:或说或写或抄一段二百字左右的有关劝学的说理性的文字,可从以下内容任选一个方面来完成,要求用比喻及正反论证的方法。①珍惜时间;②勤奋努力;③学习方法;④学习态度;⑤读书作用……这时学生会根据自己的情况作出选择并努力完成任务。

(三)尽量给学生一些交流展示的机会

当学生根据自己的情况选择了适合的方法和适合自己的任务后,为了相互启发,分享彼此的思维成果,非常有必要进行交流和讨论,我常给学生说,“你有一个苹果,我有一个苹果,咱们交换各得一个苹果;说你有一种思想,我有一种思想,咱们交换各得两种思想;说你有一种方法,我有一种方法,咱们交换各得两种方法”, 学生思维在碰撞中产生火花,思维的火花点燃思维的灵感。在我的语文课堂上,学生互相交流、讨论、合作,互听、互看、互评、互测,阵地始终是学生的,以学生为主体的理念得以体现,所以学生说40分钟的一节课不知不觉就过去了,因为课堂本身充满了兴趣与活力。我在教学中碰到以下情况时,经常要求学生交流讨论:①学生对问题的意见不一致时;②一题多解时;③学生思路打不开时;④需要增大信息量时;⑤需要增加强化次数时。通过交流与讨论,许多生成性问题也就出来了,课堂自然就会精彩无限。

比如教学张若虚的《春江花月夜》时,讲到“月亮”“江水”“落花”这三个意象时,为了增大信息量,增加强化次数。我让每个同学先收集和思考分别有“月亮”“江水”“落花”意象的诗词1—3首,在课堂上交流展示,统计结果是有关“月亮”意象的诗词,学生共找了45首,有关“江水”意象的诗词,学生共找了26首,有关“落花”意象的诗词,学生共找了25首。通过这样的交流展示学生对这三个意象,就有了更深的理解和印象。

总之,文言文教学一定要改变课堂上教师把持讲台的现象,在课堂上一定要注意多向度设置问题,注意扩展学生的思维向度,让学生有自主选择的权利,让学生有交流展示的机会,让学生共享思维成果,让不同层次的学生都能在原来的基础上有所进步,文言课堂教学自然就精彩纷呈了。

系统扩展论文 篇12

关键词:供应链,管理扩展,VFP9.0,SQL数据库

1 概述

我院选择用友管理软件的库存模块、采购模块和存货核算模块来实现仓库管理、采购管理和财务管理的一体化, 有利于优化工作流程、降低成本、提高效率。由于该软件主要针对企业开发, 在使用时不能完全满足我院的需求, 主要体会是存货基础档案查询时不太方便, 查询多年度账表时需要频繁切换年度账套, 订货计划单不能动态生成, 发票在仓库、采购和财务之间流转时不能打印交接单, 查询出入库单的审核状态时不太直观等。因此, 有必要设计一个操作容易、界面友好的管理扩展系统, 帮助我院更方便地开展日常管理工作。

2 系统分析

2.1 功能需求分析

2.1.1 出入库单审核状态的查询需求。

清晰地区分未审核和已审核的出入库单, 在窗口左侧显示未审核出入库单据的单据头摘要信息, 如单据号等等;在窗口右侧显示已审核出入库单据的单据头摘要信息;根据所选的单据头信息, 能查询到完整的出入库单据。此功能主要用于根据部门的领料单提前录入单据, 在实物配送时进行审核和打印, 提高工作效率。

2.1.2 发票交接需求。

当发票在仓库、采购和财务等不同环节流转时, 按设定的日期时间范围查询发票入库的日期、发票号、摘要等明细清单, 打印出明细清单作为签收凭证。

2.1.3 动态订货计划需求。

订货计划单既可以根据设定的最低储量、安全库存等条件生成, 又可以依据对多个时间周期内存货用量的分析动态生成;既可以按整包装生成订货数量, 又可以按最小计量单位生成订货数量。生成初始订单后, 显示每个存货的订货信息、各时间周期的用量和明细账, 允许用手工方式取消某存货的订货记录或者修改订货数量。

2.1.4 手工管理订单需求。

可以对所有订货记录按单据形式进行增加、修改及删除操作, 增加和编辑单据时允许录入“非标准”订单记录, 其中“非标准”是指数据库中不存在该存货的基础档案。

2.1.5 订货记录与入库记录的对应需求。

将已经订货但尚未到货的订单记录与入库记录进行对应关联, 从而了解订购的物资是否已经全部到货、部分到货及未到货 (简称订单到货状态) 。通过查询订单到货状态生成未到货物资的催货单。

2.1.6 存货档案及库存台账查询需求。

查询存货档案的基本信息并用表格显示, 能灵活设置过滤条件, 并能按所选的存货档案记录进行多年度账套的库存台账查询。

2.2 数据流程

经过对用户功能需求及系统需要实现的功能进行分析, 并和仓库人员、采购人员反复交流, 得出系统的数据流程图如图1所示。

3 系统设计

3.1 总体设计思想

本系统采用基于Windows操作系统的C/S (Client/Server) 架构, 这种架构适用于局域网, 可以为数据提供更安全的存取模式, 响应速度快, 充分满足客户自身的个性化要求。SQL Server是一个关系数据库管理系统[1]。VFP9.0提供面向对象编程功能, 并支持对SQL数据库的访问[2]。因此, 本系统用VFP9.0作为客户端软件开发工具, 用SQL Server 2000作为数据库, 在Windows操作系统上实现C/S。

另外, 为保证用友供应链管理软件的数据库安全性和服务器的运行速度, 本系统在另外一台服务器上建立了一个新数据库, 将用友数据库中的部分数据定期复制到新数据库中, 并根据需要在新数据库中建立自己的用户表。

3.2 系统功能

在仔细分析了我院的管理需求后, 将整个系统分成了三大模块, 每个大模块又有若干个子模块。系统功能模块如图2所示。

3.2.1 系统管理模块

用户可以进行用户间的切换、修改密码、退出系统等功能, 可以对存货档案的低储量、安全库存量、高储量、包装、是否订货等参数进行设置, 有系统权限的用户还可以进行用户管理。

3.2.2 日常工作模块

完成数据的二次处理, 包括从用友数据库服务器下载数据到本系统数据库服务器、将实物入库记录与订单记录进行比较后产生相关联的到货状态、按照设定的各种参数计算并动态生成订货单, 对订货单单据进行手工方式的增加、修改和删除等。

3.2.3 账表查询模块

用户可以执行各种过滤条件的查询, 能查询全部存货的基础档案和多年度的库存台账、发票入库记录、出入库单审核状态以及订货记录的到货状态等。

4 系统功能实现

本系统实现了图2介绍的全部14个子模块功能, 由于篇幅所限, 在此仅介绍订单记录与入库记录对应子模块及动态生成订货计划单子模块的功能。

4.1订单记录与入库记录对应功能

订单记录与入库记录对应的主界面 (见图3) 窗口上部显示记录选择范围和对应方式等参数, 中间表格显示实物入库记录, 左下侧表格显示订货单记录, 右下侧二个表格分别显示所选存货的配送标志、出库流水账等辅助信息。主要特点是通过参数设置, 可以将入库记录和订货单记录设置为一对多关联状态, 简化对应操作过程;也可以将入库记录和订货单记录设置为非关联状态, 实现新品种存货 (在存货基础档案中需要新增的存货) 与“非标准”订货记录的对应关联。

4.2动态生成订货计划功能

动态生成订货计划单主界面 (见图4) 窗口上部区域用于显示及设置计算订货计划单的各种数, 右上部区域对动态生成的订货记录进行各种件过滤, 中间表格显示根据所设参数计算出的订记录, 中下部表格显示所选订货记录的明细账, 最下面单行表格显示所选存货档案的默认参数。主要特点是根据设定的分析周期及各种参数, 对存货出库情况按一定的算法进行分析, 分析结果与存货现存量比较后形成初始订货记录, 即实现动态订货;根据中间表格列出的存货订货数量、各周期使用量及平均用量等, 参照中下部表格所显示的存货明细账, 逐条查看订货记录, 确定是否对该存货进行订货或修改订货数量, 实现人工干预。

5结束语

本系统成功运行了三年多, 对于我院完善订货方式, 减少库存, 防止物资积压, 加快物资流转提高服务质量及效率等具有重要意义。

参考文献

[1]唐学忠, 费贤举, 腾刚, 等.SQL Server 2000数据库教程[M].电子工业出版社, 2005.

上一篇:持续荷载下一篇:体育教育专业理论教学