回忆往事,玩过的设计不计其数,分布在机电化光各领域。唯独这个软件编的最辛苦。
那时,客户指定产品要配三菱PLC, 让玩单片机的我没了方向,那时一个FX1S要2千多,运算精度要求又高,最好用浮点运算,而支持浮点数的三菱FX2N, 必须要外扩好几个高速模块才能达到要求,一算下来要近万元,成本实在太高了,吃不消,最后选择了FX1N, 3千多,凑合用用吧。
FX1N浮点数不支持,咱就用32位长整数吧,加减乘除里面就算32位/32位除法精度最低,故扩展编制了64位/32位整数除法, 程序编好试运行中,偶而会出错,经分析,数据的动态范围太大,计算溢出所造成的。
因此,恨下心来要搞浮点运算,玩过PLC的都知道,那个梯型图啊,比汇编都难弄,要扩展浮点运算,就要先搞些最基本的指令组合,比如,扩展的加减法,玩过单片机的都知道, 两个补码相加,溢出时尾数还留在ACC中,并且是正确的。
而三菱PLC, 两数相加减,一但上溢出或下借位,其结果不知为啥数,研究了半天也搞不懂,只能放弃。更要命的,FX1N不支持常用的移位指令,让我想了足足一个多月,白天想晚上睡觉也在思考,总算找到变通之法。
从此,N年过去了,全世界都没有过类似的设计,支持FX1N(FX1S)的专用浮点运算库,在上一世纪诞生了!