系统:840D
方法:HMI/OEM dde编程
已完成的准备工作:1.用激光干涉仪对Z轴0~200行程,每隔20测一个点,共得到11个点的误差,记为e1~e11。2. HMI/OEM已经建立好,regie.ini文件已经生成,即只需将VB编写的可执行文件拷到oem文件夹下即可。
欲实现的目标:对Z轴0~200行程的定位误差进行补偿,即在行程为0,20,40,60...200各位置处输入相应的误差补偿值e1,e2,e3,e4....e11.
困难:请问通过向系统变量“外部零点偏移Linshift”实时写入相应行程下的误差补偿值,是否能够实现最后的补偿?代码如下:(Z轴的轴号为2)
label23.LinkTopic="ncddencu840d" '激活DB31DBX3.0
Label23.LinkItem = " /PLC/DataBlock/Bit[c33,3.0]" '写PLC,DB31DBX3.0
Label23.LinkMode = 2
Label23.Caption=1
Label23.LinkPoke
Label11.LinkTopic = "ncddencu840d"
Label11.LinkItem = "/Channel/ExternFrame/Linshift[2]" '写Linshift
Label11.LinkMode = 1
Label11.Caption= 10 ' 实际补偿时可以根据行程区间,将对应的误差补偿量对这caption进行赋值
Label11.LinkPoke
1.这样的方法可行吗?2.Linshift在C和N模块的FA,FB,FE,FU区域都有,有什么区别?还有一个Linshiftfine?
3.我按上述代码向Linshift写一个数值,但是再读取它仍然是0. 4.在运动过程中,向Linshift写入一个偏置值,它就能偏吗?譬如我想做个最简单的验证:我让Z轴从0运动到20,在运动过程中,我向Linshift写入50,它的实际运动距离是70,并且保持坐标值是20吗?请指导我这个验证试验该怎么做,非常感谢。
注:我想实时地对机床进行误差的补偿(坐标偏移),所以感觉通过修改G代码,生成误差表(带$那种)不能做到实时和适用于各种加工状况,故考虑了以上方法。想法的来源主要是FANUC系统的误差补偿方法中有一个叫外部零点偏移的功能,只要实时向R地址中写入误差补偿值即可实现补偿。在机床不运动下,若向该地址写入300μ的值,能听到机床的运动声,且不改变坐标值,请问西门子840D是否有类似的功能。