启航工业研发楼里的灯光从昨天晚上就没熄过。
刘涛趴在计算机前,眼睛红得跟兔子似的,手指还在键盘上敲个不停。
屏幕上的代码密密麻麻,看得人头晕眼花。
“老刘,你这是第几个版本了?”
赵新端着茶缸走过来,里面的茶水都快凉透了。
“第十二版。”刘涛头也不抬。
“前面十一版都有问题,不是精度不够,就是运算速度跟不上。”
赵新看了看墙上的钟,已经早上七点了。
“你一夜没睡?”
“睡什么睡,韩总说了,一周时间必须拿出圆弧插补算法。现在都第四天了,我连个能用的版本都没做出来。”
刘涛停下手,揉了揉发酸的脖子。
“别急,慢慢来。”赵新安慰道。
“我那边的信号接口板昨天下午就做出来了,测试了几遍,跟德玛吉的驱动器对接没问题。”
刘涛扭头看着他,“你那边都搞定了?”
“基本搞定。”赵新在旁边坐下。
“说实话,德玛吉那套驱动器确实厉害,我们的信号一输入进去,响应速度快得惊人。就差你这边的算法了。”
刘涛又转回去盯着屏幕。
“算法这东西急不得。圆弧插补看着简单,实际上涉及的数学运算特别复杂。
每个插补周期都要计算坐标增量,还要保证轨迹的平滑性,稍微有点误差,加工出来的圆弧就变成多边形了。”
“那韩总呢?他不是说会全程参与吗?”
“韩总昨天晚上来过一次,看了我写的算法,指出了几个问题。
但具体怎么改,还得我自己想办法。”刘涛叹了口气。
“说实话,有时候真不知道韩总脑子是怎么长的,那些我推导了好几天的公式,他看一眼就能发现问题。”
赵新点点头。
“我也有这种感觉。昨天我设计信号接口板的时候,遇到一个信号匹配的问题,想了半天没头绪。
韩总过来看了一眼,直接告诉我用运算放大器做信号调理,三分钟就解决了。”
两人正说着,办公室的门被推开了。
韩栋走了进来,手里拿着两个热腾腾的包子。
“吃点东西。”韩栋把包子递给刘涛。
“算法进展怎么样?”
刘涛接过包子,咬了一口。
“韩总,目前还在调试。主要是精度控制这块,总是达不到要求。”
韩栋走到计算机前,看着屏幕上的代码。
“把测试结果给我看看。”
刘涛调出测试数据。
“这是昨天晚上跑的结果。理论上应该是一个标准圆,但实际轨迹偏差有0.05毫米。”
韩栋仔细看着数据,眉头微皱。
“问题出在累积误差上。你用的是浮点运算,每次计算都会产生舍入误差,几千次计算下来,误差就积累得很大了。”
“那怎么办?”刘涛放下包子。
“不用浮点运算的话,8086的整数运算精度又不够。”
韩栋在旁边的纸上写了几个公式。
“用定点运算。把所有的坐标值放大一万倍,用整数进行计算,最后再除以一万。
这样既保证了精度,又避免了浮点运算的累积误差。”
刘涛看着公式,眼睛逐渐亮了起来。
“定点运算不仅精度高,运算速度还比浮点快得多!”
“还有一个问题。”韩栋指着代码中的一段。
“你的插补算法用的是逐点比较法,这个方法对于圆弧来说不是最优的。”
韩栋拿起笔,在纸上画了个圆。
“用数字积分法。把圆弧方程转换成微分方程,然后用数值积分的方法逐点计算。这样不仅精度高,而且轨迹更平滑。”
刘涛看着韩栋在纸上推导的公式,脑子里飞快地转着。
“数字积分法……我在学校的时候学过,但没想到能用在插补算法上。”
“理论和实践结合,才能解决实际问题。”韩栋放下笔。
“按照这个思路重新写算法,今天下午应该能拿出可用的版本。”
刘涛立刻来了精神,“韩总,我现在就开始改!”
韩栋转向赵新,“你那边的接口板测试得怎么样?”
“基本没问题。”赵新从工具箱里拿出一块电路板。
“这是信号调理板,能把我们控制器输出的TTL信号转换成德玛吉驱动器需要的模拟信号。
反过来,也能把德玛吉光栅尺的反馈信号转换成我们能读取的数字信号。”
韩栋接过电路板仔细看着,板子上的元器件排列整齐,焊接工艺也很不错。
“测试过实际负载吗?”
“测试过了。”赵新说。
“昨天下午我把接口板接到德玛吉的X轴驱动器上,用信号发生器模拟控制信号,电机能正常转动。
而且响应速度很快,几乎没有延迟。”
韩栋点点头。
“那就好。今天下午刘涛的算法一出来,我们就可以开始整体联调了。”
“韩总。”赵新犹豫了一下。
“我有个担心。咱们现在只是把德玛吉的机械部分利用起来,但毕竟是逆向工程,万一出什么问题……”
“比如说?”
“比如说精度达不到要求,或者稳定性不好。
毕竟德国人的原装系统是经过多年验证的,咱们这套是从零开始搭建的。”
赵新说出了心里的担忧。
韩栋走到窗边,看着楼下车间里那台静静矗立的德玛吉机床。
“你的担心有道理。但我们没有选择。德国人把系统锁死了,我们要么放弃这台机床,要么自己想办法。”
“我明白韩总的意思。”赵新说。