关于在FB2的Stat中定义调用FB1的问题。
FB1是用stl编写的一个CRC查表校验程序,表以array的形式存放在STAT变量中,起始地址为P#8.0,由于是查表,程序中肯定会用到间接寻址。
在别的程序中,用call fb1,db1调用,使用单独的背景数据块不会出现问题。
但是,例如,在FB2的STAT里定义一个FB1,用CALL #FB1的话,因为是共用一个背景数据块,FB1在FB2的STAT里本来就有一个偏移地址,这样就不行了。
当然,我可以人为的把这个偏移地址加到FB1的程序里去,但是这样FB1就没有封闭性,也不能移植。想问一下大家,如何在FB1的程序里,彻底的解决这个问题。
我试过用SCL,因为SCL可以直接用CRC_BUFF[x],这样的寻址方式,系统会自动帮你校正偏移,程序是可以做的,而且运算的实现方式也比STL来得简单的多。但是相比stl有一个弱点,就是对STAT变量的初始化,scl对stat的初始化是有数量限制,而crc的一张表就有512个字节,若是人为初始化的话,占的程序量又太大了。
两难,希望大家能帮帮我