振南实战项目纪实(为天津某公司研制工业用信号延时器)----(1)项目承接与需求落定
http://www.znmcu.cn/zn_project_delayer_1.html
振南电子技术群177856520
振南实战项目纪实(为天津某公司研制工业用信号延时器) ----(1)项目承接与需求落定 2015年1月底,天津某公司找到我给他们研制一款“信号延时设备”。这东西乍看起来,似乎比较简单,从字面上的意思来说就是把一个数字信号延时一定时间原样输出。 看似简单的项目,以我经验来说,肯定没有那么简单。如果简单,人家也不可能拿出来找人作。所以当务之急就是,详细了解项目需求,把要作的工作搞清楚,明确项目到底要实现什么功能。在真正开始操刀之前,先要把需求一条条地在纸上定下来。90%的项目,在研制过程中,需求都会被项目方(即所谓的‘甲方’)或多或少的进行修改。这种修改源于几个原因: 1、甲方一开始对自己所需要的东西考虑不周,对现有需求条款进行修改; 2、甲方想加功能,虽然可能是一些小功能,希望研发者(即乙方)顺便作一下; 3、研发者对需求理解不透,甚至曲解,导致实际与需求不符,双方商讨修改需求; 需求一条条定下来之后,我会问项目方:你仔细看看,是不是就这些功能,请确认!一旦确认之后,需求生效,以后就不能随意改动或增加功能。如果后期对需求产生异议,则会以当时经过确认的需求文档为依据依据,让项目方明白:修改需求或增加功能,是要付出额外代价的,如果执意要作,一要加长项目研发周期,二要支付更多项目酬劳。 经过几天的讨论,最终我们把这个“信号延时器”项目的需求定了下来(确实没那么简单,在我不断追问下,项目方说出了很多的内容),具体如下: 上面是对这个项目需求的一个图示。经过进一步的确认,参数的设置调整,通过触摸屏来实现。 信号延时器,通常来说,只是改变输入波形的延迟时间,专业的说就是改变“相位”,输出端输出的波形要与输入波形原样。细想起来,这个功能使用单片机其实不太好实现,尤其是n和m延时都非常大的时候,比如延时几秒,甚至几分钟。难点在于: 1、时间精准的控制 2、延时过程中对中间波形的处理和存储,以便宜在延时之后将中间波形复现。 3、对输入波形脉宽的精确测量 我把这些问题反馈给了项目方,项目方说:“不需要这么麻烦!输入信号,低电平到来后,延时若干个时间单位后输出低电平,延时过程中的输入波形全部忽略掉!输出低电平的宽度可能固定,不必与输入信号等宽!!”【这些话是我现在总结出来的,当时项目方似乎根本不懂技术,全部用大白话描述的,听着非常不专业,沟通了许久才明白他的意思!最终还被对方抱怨说我理解能力有问题!】 这进一步的需求确认和追问是多么重要,直接拉低了项目的研发难度。这根本就不是一个真正的“信号延时器”,而只是要实现一个“下降沿延时响应”的功能,而且延时期间还不响应信号(我真不知道项目方这样的功能需求到底有什么实际应用意义,后来听他说是用在色标检测上,所谓色标检测,就是在流水线上对产品上的特定颜色的标签进行识别,检测到标签时输入信号将变成低电平,而延时器要作的就是把这个低电平信号经过延时n和m个时间单位后产生两路低电平输出)。 需求修正后的延时功能如下图所示: 在需求确定几天后,项目方试图修改需求和增加功能,经过协商,我同意了加入一些新的功能(这本身是违背项目需求原则的,但是协商之后我给予了通融)。 这个新的功能是:模式1,增加一个按钮,按下后不再对输入信号进行响应。 需求修改后的图示: 另外我再一次确认了输入是24V高低电平,也就是高电平为24V,低电平为0V。 这个问题很重要,涉及到是否需要在信号输入前级作一个分压电路,否则可能会烧毁单片机芯片(但后来经过多翻核实,输入信号根本不是24V)。 项目需求基本已经定下来了,项目方支付了项目费用,我们也开始真正干起来。技术上的具体细节、实现方法和技巧,振南在后面会详细讲到。在2月5号,基本完成了延时功能,样机界面如下图: 这个样机用于测试需求中所提到的那些功能。前级的24V高低电平信号的分压电路因为时间原因我没有焊,而是给出了电路原理图,由项目方来焊接。 详细的接线图: 前级分压电路如下: 这个分压电路很简单,它将24V信号分压为5V信号。 但是项目方焊了一天,竟然都没有成功。并且质疑这个分压电路有问题。争吵了很久,最终终于找到了问题的所在。他们输入的信号根本不是24V高低电平,而是“低空”信号。 他们所使用的色标传感器是一种“三线NPN接口”: 这种色标传感器接口有三根线,棕蓝白三色,棕线接电源12V~24V,蓝线接地,白线为信号输出。当传感器检测到特定颜色时,白线输出稳定的0V,当传感器未检测到特定颜色时,白线输出为【悬空】。 这根本就不是24V高低电平信号!!!!!!! 项目方一直褒贬我给他们的分压电路有问题,量哪都是0V,说“你这电路根本狗屁不通!” 最后,我拿出原始项目需求,让他看,他无言以对! 后来,他们问我,传感器的信号怎么与单片机的输入连接,我说:“不需要任何电路,直接连接!!”(浮空状态将被单片机IO内部上拉拉为5V,而0V将把IO拉到低电平。)他们这才恍然大悟! 项目需求中的描述经常会有项目方想当然的成分,他们的过错或误描述有时候是研发者的噩梦!尤其对于不懂技术或不明其所以然的项目方,则认为这是你的问题!
|