大比例尺数字化测图流程:无线千分尺采集千分尺自动数据录入自动生成SPC质量图
大比例尺数字化测图流程:无线千分尺采集千分尺自动数据录入自动生成SPC质量图long time_diff= ((long)(time(0) - mi->rli->last_master_timestamp) - mi->clock_diff_with_master); /* Apparently on some systems time_diff can be <0. Here are possible reasons related to MySQL: - the master is itself a slave of another master whose time is ahead. - somebody used an explicit SET TIMESTAMP on the master. Possible reason related to granularity-to-second of time funct
支持 市场上常用 Mitutoyo三丰数据采集,Mahr马尔数据采集,Tesa泰萨自动录入,美耐特数据采集,成量自动录入,青海,广陆自动录入,达时科数据采集,三和自动录入,英示自动录入,哈量自动录入,国产等品牌量具,可以自动采集,自动存数据库,自动生成SPC控制图,自动导出测量数据
# 多个尺寸可以按顺序测量,不用手动干预,不需要输入到EXCEL表格。产品名不需要人工录入,自动采集,自动生成质量控制图
## 无论是出于SPC、质量分析和改进的需要,还是来自客户的要求,在实际的生产过程中,测量工件的尺寸往往都是质量管理人员的家常便饭。测量尺寸的仪器固然很多,卡尺和千分尺由于使用便利、成本可控,因此备受各个企业的亲睐。但测量数据的采集效率却一直比较低。
## 图:这些量具是不是看着很眼熟?
在“制造2025战略”和“工业4.0”已经广为探讨和实践的今天,仍然有不少企业还是处于手工在纸质文件上记录数据的阶段。最极端的情况,甚至一个测量工位安排两位操作员,一人负责操作测量仪器完成操作,另外一个负责将测量结果记录在打印好的表格中,或者通过键盘输入到Excel电子表格中。这种做法有很多不足:
• 不仅效率低下,而且非常容易出错,甚至还存在测量数据被认为篡改的情况;
• 记录在纸质表格中的数据很难长期保存和进行有效分析 而分散存储在不同电子表格中的数据同样给有效的整合和分析带来了非常多的不便。
好在现在的测量仪器很多都具备了数显和测量数据直接输出功能,这就给数据采集带来了很大的便利,能帮助我们极大地提高测量和数据采集的效率,电子化的数据还能为后续的数据分析提供无限可能。
图:终于可以输出数据啦!下图为目前比较普遍的通过USB数据线直接连接电脑把测量的数据传送至电脑中的方法。(也有些是通过无线WIFI、脚踏开关的方式。)
候注意到 clock_diff_with_master 不是每次都去计算的,而是在主从连接上或者重连 (reconnect) 的那一刻去计算一次。
handle_slave_io
/* 建立主从连接 */
|->safe_connect(thd MySQL mi))
/* connected: 主从连接成功后,计算一下主从clock_diff_with_master */
|->get_master_version_and_clock
MySQL 中的源码注释和强行校正逻辑如下所示:
long time_diff= ((long)(time(0) - mi->rli->last_master_timestamp) - mi->clock_diff_with_master); /* Apparently on some systems time_diff can be <0. Here are possible reasons related to MySQL: - the master is itself a slave of another master whose time is ahead. - somebody used an explicit SET TIMESTAMP on the master. Possible reason related to granularity-to-second of time functions (nothing to do with MySQL) which can explain a value of -1: assume the master's and slave's time are perfectly synchronized and that at slave's connection time when the
创建Vue Springboot前后端分离项目使,需要使用Websocke进行通讯,但是后端报了如下错误,不是每次但是经常
运行结果及报错内容java.lang.IllegalStateException: WebSocketSession not yet initialized at org.springframework.util.Assert.state(Assert.java:76) ~[spring-core-5.3.19.jar:5.3.19] at org.springframework.web.socket.sockjs.transport.session.WebSocketServerSockJsSession.getPrincipal(WebSocketServerSockJsSession.java:87) ~[spring-websocket-5.3.19.jar:5.3.19]master's timestamp is read it is at the very end of second 1 and (a very short time later) when the slave's timestamp is read it is at the very beginning of second 2. Then the recorded value for master is 1 and the recorded value for slave is 2. At SHOW SLAVE STATUS time assume that the difference between timestamp of slave and rli-
后端配置
/**
* websocket配置类
* @author 刘昌兴
*
*/
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Value("${jwt.tokenHead}")
private String tokenHead;
Redis去拿完以后还要把没有命中的筛选出来然后去DB/RPC取,然后回写这部分值到Redis。因为用户量很大,还有羊毛党会刷接口,未命中的值可能还需要做空缓存防止穿透到DB。
本仓库包含以下内容:
- @Cache注解一个
- 对指定方法进行自动缓存(Redis或者caffeine本地缓存)
- 可对不存在的数据进行自动空缓存,并发下防止缓存穿透
- 可开启获取缓存时自动进行互斥锁,防止缓存击穿保护DB(下个版本更新)
本库已经上架Maven中央仓库,已经引入到自己项目pom文件中就行,请注意直接在mvnrepository会出现很多2.0.0以下的版本,请不要使用,那...那...是我上架的是做测试不小心发到release上的debug版本。
所有版本查询请点击这里 这里 这里
Maven
<!-- https://mvnrepository.com/artifact/cn.someget/cache-anno --> <dependency> <groupId>cn.someget</groupId> <artifactId>cache-anno</artifactId> <version>2.0.0</version> </dependency>
Gradle
// https://mvnrepository.com/artifact/cn.someget/cache-anno
implementation group: 'cn.someget' name: 'cache-anno' version: '2.0.0'
private UserDetailsService userDetailsService;
@Autowired
private JwtTokenUtil jwtTokenUtil;
/**
* 添加endpoint,这样网页可以通过websocket连接上服务器
* 也就是我们配置websocket的服务地址,并可以指定是否可以使用socketJS
* @author 刘昌兴
*
* @pa>last_master_timestamp is 0
(i.e. they are in the same second) then we get 0-(2-1)=-1 as a result.
This confuses users so we don't go below 0: hence the max().
last_master_timestamp == 0 (an "impossible" timestamp 1970) is a
special marker to say "consider we have caught up".
*/
protocol->store((longlong)(mi->rli->last_master_timestamp ?
max(0L time_diff) : 0));