“走进科学”来了都得拍三天
背景:
- 做项目的时候生产线产品规格比较多、位置有偏差,robotstudio仿真中为了设备能用于所有规格的产品需要对所有规格的产品进行测试,修改完产品规格和位置进行测试,测试完再改规格、位置再测试过于麻烦,所以萌生出用智能组件自动生成不同规格产品进行测试,以节省后续测试时间;
- 项目中是根据图像定位产品位置的,所以需要利用三个“线性传感器”(智能组件,功能是能记录与之接触物体接触点的坐标);
- 总的逻辑就是:
* ①产生一个产品
* ②触发线性传感器读取位置
* ③进行测试
* ④测试完,产生下一规格的产品
* ⑤触发线性传感器读取位置
* ⑥进行测试
* 循环反复……
开始
Set sdoSimulateShow;
WaitTime 0.5;
Reset sdoSimulateShow;
Set sdoSimulateGetData;
ErrWrite\I, "posSimuLeft",NumToStr(posSimuLeft.x,0)\RL2:=NumToStr(posSimuLeft.y,0)\RL3:=NumToStr(posSimuLeft.z,0);
ErrWrite\I, "posSimuMiddle",NumToStr(posSimuMiddle.x,0)\RL2:=NumToStr(posSimuMiddle.y,0)\RL3:=NumToStr(posSimuMiddle.z,0);
ErrWrite\I, "posSimuRight",NumToStr(posSimuRight.x,0)\RL2:=NumToStr(posSimuRight.y,0)\RL3:=NumToStr(posSimuRight.z,0);
MData.DData.posDWheelLeft := posSimuLeft;
MData.DData.posDWheelMiddle := posSimuMiddle;
MData.DData.posDWheelRight := posSimuRight;
ErrWrite\I, "MData.DData.posDWheelLeft",NumToStr(MData.DData.posDWheelLeft.x,0)\RL2:=NumToStr(MData.DData.posDWheelLeft.y,0)\RL3:=NumToStr(MData.DData.posDWheelLeft.z,0);
ErrWrite\I, "MData.DData.posDWheelMiddle",NumToStr(MData.DData.posDWheelMiddle.x,0)\RL2:=NumToStr(MData.DData.posDWheelMiddle.y,0)\RL3:=NumToStr(MData.DData.posDWheelMiddle.z,0);
ErrWrite\I, "MData.DData.posDWheelRight",NumToStr(MData.DData.posDWheelRight.x,0)\RL2:=NumToStr(MData.DData.posDWheelRight.y,0)\RL3:=NumToStr(MData.DData.posDWheelRight.z,0);
- 神奇的事情出现了,就是线性传感器读取的数据是正确的,而赋值后,被赋值的变量却还是上一次读取的数据

- 测试了很久,发现要运行正常,处理方式是:赋值后,延迟0.5秒后,再赋值一次
Set sdoSimulateShow;
WaitTime 0.5;
Reset sdoSimulateShow;
Set sdoSimulateGetData;
ErrWrite\I, "posSimuLeft",NumToStr(posSimuLeft.x,0)\RL2:=NumToStr(posSimuLeft.y,0)\RL3:=NumToStr(posSimuLeft.z,0);
ErrWrite\I, "posSimuMiddle",NumToStr(posSimuMiddle.x,0)\RL2:=NumToStr(posSimuMiddle.y,0)\RL3:=NumToStr(posSimuMiddle.z,0);
ErrWrite\I, "posSimuRight",NumToStr(posSimuRight.x,0)\RL2:=NumToStr(posSimuRight.y,0)\RL3:=NumToStr(posSimuRight.z,0);
MData.DData.posDWheelLeft := posSimuLeft;
MData.DData.posDWheelMiddle := posSimuMiddle;
MData.DData.posDWheelRight := posSimuRight;
WaitTime 0.5;
MData.DData.posDWheelLeft := posSimuLeft;
MData.DData.posDWheelMiddle := posSimuMiddle;
MData.DData.posDWheelRight := posSimuRight;
ErrWrite\I, "MData.DData.posDWheelLeft",NumToStr(MData.DData.posDWheelLeft.x,0)\RL2:=NumToStr(MData.DData.posDWheelLeft.y,0)\RL3:=NumToStr(MData.DData.posDWheelLeft.z,0);
ErrWrite\I, "MData.DData.posDWheelMiddle",NumToStr(MData.DData.posDWheelMiddle.x,0)\RL2:=NumToStr(MData.DData.posDWheelMiddle.y,0)\RL3:=NumToStr(MData.DData.posDWheelMiddle.z,0);
ErrWrite\I, "MData.DData.posDWheelRight",NumToStr(MData.DData.posDWheelRight.x,0)\RL2:=NumToStr(MData.DData.posDWheelRight.y,0)\RL3:=NumToStr(MData.DData.posDWheelRight.z,0);
结束