Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions electron/src/assets/markdown/laser/manual.md
Original file line number Diff line number Diff line change
@@ -1 +1,69 @@
# Laser Manual

The **Laser DRE** is a precision measurement device designed for real-time diameter measurement of rotating objects. It communicates over a **USB Serial interface** using the **Modbus RTU** protocol.

Key features include:

- High-speed diameter measurement
- Single- or dual-axis capability
- USB Serial communication
- Modbus RTU protocol support

## Technical Specifications

- **Communication Interface:** USB Serial
- **Protocol:** Modbus RTU
- **Axes:** 1-axis or 2-axis measurement (depending on model)
- **Polling Rate:** Every 16 ms
- **Measurement Rate:** 320 measurements per second (manufacturer specification)
- **Measurement Type:** Diameter measurement | X-Axis width (1-axis) | X/Y-Axis width + Roundness (2-axis)

## Operation

### Polling

The device **polls the diameter every 16 milliseconds**, ensuring near real-time data acquisition for precise monitoring.

### Measurement

According to the manufacturer, the Laser DRE can measure the diameter **320 times per second**, providing high-resolution data for process control and analysis.

### Axes

Depending on the model, the device measures across **one or two axes**. The 2-axis variant enables comprehensive profiling of both the diameter and the cross-sectional shape of the object.

## Communication Protocol

The device uses **Modbus RTU** over the USB Serial connection.

Key points:

- **Master/Slave Model:** The Laser DRE acts as a Modbus slave device.
- **Function Codes:** Supports standard Modbus RTU function codes for reading measurements.
- **Data Format:** Diameter measurements are transmitted in the format specified by the manufacturer (consult device manual for register addresses and scaling).

## Settings

The device includes a small display that allows changing several operational settings:

### Units

The laser can operate in **millimeters (mm)** or **inches (in)**.
The QiTech Control software uses **millimeters**.

### Alarm

The laser can emit an audible alarm if the measured diameter is out of tolerance.
**Note:** The tolerance settings on the laser may differ from the tolerance configured in our software.

### Communication

Several communication parameters can be configured:

- **Set UART:** Configure **parity (8N1)** and **baud rate (38400)**.
- **Set Protocol:** Choose the communication protocol. _(We use Modbus RTU.)_
- **Set Slave Address:** The slave address of our laser is **1**.

### Calibration

The laser can be calibrated using **4 mm** and **8 mm** reference rods.
12 changes: 6 additions & 6 deletions electron/src/machines/laser/laser1/Laser1Page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ export function Laser1Page() {
title: "Config",
icon: "lu:Settings",
},
// {
// link: "manual",
// activeLink: "manual",
// title: "Manual",
// icon: "lu:BookOpen",
// },
{
link: "manual",
activeLink: "manual",
title: "Manual",
icon: "lu:BookOpen",
},
{
link: "presets",
activeLink: "presets",
Expand Down
9 changes: 8 additions & 1 deletion electron/src/routes/routes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ import { Buffer1ControlPage } from "@/machines/buffer/buffer1/Buffer1ControlPage
import { Buffer1Page } from "@/machines/buffer/buffer1/Buffer1Page";
import { Buffer1SettingsPage } from "@/machines/buffer/buffer1/Buffer1Settings";

import { Laser1Page } from "@/machines/laser/laser1/Laser1Page";
import { Laser1ControlPage } from "@/machines/laser/laser1/Laser1ControlPage";
import { Laser1GraphsPage } from "@/machines/laser/laser1/Laser1Graph";
import { Laser1Page } from "@/machines/laser/laser1/Laser1Page";
import { Laser1ManualPage } from "@/machines/laser/laser1/Laser1Manual";
import { Laser1PresetsPage } from "@/machines/laser/laser1/Laser1PresetsPage";
import { Laser1SettingsPage } from "@/machines/laser/laser1/Laser1SettingsPage";

Expand Down Expand Up @@ -432,6 +433,11 @@ export const laser1SettingsRoute = createRoute({
path: "settings",
component: () => <Laser1SettingsPage />,
});
export const laser1ManualRoute = createRoute({
getParentRoute: () => laser1SerialRoute,
path: "manual",
component: () => <Laser1ManualPage />,
});

export const mock1SerialRoute = createRoute({
getParentRoute: () => machinesRoute,
Expand Down Expand Up @@ -675,6 +681,7 @@ export const rootTree = RootRoute.addChildren([
machinesRoute.addChildren([
laser1SerialRoute.addChildren([
laser1ControlRoute,
laser1ManualRoute,
laser1GraphsRoute,
laser1PresetsRoute,
laser1SettingsRoute,
Expand Down
3 changes: 3 additions & 0 deletions electron/src/setup/ChooseVersionPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,9 @@
branches?.filter((b) =>
b.name.toLowerCase().includes(searchTerm.toLowerCase()),
) ?? [];
branches?.filter((b) =>

Check failure on line 354 in electron/src/setup/ChooseVersionPage.tsx

View workflow job for this annotation

GitHub Actions / lint

Expected an assignment or function call and instead saw an expression
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I call that does not belong here

b.name.toLowerCase().includes(searchTerm.toLowerCase()),
) ?? [];
Comment thread
Snacj marked this conversation as resolved.
Dismissed

return (
<Page>
Expand Down
Loading