时间编程

关键词:

时间编程(精选三篇)

时间编程 篇1

在现代生活中,很多情况下都需要定时或按特定时间将设备打开、关闭。显然,靠人力去实现是不切实际的。因此,性能可靠的时间控制器便有了其用武之地。本文介绍的可编程时间控制器适用于设备在每天规定的时间段内定时开/关、间歇工作的场合,可设定3 2个工作时段(可扩展),自带日历、实时时钟,具有0-24小时循环使用及自校准功能。可提供6个继电器的输出,打开、闭合时间均可以设定。并且在本设计中,继电器具有自锁功能,可保持当前状态,直到下次状态改变为止。人机交互使用128*64分辨率的点阵式LCD显示,具备四按键键盘输入功能。用户操作呈现菜单化,方便使用。

2 硬件组成

本控制器选用Atmel公司的ATmega128型单片机,其电路原理方框图如图1所示。

2.1 控制部分

电路中的主要控制元件采用美国Atmel公司的8位单片机ATmega128。ATmega128是一种高性能、低功耗CMOS型的8位单片机,采用先进的RISC结构,可以取得接近1MIPS/MHZ的性能,从而使得系统设计者可以在功耗和处理速度之间取得平衡[1]。

ATmega128单片机片内自带有128KByte的系统内可编程Flash存储器,用于存储程序和常量数据。片内自带4KByte的SRAM,用于数据存储,以及4KByte的EEPROM。在外设方面,ATmega128具有独立片内振荡器的可编程看门狗定时器,保障程序跑飞后系统可以及时复位;两个可编程的串行USART等;具有两个可工作于主机/从机模式的SPI串行接口,方便连接外围设备和系统扩展。目前本文设计的时间控制器可实现每天32个时间点的多路I/O输出,程序占用60KByte的Flash空间,考虑到扩展能力,选用该型号单片机是符合设计需要的。

2.2 时钟电路

时钟电路是时间控制器实现实时控制的核心部分,要求及时准确,掉电后保证继续计时,因此需要选用一款时钟芯片来保证这一点。

DS1302是Dallas公司推出的一种高性能、低功耗、带RAM的实时时钟芯片[2],本设计中使用单片机的I/O口模拟实现串行通信时序进行数据传送,能够向单片机提供秒、分、时、日、月和年的实时时间信息。该芯片引脚与单片机只需要三根线通信:SCLK、RST、I/O,只占用3个单片机端口。

如图2,在控制器正常工作情况下,D S 1 3 0 2通过VCC2由VCC供电。控制器断电后,则通过VCC1由电池BT1供电,从而保证DS1302的正常工作,断电后再上电时时间还正确运行,避免重新输入时间的繁琐操作。

2.3 外部存储芯片

时间控制器在实际使用过程中,经常是处于无人看管状态。对于操作者而言,是十分有必要知道控制器的运行状况。因此,控制器必须添加存储日志记录的功能,以供操作者随时查看。该日志记录需要满足控制器掉电记录不丢失,且保证一定数目的记录存储功能。控制芯片ATmega128虽然自身带有4K Byte的EEPROM,但本控制器的时间记录每一条须占用7个字节,即小时(2Byte)、时间(2Byte)、分钟(2Byte)、继电器状态(1Byte)。考虑到系统扩展能力,仅仅4K字节的容量仅仅能保证最多十余天的日志存储,不能满足使用者的使用要求。

所以,本设计采用了片外E E P R O M存储单元-AT24C512型I2C串行E2PROM。

AT24C512是512Kbit I2C串行E2PROM,采用低功耗CMOS技术,1.8V到6.0V工作电压范围,与1MHz I2C总线兼容,写保护功能,自定时擦写周期,100,000编程/擦写周期,可保存数据100年等特性。

如图3,AT24C512是8DIP封装,其中,VCC为电源,GND接地,WP为写保护,本设计实现的时间控制器并不涉及到频繁的读写该芯片,所以不使用该功能,接地处理。而A0、A1为地址线,由于本设计仅使用一片AT24C512,因此不需要地址选址,A0、A1均通过下拉电阻接地即可。所以真正需要与控制芯片MCU连接的仅有IICSCL、IICSDA两根线,分别为信号线和数据线。该两根线连接至ATmega128的I2C控制接口,通过对单片机的I2C操作,即可实现对AT24C512数据读写,简单可靠。

2.4 显示电路

较之于以前的L E D显示型时间控制器通过不同LED数码管闪烁给用户提示信息,本控制器使用128*64点阵液晶显示,不但可以显示出文字化的菜单,人机界面更加直观,而且输入信息也更加便捷。

本控制器选用北京青云的LCM12864G型号液晶控制模块,该液显模块内置KS0107型液晶驱动器控制IC,可与ATmega128的I/O直接连接,具有电源线、6条控制线、8位标准数据总线。可显示8个*4行共32个汉字,或16个*4行共64个英文或数字字符。该款液晶模块呈现绿色背光,以黑色字体字体显示,用户界面显示很清晰。

液晶模块与单片机硬件连接示意图如图4所示。液晶模块的数据口DB0~DB7与PA0-PA7依次相连,用来传输数据或指令;/写选择引脚R/W与PD4相连,电平时读数据,低电平时写数据;数据/指令选择引脚RS与P D 3相连,高电平时将数据D B 0~D B 7送入显示RAM,低电平时将数据DB0~DB7送入指令寄存器;写使能引脚E与PD2相连,高电平有效下降沿锁定数据。复位信号RST与PD5相连,低电平有效;片选信号CS1、CS2分别与PD6、PD7相连,用来选择LCD的前后64列,高电平有效。LCD驱动电压Vo应用时在VEE输出与电源VDD之间加一个电位器,调节电位器可以改变LCD显示的明暗对比度。

2.5 键盘及驱动电路

本时间控制器使用四按键键盘,分别实现调整数字大小、进入下一级菜单、返回、确认的功能。键盘上四个输入端分别接PE4-PE7,另外一个公共端接地。原理为设置PE4-PE7为输入且内部上拉,这样的话在键没有按下时单片机的I/O口电平为高电平,反映为PINx寄存器I/O相应位为1。反之,当有键按下时,相应键内部电路与公共端即地导通,从而将单片机I/O口电平拉低,PINx相应位即变成0,根据这一现象编程,即可判断出所按下键位。

由于ATmega128在复位上电时各引脚瞬间电平为高电平,若采用高电平控制继电器的闭合,则上电时继电器会动作,影响使用。所以采用低电平控制,避免此现象的发生,故使用六输出反相器74LS04芯片,而且一片74LS04通过六个I/O口可提供六路输出,而且通过扩展多片74LS04,可以扩展输出,方便系统扩展。

驱动电路图如图5所示,AC-SSR为交流固态继电器,1、2脚输出接交流电源及负载,3、4脚为输入端。当PF7为高电平时,2脚为低电平,三极管9013基极为低电平不导通,从而继电器输入端不导通,继电器不输出。反之,当PF7为低电平时,经过74LS04后9013的基极为高电平,三极管导通,从而3、4引脚内部导通,相当于输入端闭合从而继电器输出端内部可控硅导通,可以接通负载。

3 软件设计

本系统程序使用C语言编写,采取模块化编程,将子功能分别编写成子程序。主要有驱动程序,包括DS1302的读、写操作,KS0107液晶控制器的读、写操作,以及AT24C512的读、写操作。功能函数,包括液晶上显示文字、数字,液晶清屏操作,以及单片机Timer0溢出中断子程序(内部调用时间更新子程序、时间匹配子程序)等等,方便调用及查找。

其中,DS1302程序用于提供当前时间,提供时间控制的依据。Timer0中断子程序负责调用时间更新子程序,实时读取DS1302当前时间,再实时更新液晶屏上显示的时间。另外,该子程序也负责根据用户设定的继电器工作安排改变多路继电器的开/闭状态,通过调用时间匹配子程序来判断是否需要改变当前继电器状态,实现设计初衷。

本设计按照传统的前后台系统组织程序,前台程序为单片机Timer0溢出中断子程序,定时执行。后台程序为键盘扫描程序和显示程序,当有键按下后进行键盘处理,执行显示程序进行液晶显示内容的更新。

主程序开始后进行软硬件的初始化,打开中断,然后进入键盘扫描及显示程序。显示程序用于在液晶上显示当前时间,继电器工作状态,提供用户菜单操作信息等,提供人机界面。时间匹配子程序的原理是遍历用户设定的时间点信息,若与当前时间匹配则进一步判断继电器状态是否需要改变,对继电器的输出进行操作。在此基础上添加控制器的功能,如多路继电器协同工作,执行天计划或周计划特殊事件等等。

主程序、中断子程序流程图如图6、图7所示。

4 结束语

本时间控制器在实验室环境下通过对蜂鸣器以及不接负载的交流固态继电器的控制进行了试验,系统运行较稳定,在设定的32个时间点可以顺利切换状态,天计划、周计划控制方案也可以实现,顺利控制蜂鸣器和继电器的动作。

参考文献

[1]陈冬云,杜敬仓,任柯燕.ATmega128单片机原理与开发指导[M].北京:机械工业出版社,2006.

交换编程――结对编程的延伸实践 篇2

“结对编程技术是一个非常简单和直观的概念:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或者同一组测试。与两位程序员各自独立工作相比.结对编程往往只需花费大约一半的时间就能编写出质量更高的代码, 但是,人与人之间的合作不是一件简单的事情——尤其当人们都早己习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。”(引自《结对编程技术》,原名为《Pair Programming Illuminated》,作者为Laurie Williams, Robert Kessler)。下面我们分析一下结对编程的特点:

结对编程在很多项目中得到应用,也作为XP(极限编程)一个非常著名的观点和做法被很多人大为推崇。

结对编程是两个人同时做同一件事情的一种方法。表现上会给人一种浪费一个开发人员的感觉,实质上这的确是可以提升效率的。

同样的这个做法,我在上海进行的一个类ERP项目中用过一次,当时在我做完权限系统的全部功能后,和一个兄弟合作了一个模块,我们两个人只用了三四天时间,就完成了这个新的模块的全部功能。相对于我们此前做的功能模块来说,时间不到那些模块开发时间的十分之一。但由于结对编程会让人感觉到资源被浪费了一半,在20的一个项目中,我提出进行结对编程的时候被领导拒绝了。这件事以后,我就开始考虑如何才能降低这种表面的浪费,而又能让大家交流起来,同时能提高团队的稳定性。

产生背景

年我的项目组要做如下这样的一个项目:

这是电信MSS系统的核心业务系统部分,包括了规划、设计、施工、验收、财务、合同等多个重要环节和多个部门的业务。当时团队开发人员数量较少,人员技能较为均衡,没有水平超出其他人过多的技术人员。这个项目在最初评估的开发周期就是第一个版本在五个月内完成,整个项目至少要做上一年以上,而最后的实际情况是,这个项目随着不断的升级和调整一直开发了三年多。最初的开发团队是十一个人,后来扩展到二十三个人,主要开发人员总数为十六个人,其中有四个人技术水平相对较高,另外的七个人技术水平相对较低但是也都有三年多的实际项目开发经验,其中有三个是我带的三个应届毕业生。

由于开发团队中没有技术水平超出其他人很多的人员存在,因此技术方案的论证过程都是在大家的共同讨论中制定下来的,只是在团队整体控制上,当时我有相对较强的发言权。因此在权衡了整个项目的实际情况后,完成需求工作我就告诉弟兄们——第二阶段设计模型的开发大家交换来做。

刚开始很多弟兄不理解,因为相对而言我的开发经验比其他人多了几年,所以当时我说的一些话兄弟们还可以接受,于是我就直接要求大家按照我的计划执行。在设计模型开发完成后,我再次要求大家进行交换。两次交换完成后,保证了每一个模块都有至少两个人对其十分熟悉,一方面不会因为人员的变动造成团队的不稳定(这一点考虑相对较少,因为当时的团队合作时间比较长,大家彼此十分熟悉和了解),另一方面保证每一个模块的开发人员都能找到人进行讨论,从而增加了团队内的沟通,方便了协调工作的进行。

因此在那个团队的开发过程中,我们经常是大呼小叫,无论走到哪里,都是十分热闹的场景。

方法定义

与结对编程类似,交换编程也是一个非常简单和直观的概念:两位或者多位程序员轮流开发同一个软件系统的同一个模块的不同阶段的任务。交换编程的方式更合适的说法应该是交换开发,这种方式不仅仅可以应用于软件项目,也适合其他研究开发型项目。相对而言,这更是一种更容易被人们接受的方法,在前文大家已经看到了它在实际项目中的事实,这里先分析一下它与结对编程的不同之处:

它仍然采用传统的一人一机的开发方式,结对编程是两人一机。

它在每个迭代间进行多人交换或者两两交换,结对编程没有交换的概念。

它与传统的编程方式之间的差别是在每个迭代间进行多人交换或者两两交换,而传统编程没有交换的概念。

这里说明一下两个概念:

轮轮流交换:三个以上的程序员之间相互交换所开发的工件,不仅限于三个。例如:A1的开发内容交给A2,A2的交给A3,……,An的交给A1。这种方式称为轮流。

两两交换:两个程序员之间相互交换所开发的工件。仅限于两人之间。

建议实施方式

交换编程中的操作与其他过程有较大的差异,根据经验,建议在软件工程实施的各个阶段按照如下的方式进行:

需求工程中,需求调研和需求分析进行轮流交换,轮流交换至少是三个以上的人进行互换,不是两两互换;

概要设计(分析模型)开发中,需求分析到概要设计也进行轮流交换;

详细设计(设计模型)开发中,概要设计到详细设计再进行一次轮流交换;

编码实施启动后,详细设计到编码的交换采用两两交换,注意这个时候不再采用轮流交换了。

在全程建模的开发方法下的交换编程应用方式如下图:

由于目前没有进行实际数据的度量对比,本文也无法从量化的数据上来说明问题,只能通过一些具体的事实来进行说明和验证:当时这个项目的模块从7个扩展到了11个,人员数量从11人扩展到了23人,我们在七个月内满足了南方11家省级电信公司和集团公司的基本业务需求,从4月到月期间,基本完成了这些省公司版本的二次定制开发任务。

在编码以前全部采用轮流交换的目的就是为了让更多的人了解项目进展的全部内容,有利于增加团队内的交流,使更多的人对项目所开发的内容熟悉,并能让他们提出自己的观点,也有利于使更多的人从更多的角度来研究某个系统模块所需要实现的功能和用户需要解决的实际问题,不会因为某个人的定式思维而出现理解偏差,从而造成对需求的理解不到位。

详细设计到编码的交换采用两两交换,这是因为前期需求已经基本上都稳定下来了,这时候不需要对用户需求进行更多方面的理解,只需要进行实施并进行纯粹的编码工作即可。此时做轮流交换就不存在任何意义了,相反只能影响开发进度。

优劣势分析

这里所提到的优势都是和具体的开发方法相关联的,大部分是相对于XP方法中的结对编程,同时也会分析它与传统开发方式间的优劣。

开发时间“浪费”不明显

表现

这个开发时间“浪费”不明显是相对于结对编程与传统开发模式而言的,至少让老板没有感觉到人员分配方式带来了人员的浪费。大家都知道,结对编程需要两个人共用一台计算机、一套键盘、做同一个故事,这样的开发方式往往会给人感觉浪费了一个人,虽然事实上未必如此。但是如果哪个项目经理第一次甚至说前几次这样做,估计大多数老板都会表示反对的,因为他会感觉自己的技术人员只有一个人在做事情。同样,在的敏捷中国开发者大会上,ThoughtWorks的总经理也提到了这个问题,他的解释是这样的:当两个人合作三个月以后,效率会超过两个人单独编程的效率!但请注意:这里有一个时间前提——三个月以后。

三个月这个时间未必是真实确凿的时间分界线,它只是一个模糊的大概的时间范畴,如果两个人配合的好,也许只需要两个多月,如果配合不好,也许需要四五个月的时间,或者更长的时间……。我相信这样的说法连Martin也不会反对的。从这个时间界限上,大家可以看看国内公司的项目状况,然后再继续我们的讨论。

分析

项目情况:国内很少有时间限度较长的项目,大多数项目都是在三个月到半年时间内结束,有些甚至只有一个月。这样的时间特性,将使得这个三个月的期限变成了一句空谈,也就是说,当两个人磨合好的时候,项目已经结束了。这时候,有人会说,下一个项目还可以继续合作呀,好,那我们来看看国内项目团队的人员变动情况,然后再继续。

人员情况:国内大多数的公司都处于一种为了谋生而存在的状态下,有很多技术人员都有三五个月就跳槽的经历。不仅仅是技术人员,往往公司也是这种状态,很多公司就是为了某一个项目而建立的,老板在招聘技术人员的时候,都是往最低限压低技术人员的工资,当一个技术人员对项目了解到一定程度的时候,这个时间往往是在三个月到半年时间之间,

半年,或者一年,是一个人最容易发生跳槽行为的时候,因为这个人了解了公司的实质情况,如果老板当时骗了人,那么这个人必然要离开公司;如果老板当时过分地压低了他的收入,那么这时候这个技术人员就希望能够获得加薪等等,除此之外,还有很多很多其他的因素,都会给人带来未知的行为。也可以说,国内很少有团队成员能够合作达到一年以上的时间。这样的话,第一个项目磨合好了,第二个项目就是在考虑跳槽,第二个项目未结束人就走了,这是我们平时很常见的现象。

这个时候做结对编程,效果就不会那么明显,因为在人员相对成熟的时候,人的心理发生了较大的变化,工作的积极性和配合程度也远远不及刚刚进入公司的时候。那么结对编程在这样的环境下还能进行下去吗?估计不用分析就可以知道了。这时有人会说,如果配合不好,那就换人结对,不一定非要这两个人结对。那这就要从项目组人数说起了。

项目组人数:在我所开发过的项目中,大概有不到一半的项目有十个人以上的开发团队。最大的团队开发人员是不到三十人,这二十多人还要分成几个组,每个组也就五六个人而已。在这种情况下,结对的问题就出现了,在组内的你只能和这么三五个人结对,是不是都很容易配合起来呢?这个事情很难说。配合不好怎么办?换人?换项目?还是换公司?当然,如果配合了三个月还配合不好,站在公司的立场上,是肯定要考虑开除掉某人了,至少也要将他降薪或者调离这个项目组,因为公司承担不起这么大的风险。项目经理更是在担着风险,因为结对编程的事情老板本来就不太乐意看到,本来老板就有意见,而项目组如果发生了这样配合力度很差的情况,项目经理的处境可能就非常危险了。

综合上面这三个方面的情况,我们可以得到如下的结论:

结对编程在中国这些短小项目过多的情况下是不太适合的!结对编程其实更适合一些相对人员较为稳定的开发环境,否则,三个月的低效率配合时间会让老板将项目经理的脑袋当球踢的。但是,结对编程还是有其好处的,比如,提高项目组的稳定性,当一个人离开后,另外一个人可以很快地将新人带到位,项目组不会因为人员变动而发生较大的风险问题。同时,结对编程提高了程序员之间的交流,团结了项目组内成员,同时容易形成人月神话中提到的胶冻团队的效果。另外,在三个月后还是有效率提高的情况发生,的确能够带来很好的效益的。

这时候,交换编程就带来了很好的效果,一是没有老板担心的两个人做一件事情的风险,同时增加了项目组内成员的沟通交流,也提高了团队的稳定性。但如何提高团队的稳定性?

项目组稳定性提高

表现

在我前面的例子中可以看到,一个模块至少有三个人对他它很熟悉,因此在后面的开发过程中,无论哪个人发生变动,都不会影响这个团队的稳定性,所有的任务都能够很好的延续下来。每一个系统的模块都会至少按照阶段数量(不同的项目会有不同的开发周期,同时也就有不同数量的人会对这个模块十分熟悉)分给不同的人来进行开发。如果和结对编程配合起来使用,则将会使得对同一个模块了解的人数达到一般交换编程的两倍人数。

分析

有了这样的对每一个模块都很熟悉的人员数量的存在,团队的稳定性就会表现出来,任何一个人的变动或者少数人员的变动都不会对团队和开发进度产生较大的影响。因为随时都可以有其他人来接替这个发生变动的人的全部工作,也很容易培养新人进入到团队内来进行工作。

更适合没有绝对高手的团队

表现

当团队内没有绝对高手存在时,也就是说,系统的架构设计将是更多的人一同讨论出来的,并在开发过程中不断的修改和调整。

分析

没有绝对高手存在,系统架构设计就不能够在系统进行分析设计前完成,而同时架构的不稳定,就无法更好地安排任务计划和制定故事,这些都会影响到整个系统的开发进度和过程,同时,敏捷编程所倡导的很多做法就无法在这个大前提下来进行实施。

国外能够很好地采用敏捷的做法来实施项目的一个原因是,他们有很多有一二十年工作经验的开发人员。这些人员的经验积累是非常重要的,他们可以更好地在项目开始的前期对项目进行整体的控制和把握,同时做好项目计划和制定好任务故事,而这一点在国内尤其是软件公司中还不具备这个条件,因此,很多项目我们都处于的状态类似于我前面所举的电信项目的团队情况,甚至情况比那个团队还要差得多。

团队内交流增加

表现

前面已经提到,“因此在那个团队的开发过程中,我们经常是大呼小叫,无论走到哪里,都是十分热闹的场景。”这种频繁的交流,无形中使得团队的凝聚力提高,相互之间的关系和合作也都更为密切。

分析

如果是一个人从头到尾开发一个模块,他就几乎不需要和团队内非管理人员进行交流,甚至在某些情况下他只需要和客户做好沟通就足够了。而这时候,即使进行了同行评审,这个技术人员也可能会认为两三天的时间内这些人不可能了解这个系统模块的内容。这种评审也就容易流于形式而无法得到真正的重视。其他人也会认为评审是浪费自己的开发时间,于是到了一定程度评审就会成为可有可无的状态。如果有较多的人参与了这个模块的前后期分析和开发,每一个阶段都可以找到别人来进行讨论,在评审时对这些人提出的意见也就更容易接受——因为他至少会认为这几个人比他更早介入这个模块的分析,在某些程度上会比自己了解的更为深入。

唯一可能的劣势

表现

由于存在多人之间的交换,在某一个具体工件的开发的时间上会比一个程序员一直做下来略有延长。

分析

由于在任何一次交换之间都需要前一阶段开发者队后一阶段开发者进行关于业务和技术方面的沟通和交流,因此会延长项目在初期的开发时间。尤其当团队成员相互之间的熟悉程度不够或者配合不协调的时候,这个问题会表现得较为突出,甚至可能影响一些项目的进度以及开发工作的进展。

但是,这个影响会在相应的程度上促进团队内人员之间更快地相互熟悉,这个周期要比结对编程短很多,一般来说,不会超过一个月的时间就可以让团队成员之间相互熟悉(由于不是坐在一起开发,这个熟悉的程度比结对编程的要求低很多,因此时间也相应会缩短很多)。

深入讨论

交换编程的应用方式是有其适用环境的,另外在我的实践和研究中还建议如果团队合适,可以考虑与结对编程配合使用。

适用环境:这种开发方法的适应性较强,这里分为团队状况和项目情况两个部分进行一些说明。

团队状况:交换编程适用于人数超过两个人的开发团队,因为交换一次至少也需要两个开发人员。大的团队也可以应用交换编程的方式,来进行项目开发。要求团队内的成员有一两个具有两三年以上开发经验的,这是对于一般的项目(哪怕没有什么技术难度)的最基本要求。

项目情况:项目规模不限,开发周期的适应性也较强,对于任何类型的项目都可以适用。

与结对编程配合使用:如果领导比较认可结对编程的开发方式,这个时候,您引入交换编程也会带来同样的好处,比如团队稳定性,至少从对系统业务模块熟悉的人数上来看增加了一倍,以及团队凝聚力,因为频繁的交流,从而更多地降低因为少数人的思想和考虑偏差造成对用户需求理解不足等问题。

有了上述的情况表现,也使得团队的规范化操作能力更强,也可以使得很多问题能够在有效的沟通中的到解决。

由此可见,交换编程的存在是有其道理的,没有用过的朋友不妨尝试一下,至少对您的团队没有什么伤害和大的变动。

作者介绍:白慧冬,网名青润,独立软件咨询师,《软件工程之全程建模实现》一书作者,CSDN软件工程/管理版块大版主,一个在不断摸索实践的国内软件工程方法和技术的亲历者。底开发完成了一套软件度量概算产品,并对一些行业应用软件进行了较为成功的度量分析。20完成了全程建模方法中需求与代码影射关系的分析与实践探索。个人Blog为:blog.csdn.net/qingrun 。

时间编程 篇3

传统的在线灯光编程模式极大地限制了灯光师的编程效率, 其特点主要表现在两个方面:

电视节目制作周期短, 彩排时间更短, 灯光师在彩排时间内既要听音乐, 又要思考程序逻辑, 在这样短的时间里制作出变化丰富且极具创意的程序序列, 几乎成为了一项不可能完成的任务;

在线编程要借助灯控台与灯具来完成, 但灯控台与灯具属于非独占设备, 当一些富有创意的灯光设计方案需要对灯位进行调整时, 几乎没有人敢承担调整所带来的风险, 因为设计方案一旦失败, 则损失了大量的人力物力以及制作时间。

以说, 摆脱传统在线灯光编程模式的束缚, 创造出一种“既可以进行虚拟灯位设计, 又可以随时随地进行程序设计”的离线编程系统, 已成为国内外灯光师的共同理想。

目前, 国外多家灯光软件与灯控台制作公司已经将这一理想变为现实, 为灯光师提供了线下灯光控制和编程设计软件。

常见的离线编程系统主要有两个发展趋势, 一是以CAD为基础的离线灯位设计系统, 如加拿大COST software制作的WYSIWYG软件;二是以实时渲染为基础的编程设计系统, 如英国AVOLITES公司制作的Pearl Simulator系列控制软件与德国MA lighting公司制作的MA on PC、MA3D系列控制软件。下面笔者将以四川广播电视台所选用的grandMA2离线编程软件为例, 简要阐述离线灯光编程系统的搭建与实际应用。

一MA2离线灯光编程系统的搭建

MA2线下灯光编程系统主要由三部分构成, 分别为:MA on PC、MA 3D以及MA2系列灯光控制台, 其中MA on PC与MA 3D为计算机软件这两个软件可以与MA2系列控制台完全脱离, MA on PC可以被视为无输出的MA控制台, MA 3D则是带有简易CAD功能的即时渲染软件, 在该软件上可以清楚地看到灯具通道的输出变化, 从而实现无灯编程。

首先, 我们要在电脑上安装MA on PC与MA 3D软件在MA network control (网络控制) 中建立虚拟主机, 然后选配灯具型号, 且灯库、灯具数量、组群、编号也与1500演播厅内grandma full size完全一致。

第二, 打开MA 3D软件, 设置IP地址, 并且查找连接虚拟主机, 在3D视图中调整灯具位置, 调整环境光与舞台光源的照度比, 使虚拟环境更加接近现实环境。

第三, 播放节目音乐, 参照MA 3D上所呈现出的即时渲染效果, 在MA on PC上制作修改灯光程序。

第四, 将完成的演出文件拷贝到MA控制台中, 在现场彩排时, 根据摄像机机位分布与演员的走位以及节目导演的要求, 对所编程序进行进一步的微调。

二离线灯光编程系统的现实意义

现代电视媒体更加注重节目传播的实效性, 因此节目制作周期被大幅缩短, 唯有提高自身工作效率才能不影响节目制作质量。在这个层面上, 离线灯光编程系统就为灯光师提供了诸多便利。

1. 离线灯光编程系统, 摆脱了现实空间的条件束缚

离线灯光编程系统所提供的3D虚拟灯光设计功能, 使得灯光师能够在演出场地、悬吊设备、灯具、控制台未到位的情况下, 超前进行灯位设计、灯具配接、程序制作。这就使得灯光师拥有了更多的构思创作时间, 由此我们联想到了2007年在郑州市举办的第二届中部贸易博览会文艺晚会, 近3000只灯具、900只电脑灯、100只PIGI灯 (投影灯) , 如此大规模的工程要在短短一个月的时间里完成。灯光设计团队充分利用了离线灯光编程系统的技术优势, 提前20天就进行离线编程设计, 在所有灯光设备安装调试正常后才连接控制台, 对灯具进行操控。

2. 离线灯光编程系统, 创造出崭新的电视艺术表现形式

近几年, 大型文艺演出正朝着Show Control (声、光、视频集控) 的方向发展, 因此诸如MIDI、SMTPE之类的串行通讯协议, 也成为了灯光程序的触发依据。Show Control的控制原理十分简单, 以MIDI Show Control为例, 如果一条MIDI通道算作一组, 每一个MIDI音符代表一盏灯, 一条MIDI电缆就可以控制16组, 16×128=2048盏灯。控制音量的信息现在可以用来控制亮度, 灯光也很容易与音乐同步变化。控制命令使用如同系统专用信息一样的写法, 有些公司开发了容易操作的应用软件。目前国内的一些大型多媒体舞台剧已经应用这项技术, Show Control灯光程序有几个共同特点:一是无人操作, 降低失误风险;二是与音乐完全同步, 节奏控制精准;三是编程耗时长, 需提前提供演出音乐。

离线灯光编程系统为灯光师提供了充裕的编程时间, 无论是在电视台、家中, 甚至是在咖啡厅都可以进行Show Control灯光编程, 既提高了个人编程效率, 又减少了公有设备的使用时间。

“没有权威的命令, 战车就不会开远。”在现在看来, 成吉思汗的名言在舞台电视灯光领域也同样受用。而这唯一的命令, 恰恰是Show Control技术。其实Show Control的使用并不稀奇, 早在2000年的雅典奥运会开幕式上, 就应用了这个技术, 但在小型的戏剧演出中就很难看到Show Control的踪影了。首先, Show Control对控制设备的要求十分高, 需要有第三代数字控制台才能实现;其次, 应用Show Control技术的演出, 制作周期十分长, 要有很长的编程时间及修改磨合时间。

随着电视节目精细化制作成为新的发展趋势, 使得之前只有在大型开幕式中才会看到的Show Control技术, 如今在中小型晚会中频频露脸。音乐作为整个演出中唯一的行动指令, 统领着各个演出环节。步调一致, 声光电化一, 大大减少了人为失误的几率, 让电视节目更具观赏性。

3. 离线灯光编程系统, 可以有效降低演播室灯具能源消耗。

一直以来, 演播室都是各个电视台的耗电大户, 一方面是由于大功率灯具的大量使用, 耗电量惊人;另一方面, 灯具在短时间内产生了大量热量, 只能通过空调制冷来降低室内温度, 以四川电视台的1500m2演播厅为例, 厅内共有160余台电脑灯, 每台灯的功率接近2000W, 每小时仅电脑灯具的耗电量就达到320度。假如我们在节目彩排时, 运用离线灯光编程系统进行编程, 那么每期节目将减少近1000度的耗电量。

因此我们可以看出, 离线灯光编程系统的搭建既符合节能降耗的社会发展潮流, 又可以为节目组、电视台, 甚至是国家节约大量能源消耗, 从源头实现了节能减排。

三结束语

离线灯光编程系统以其高效、便携、节能等优点, 正逐步被国内各行业灯光师所接受, 然而相较于欧美发达国家来说, 我国离线灯光编程系统还不够普及, 对于国内大多数灯光师来说, 离线灯光编程还是一个较为陌生的新名词。

本文来自 古文书网(www.gwbook.cn),转载请保留网址和出处

相关文章:

编程过程01-04

编程应用01-04

编程计算01-04

编程能力01-04

编程平台01-04

编程原理01-04

高级编程01-04

嵌入编程01-04

编程处理01-04

编程游戏01-04

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:编程过程 下一篇:编程原理