深度千分尺的测量方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度千分尺的测量方法相关的知识,希望对你有一定的参考价值。

参考技术A

传统测量方法:
当前工厂内部品质检查的方法为测量一个数据后,由测量人员人工记录在纸张中,或者由一个人测量,另一个人进行记录的操作方式,当需要进行分析时,由操作人员录入到电脑的EXCEL表格中;由方式导致的问题是效率低,数据容易记错,同时有些操作人员由于不清楚产品的测量规格,对于产品超过规格的情况,操作 人员不能及时采取措施,而且对于需要进行数据分析时,还需要重复录入电脑中。
新测量方法:
直接用数据采集仪连接深度千分尺来进行测量。数据采集仪会自动采集测量数据并计算分析、自动判断结果,这种测量方法可以提高测量效率,减少由于人工测量所造成的误差,测量原理效果如下图所示:
数据采集仪连接深度千分尺进行测量的好处:
1、机械加工的现场检测;
·提高跳动测试的准确度;
·提高跳动检测效率;
·对加工设备状态进行预警报警;
2、自动数据采集,实现无纸化;
3、提高数据的准确性,更加实时;
4、实现品质数据的实时、远程监控;
5、不占用生产现场空间;
6、比PC更易于维护;
7、方便移动,实现移动数据采集;
8、实现无线传输;
9、小量具仪器配套;
10、解决现场数据记录问题;

参考技术B 回答

1、 使用前先将深度千分尺擦干净,然后检查其各活动部分是否灵活可靠:在全行程内微分筒的转动要灵活,微分螺杆的移动要平稳,锁紧装置的作用要可靠。2、 根据被测的深度或高度选择并换上测杆。3、 0—25mm的深度千分尺可以直接校对零位:采用00级平台,将平台、深度千分尺的基准面和测量面擦干净,旋转微分筒使其端面退至固定套筒的零线之外,然后将千分尺的基准面贴在平台的工作面上,左手压住底座,右手慢慢旋转棘轮,使测量面与平台的工作面接触后检查零位:微分筒上的零刻线应对准固定套管上的纵刻线,微分筒锥面的端面应与套管零刻线相切。4、 测量范围大于25mm的深度千分尺,要用校对量具(可以用量块代替)校对零位:把校对量具和平台的工作面擦净,将校对量具放在平台上,再把深度千分尺的基准面贴在校对量具上校对零位。5、 使用深度千分尺测量盲孔、深槽时,往往看不见孔、槽底的情况,所以操作深度千分尺时要特别小心、切忌用力莽撞。6、 当被测孔的口径或槽宽大于深度千分尺的底座时,可以用一辅助定位基准板进行测量。

提问

就是用深度千分尺测量一个大于25mm的零件的步骤是怎样的啊

回答

深度游标卡尺如下图所示,用于测量零件的深度尺寸或台阶高低和槽的深度。如测量内孔深度时应把基座的端面紧靠在被测孔的端面上,使尺身与被测孔的中心线平行,伸入尺身,则尺身端面至基座端面之间的距离,就是被测零件的深度尺寸。它的读数方法和游标卡尺完全一样。深度游标卡尺1-测量基座;2-紧固螺钉;3-尺框;4-尺身;5-游标。测量时,先把测量基座轻轻压在工件的基准面上,两个端面必须接触工件的基准面,如下图(a) 所示。测量轴类等台阶时,测量基座的端面一定要压紧在基准面,下图(b)(c) 所示,再移动尺身,直到尺身的端面接触到工件的量面(台阶面)上,然后用紧固螺钉固定尺框,提起卡尺,读出深度尺寸。多台阶小直径的内孔深度测量,要注意尺身的端面是否在要测量的台阶上,下图(d)所示 。当基准面是曲线时,如下图(e) ,测量基座的端面必须放在曲线的最高点上,测量出的深度尺寸才是工件的实际尺寸,否则会出现测量误差。深度游标卡尺的使用方法使用注意事项1.测量前,应将被测量表面擦干净,以免灰尘、杂质磨损量具。2.卡尺的测量基座和尺身端面应垂直于被测表面并贴合紧密,不得歪斜,否则会造成测量结果不准。3.应在足够的光线下读数,两眼的视线与卡尺的刻线表面垂直,以减小读数误差。4.在机床上测量零件时,要等零件完全停稳后进行,否则不但使量具的测量面过早磨损而失去精度,且会造成事故。5.测量沟槽深度或当其他基准面是曲线时 ,测量基座的端面必须放在曲线的最高点上,测量出的深度尺寸才是工件的实际尺寸,否则会出现测量误差。6.用深度游标卡尺测量零件时,不允许过分地施加压力,所用压力应使测量基座刚好接触零件基准表面,尺身刚好接触测量平面。如果测量压力过大,不但会使尺身弯曲,或基座磨损,还使测量得的尺寸不准确。7.为减小测量误差,适当增加测量次数,并取其平均值。即在零件的同一基准面上的不同方向进行测量。8.测量温度要适宜,刚加工完的工件由于温度较高不能马上测量,须等工件冷却至室温后,否则测量误差太大。

参考技术C 传统测量方法:
当前工厂内部品质检查的方法为测量一个数据后,由测量人员人工记录在纸张中,或者由一个人测量,另一个人进行记录的操作方式,当需要进行分析时,由操作人员录入到电脑的EXCEL表格中;由方式导致的问题是效率低,数据容易记错,同时有些操作人员由于不清楚产品的测量规格,对于产品超过规格的情况,操作人员不能及时采取措施,而且对于需要进行数据分析时,还需要重复录入电脑中。
新测量方法:
直接用数据采集仪连接深度千分尺来进行测量。数据采集仪会自动采集测量数据并计算分析、自动判断结果,这种测量方法可以提高测量效率,减少由于人工测量所造成的误差。
数据采集仪连接深度千分尺进行测量的好处:
1、机械加工的现场检测;
提高跳动测试的准确度;
提高跳动检测效率;
对加工设备状态进行预警报警;
2、自动数据采集,实现无纸化;
3、提高数据的准确性,更加实时;
4、实现品质数据的实时、远程监控;
5、不占用生产现场空间;
6、比PC更易于维护;
7、方便移动,实现移动;
8、实现;
9、小量具仪器配套;
10、解决现场数据记录问题;

千分尺 - Prometheus Gauge 显示 NaN

【中文标题】千分尺 - Prometheus Gauge 显示 NaN【英文标题】:Micrometer - Prometheus Gauge displays NaN 【发布时间】:2018-11-22 03:10:20 【问题描述】:

我正在尝试使用 Micrometer.io 和 Spring Boot 2.0.0.RELEASE 生成 Prometheus 指标。

当我尝试将 List 的大小显示为 Gauge 时,它​​一直显示 NaN。在文档中是这样说的;

您有责任对您正在使用 Gauge 测量的状态对象进行强引用。

我尝试了一些不同的方法,但我无法解决问题。这是我的一些试验代码。

import io.micrometer.core.instrument.*;
import io.swagger.backend.model.Product;
import io.swagger.backend.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

@RestController
@RequestMapping("metrics")
public class ExampleController 

    private AtomicInteger atomicInteger = new AtomicInteger();

    private ProductService productService;
    private final Gauge productGauge;

    @Autowired
    public HelloController(ProductService productService,
                           MeterRegistry registry) 

        this.productService = productService;

        createGauge("product_gauge", productService.getProducts(), registry);
    

    private void createGauge(String metricName, List<Product> products,
                                    MeterRegistry registry) 

        List<Product> products = productService.getProducts();

        // #1
        // this displays product_gauge as NaN
        AtomicInteger n = registry.gauge("product_gauge", new AtomicInteger(0));
        n.set(1);
        n.set(2);

        // #2
        // this also displays product_gauge as NaN
        Gauge
            .builder("product_gauge", products, List::size)
            .register(registry);

        // #3
        // this displays also NaN
        testListReference = Arrays.asList(1, 2);
        Gauge
            .builder("random_gauge", testListReference, List::size)
            .register(registry);

        // #4
        // this also displays NaN
        AtomicInteger currentHttpRequests = registry.gauge("current.http.requests", new AtomicInteger(0));
    

    @GetMapping(path = "/product/decrement")
    public Counter decrementAndGetProductCounter() 
        // decrement the gague by one
    

有没有人可以帮助解决这个问题?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

在所有情况下,您都必须持有对观察到的实例的强引用。当您的 createGauge() 方法退出时,所有函数堆栈分配的引用都符合垃圾回收条件。

对于#1,传递您的atomicInteger 字段,如下所示:registry.gauge("my_ai", atomicInteger);。然后根据需要增加/减少。当千分尺需要查询时,只要找到参考就查询。

对于#2,传递您的productService 字段和一个lambda。基本上每当查询仪表时,它都会使用提供的对象调用该 lambda:registry.gauge("product_gauge", productService, productService -&gt; productService.getProducts().size());

(不保证语法错误。)

【讨论】:

我怀疑第二种解决方案是否可行。传递给 guage 方法的 productService 仍将使用 WeekReference 引用,因此将被垃圾收集。这意味着当 lambda 将被调用并且需要传递参数时,它将为空。这可能会导致 lambda 执行失败,而不是报告 NaN。 当我们谈论 Spring 托管的 Bean 时,只要上下文存在,它就会工作。 我的错误是你的示例代码是正确的。在这种情况下,WeekReference 不会成为问题,因为它指向一个不会被垃圾回收的 bean。我只想指出它工作的原因是它正在使用一个由于来自 applicationContext 的硬引用而将保留在内存中的对象。因此不会被垃圾收集。以下可能不起作用: ProductService productService = ... // 在本地上下文中定义。 registry.gauge("product_gauge", productService, productService -> productService.getProducts().size());【参考方案2】:

我无法使用@panser 解决方案,因为我使用的是带有标签的仪表。我的解决方案涉及使用io.micrometer.core.instrument.Tag 的键和值作为映射键创建com.google.common.util.concurrent.AtomicDouble 缓存,如下:

    private static final Map<String, AtomicDouble> GAUGE_CACHE = new HashMap<>();

    public void handleGauge(String name, List<Tag> tags, double value) 
        String gaugeKey = this.gaugeKey(name, tags);
        if (!GAUGE_CACHE.containsKey(gaugeKey)) 
            GAUGE_CACHE.put(gaugeKey, new AtomicDouble());
        
        Objects.requireNonNull(this.registry.gauge(name, tags, GAUGE_CACHE.get(gaugeKey))).set(value);
    

    private String gaugeKey(String name, List<Tag> tags) 
        return name + ":" + tags.stream().map(tag -> tag.getKey() + tag.getValue()).collect(Collectors.joining(""));
    

这对我的需求非常有效,希望对其他人有所帮助。

【讨论】:

【参考方案3】:

当我使用您的方法 #1 meterRegistry.gauge("myGauge", new AtomicDouble()) 时,我在 Micrometer.io 仪表上遇到了同样的问题。顺便说一句,我正在使用 Scala。我注意到在我创建了大约 50 个仪表后,之后的新仪表显示NaN

我使用的是:

val atomicDouble = new AtomicDouble()
Gauge
  .builder("myGauge", atomicDouble, new AtomicDoubleToDoubleFunction)
  .strongReference(true)
  .register(meterRegistry)

class AtomicDoubleToDoubleFunction extends ToDoubleFunction[AtomicDouble] 
  override def applyAsDouble(value: AtomicDouble): Double = value.doubleValue()

这解决了NaN 问题,我的所有仪表都正确显示。我从 https://www.codota.com/code/java/classes/io.micrometer.core.instrument.Gauge 找到了 .strongReference(true) 示例。

【讨论】:

无论哪种方式,您仍然需要保留对您创建的 AtomicDouble 的引用,在这方面使用构建器并没有太大变化。如果您尝试使用更新的仪表值调用构建器两次,它将什么也不做(仪表将永远保持以前的值)。【参考方案4】:

我的仪表使用示例

private final AtomicLong countTryUsers = new AtomicLong(0);
Metrics.gauge("app.countTry", countTryUsers);

public void updateCountTryUsers(Long countTryUsersDb)
   countTryUsers.set(countTryUsersDb);

所以我只注册一次 app.countTry,然后通过自定义方法 updateCountTryUsers() 更新 AtomicLong countTryUsers

【讨论】:

以上是关于深度千分尺的测量方法的主要内容,如果未能解决你的问题,请参考以下文章

python+opencv实现机器视觉基础技术(宽度测量,缺陷检测,医学处理)

千分尺 - Prometheus Gauge 显示 NaN

js千分位实现方法

在ChemDraw中输入千分号的方法

螺旋测微尺

总计字段上加格式:如千分位 比较笨拙的一种方法