@seedtactics/insight-client 16.7.2 → 16.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -29
- package/dist/assets/index-BGjv3-QV.js +388 -0
- package/dist/cell-status/current-status.js +4 -1
- package/dist/cell-status/estimated-cycle-times.js +2 -1
- package/dist/cell-status/inspections.js +1 -1
- package/dist/cell-status/loading.js +1 -1
- package/dist/cell-status/material-summary.js +4 -2
- package/dist/cell-status/names.js +1 -1
- package/dist/cell-status/rebookings.js +3 -1
- package/dist/cell-status/scheduled-jobs.js +1 -1
- package/dist/cell-status/sim-production.js +6 -2
- package/dist/cell-status/station-cycles.js +3 -1
- package/dist/cell-status/tool-replacements.js +21 -7
- package/dist/cell-status/tool-usage.js +7 -2
- package/dist/components/App.d.ts +2 -2
- package/dist/components/App.js +13 -5
- package/dist/components/AxisAndGrid.d.ts +6 -6
- package/dist/components/BarcodeScanning.d.ts +2 -2
- package/dist/components/BarcodeScanning.js +8 -2
- package/dist/components/ChartTooltip.d.ts +2 -2
- package/dist/components/ChooseMode.js +6 -1
- package/dist/components/ChooseOperator.d.ts +1 -1
- package/dist/components/ErrorsAndLoading.d.ts +3 -3
- package/dist/components/LoadingIcon.d.ts +1 -1
- package/dist/components/LoadingIcon.js +1 -1
- package/dist/components/LogEntry.d.ts +2 -2
- package/dist/components/LogEntry.js +10 -8
- package/dist/components/ManualSerialEntry.d.ts +2 -2
- package/dist/components/MonthSelect.d.ts +1 -1
- package/dist/components/MonthSelect.js +3 -1
- package/dist/components/Navigation.d.ts +2 -2
- package/dist/components/Navigation.js +1 -1
- package/dist/components/VerboseLogging.d.ts +1 -1
- package/dist/components/analysis/AnalysisSelectToolbar.d.ts +1 -1
- package/dist/components/analysis/BasketCycleCards.d.ts +1 -1
- package/dist/components/analysis/BasketCycleCards.js +1 -1
- package/dist/components/analysis/BufferChart.d.ts +1 -1
- package/dist/components/analysis/BufferChart.js +23 -4
- package/dist/components/analysis/CostPerPiece.d.ts +2 -2
- package/dist/components/analysis/CostPerPiece.js +2 -2
- package/dist/components/analysis/CycleChart.d.ts +1 -1
- package/dist/components/analysis/CycleChart.js +17 -4
- package/dist/components/analysis/DataTable.js +4 -2
- package/dist/components/analysis/EfficiencyPage.d.ts +2 -2
- package/dist/components/analysis/EfficiencyPage.js +1 -1
- package/dist/components/analysis/HeatChart.d.ts +1 -1
- package/dist/components/analysis/HeatChart.js +12 -3
- package/dist/components/analysis/InspectionDataTable.d.ts +1 -1
- package/dist/components/analysis/InspectionDataTable.js +6 -1
- package/dist/components/analysis/InspectionSankey.d.ts +1 -1
- package/dist/components/analysis/InspectionSankey.js +16 -6
- package/dist/components/analysis/PalletCycleCards.d.ts +1 -1
- package/dist/components/analysis/PalletCycleCards.js +5 -3
- package/dist/components/analysis/PartCycleCards.d.ts +2 -2
- package/dist/components/analysis/PartCycleCards.js +16 -6
- package/dist/components/analysis/QualityPage.d.ts +1 -1
- package/dist/components/analysis/ScheduleHistory.d.ts +1 -1
- package/dist/components/analysis/ScheduleHistory.js +1 -1
- package/dist/components/analysis/StationDataTable.d.ts +1 -1
- package/dist/components/analysis/ToolReplacements.d.ts +1 -1
- package/dist/components/analysis/ToolReplacements.js +7 -3
- package/dist/components/operations/AllMaterial.d.ts +1 -1
- package/dist/components/operations/ChartRangeEdit.d.ts +1 -1
- package/dist/components/operations/ChartRangeEdit.js +13 -4
- package/dist/components/operations/CloseoutReport.js +1 -1
- package/dist/components/operations/CompletedParts.js +2 -2
- package/dist/components/operations/CurrentWorkorders.js +2 -2
- package/dist/components/operations/Dashboard.d.ts +2 -2
- package/dist/components/operations/OEEChart.d.ts +4 -4
- package/dist/components/operations/OEEChart.js +7 -2
- package/dist/components/operations/Outliers.d.ts +1 -1
- package/dist/components/operations/Programs.js +9 -4
- package/dist/components/operations/Rebookings.d.ts +1 -1
- package/dist/components/operations/Rebookings.js +3 -1
- package/dist/components/operations/RecentCycleChart.d.ts +1 -1
- package/dist/components/operations/RecentCycleChart.js +2 -2
- package/dist/components/operations/RecentProduction.js +3 -3
- package/dist/components/operations/RecentSchedules.js +3 -1
- package/dist/components/operations/RecentStationCycles.d.ts +1 -1
- package/dist/components/operations/RecentStationCycles.js +1 -1
- package/dist/components/operations/ShiftSettings.d.ts +1 -1
- package/dist/components/operations/SimDayUsage.d.ts +1 -1
- package/dist/components/operations/ToolReport.js +17 -6
- package/dist/components/operations/WorkorderGantt.d.ts +1 -1
- package/dist/components/quality/QualityMaterial.d.ts +2 -2
- package/dist/components/quality/QualityMaterial.js +1 -1
- package/dist/components/quality/QualityPaths.d.ts +1 -1
- package/dist/components/quality/RecentFailedInspections.d.ts +1 -1
- package/dist/components/routes.d.ts +1 -1
- package/dist/components/routes.js +1 -1
- package/dist/components/station-monitor/BulkRawMaterial.d.ts +2 -2
- package/dist/components/station-monitor/BulkRawMaterial.js +11 -5
- package/dist/components/station-monitor/Closeout.js +6 -2
- package/dist/components/station-monitor/Inspection.js +3 -1
- package/dist/components/station-monitor/InvalidateCycle.d.ts +3 -3
- package/dist/components/station-monitor/InvalidateCycle.js +10 -3
- package/dist/components/station-monitor/JobDetails.js +4 -2
- package/dist/components/station-monitor/LoadStation.d.ts +1 -1
- package/dist/components/station-monitor/LoadStation.js +6 -3
- package/dist/components/station-monitor/Material.d.ts +10 -10
- package/dist/components/station-monitor/Material.js +28 -20
- package/dist/components/station-monitor/Material.test.js +1 -1
- package/dist/components/station-monitor/MoveMaterialArrows.d.ts +2 -2
- package/dist/components/station-monitor/PrintedLabel.d.ts +3 -3
- package/dist/components/station-monitor/PrintedLabel.js +9 -4
- package/dist/components/station-monitor/QuarantineButton.d.ts +1 -1
- package/dist/components/station-monitor/QuarantineButton.js +4 -2
- package/dist/components/station-monitor/Queues.d.ts +2 -2
- package/dist/components/station-monitor/Queues.js +6 -4
- package/dist/components/station-monitor/QueuesAddMaterial.d.ts +3 -3
- package/dist/components/station-monitor/QueuesAddMaterial.js +20 -7
- package/dist/components/station-monitor/SelectInspType.d.ts +2 -2
- package/dist/components/station-monitor/SelectWorkorder.d.ts +1 -1
- package/dist/components/station-monitor/StationToolbar.d.ts +1 -1
- package/dist/components/station-monitor/StationToolbar.js +13 -3
- package/dist/components/station-monitor/SystemOverview.d.ts +4 -4
- package/dist/components/station-monitor/SystemOverview.js +36 -16
- package/dist/components/station-monitor/Whiteboard.d.ts +1 -1
- package/dist/data/all-material-bins.js +2 -1
- package/dist/data/cost-per-piece.js +3 -1
- package/dist/data/move-arrows.js +3 -1
- package/dist/data/part-summary.js +1 -1
- package/dist/data/results.cycles.js +13 -4
- package/dist/data/tools-programs.js +3 -2
- package/dist/index.html +1 -1
- package/dist/network/api.d.ts +18 -0
- package/dist/network/api.js +502 -371
- package/dist/util/chart-colors.js +12 -1
- package/docs/client-efficiency.md +226 -263
- package/docs/client-engineering.md +27 -28
- package/docs/client-launch.md +32 -33
- package/docs/client-operations.md +50 -53
- package/docs/client-quality.md +39 -43
- package/docs/client-sales.md +36 -40
- package/docs/client-scanners.md +27 -27
- package/docs/client-station-monitor.md +86 -96
- package/docs/client-tools-programs.md +47 -44
- package/docs/improve-fms.md +73 -78
- package/docs/makino.md +21 -25
- package/docs/material-quarantine.md +50 -64
- package/docs/material-tracking.md +162 -195
- package/docs/mazak.md +78 -91
- package/docs/niigata.md +145 -168
- package/docs/operator-procedures.md +72 -76
- package/docs/part-instructions.md +36 -36
- package/docs/security.md +87 -81
- package/docs/server-config.md +36 -45
- package/docs/server-errors.md +21 -22
- package/package.json +25 -24
- package/dist/assets/index-BwbaiELK.js +0 -364
|
@@ -2,105 +2,101 @@
|
|
|
2
2
|
title: Load/Unload Procedures
|
|
3
3
|
nav: Procedures > Operator Load/Unload
|
|
4
4
|
description: >-
|
|
5
|
-
Implement continuous improvement of a flexible machining system by reviewing
|
|
6
|
-
|
|
5
|
+
Implement continuous improvement of a flexible machining system by reviewing targeted metrics
|
|
6
|
+
which expose cell efficiency and cost per piece.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Load/Unload Procedures
|
|
10
10
|
|
|
11
|
-
FMS Insight provides [targeted pages](client-station-monitor) for operators on the factory floor:
|
|
12
|
-
|
|
13
|
-
showing details about the material to be inspected, a page for the wash station, and finally a
|
|
14
|
-
for in-process material queue management. These pages use the
|
|
15
|
-
for material tracking. We suggest that each station has a
|
|
16
|
-
bookmarked or made the homepage; these pages are
|
|
17
|
-
should have an attached barcode
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
the load button to signal to the cell controller
|
|
24
|
-
the cell controller and will update the page.
|
|
11
|
+
FMS Insight provides [targeted pages](client-station-monitor) for operators on the factory floor: a
|
|
12
|
+
page for each load station which shows the material to load or unload, a page for each inspection
|
|
13
|
+
stand showing details about the material to be inspected, a page for the wash station, and finally a
|
|
14
|
+
page for in-process material queue management. These pages use the
|
|
15
|
+
[whiteboard metaphor](material-tracking) for material tracking. We suggest that each station has a
|
|
16
|
+
dedicated display or tablet with the relevant page bookmarked or made the homepage; these pages are
|
|
17
|
+
designed to work on a touchscreen. In addition, each station should have an attached barcode
|
|
18
|
+
scanner.
|
|
19
|
+
|
|
20
|
+
FMS Insight's load station page will display what the cell controller is expecting to happen at the
|
|
21
|
+
load station. Specifically, the page will display the material to load, the material to unload, and
|
|
22
|
+
the material to transfer between faces (if the pallet has multiple faces). If the operator performs
|
|
23
|
+
all the tasks as specified, the operator presses the load button to signal to the cell controller
|
|
24
|
+
that the load is complete. FMS Insight monitors the cell controller and will update the page.
|
|
25
25
|
|
|
26
26
|

|
|
27
27
|
|
|
28
28
|
If queues are used for managing material, the load station screen also can show the queues on the
|
|
29
29
|
right hand side. The specific material that is marked as loaded is the first material in the queue
|
|
30
30
|
which matches the job and route details. The material in the queue can be re-ordered by dragging,
|
|
31
|
-
which allows the operator to control which serial is loaded onto the pallet. Note that because
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
which allows the operator to control which serial is loaded onto the pallet. Note that because the
|
|
32
|
+
cell controller has already assigned a job to the pallet at the load station, the material at the
|
|
33
|
+
front of the queue will not always be the material that is loaded; the first material which matches
|
|
34
|
+
the job is loaded.
|
|
35
35
|
|
|
36
36
|
## Introducing Raw Material
|
|
37
37
|
|
|
38
|
-
The jobs control how raw material is introduced. If no raw
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
the
|
|
38
|
+
The jobs control how raw material is introduced. If no raw material queue is set on the job, the
|
|
39
|
+
cell controller will assume that raw material is always available and bring a pallet to be loaded as
|
|
40
|
+
soon as it is empty. FMS Insight is watching the cell controller and will create new material once
|
|
41
|
+
the load is complete.
|
|
42
42
|
|
|
43
|
-
Alternatively, the job can be configured with an input queue on the first process. In this case,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
Alternatively, the job can be configured with an input queue on the first process. In this case, the
|
|
44
|
+
contents of the queue control when the cell controller will bring a pallet to the load station to be
|
|
45
|
+
loaded. The Queues webpage shows the contents of the queue and allows the operator to scan or enter
|
|
46
|
+
new material into the queue. The page also shows a table of scheduled jobs and shows the quantity of
|
|
47
|
+
parts that still must be loaded.
|
|
48
48
|
|
|
49
49
|

|
|
50
50
|
|
|
51
|
-
The operator should physically bring the casting/raw material to the cell and place it in
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
The operator should physically bring the casting/raw material to the cell and place it in a
|
|
52
|
+
designated area nearby the load station. Once the material has arrived, the operator can click a
|
|
53
|
+
button on the queues webpage (or scan a barcode) to add the material to the queue. FMS Insight
|
|
54
|
+
supports a variety of techniques controlled by [config settings](server-config): adding raw material
|
|
55
|
+
assigned to a specific job, adding raw material with or without a serial, or bulk adding a large
|
|
56
|
+
quantity of material.
|
|
57
57
|
|
|
58
|
-
Each physical location on the shop floor which holds material should correspond to a queue
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
the material FMS Insight records as in the queue.
|
|
58
|
+
Each physical location on the shop floor which holds material should correspond to a queue in FMS
|
|
59
|
+
Insight. In addition, each queue should have a dedicated display or tablet mounted on the shop floor
|
|
60
|
+
right next to the queue. This display should have the queues page bookmarked or set as the homepage
|
|
61
|
+
and only show the queues page. This allows the operators and supervisors to quickly check at a
|
|
62
|
+
glance that the material on the shop floor matches the material FMS Insight records as in the queue.
|
|
64
63
|
|
|
65
64
|
## Quarantine Material
|
|
66
65
|
|
|
67
66
|
FMS Insight optionally supports the ability to [quarantine material](material-quarantine).
|
|
68
|
-
Quarantined material is material that is temporarily removed from the cell for re-machining,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
Quarantined material is material that is temporarily removed from the cell for re-machining, more
|
|
68
|
+
detailed inspection, or some other rework. Material can be quarantined on the queues page by opening
|
|
69
|
+
the material dialog and clicking a button. This moves the material to the quarantine queue where it
|
|
70
|
+
is visible on the supervisor's material page.
|
|
72
71
|
|
|
73
|
-
Once the material is ready to be re-introduced into the cell, the operator should bring it
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
Once the material is ready to be re-introduced into the cell, the operator should bring it back to
|
|
73
|
+
the shop floor. Once the material has arrived, the operator can click a button on the queues webpage
|
|
74
|
+
(or scan the barcode) to add the material into the queue. Once it is back in the queue, the cell
|
|
75
|
+
controller will activate a pallet to load the material.
|
|
77
76
|
|
|
78
77
|
## Recovering From Misload
|
|
79
78
|
|
|
80
|
-
The load station page displays the load, unload, or reclamp steps that the cell
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
If
|
|
104
|
-
swap the two serials on the supervisor's material page. This is a data-only change and no
|
|
105
|
-
change is made to the cell controller. If a swap cannot be performed, the material must be
|
|
106
|
-
quarantined and invalidated as described above.
|
|
79
|
+
The load station page displays the load, unload, or reclamp steps that the cell controller is
|
|
80
|
+
expecting the operator to preform. When the operator presses the ready button, both the cell
|
|
81
|
+
controller and FMS Insight (which is watching the cell controller) assumes that these instructions
|
|
82
|
+
took place. FMS Insight will take the material from the input queue and record it as loaded onto the
|
|
83
|
+
pallet. The cell controller will begin moving the pallet to the machine.
|
|
84
|
+
|
|
85
|
+
If for whatever reason the load instructions can not be followed, ideally the operator should edit
|
|
86
|
+
the cell controller **before** the load is completed. FMS Insight will adjust itself based on
|
|
87
|
+
whatever the cell controller expects to happen and only at the time that the load is completed is
|
|
88
|
+
anything finalized and recorded.
|
|
89
|
+
|
|
90
|
+
If the load button is pressed, the first step is to adjust the status in the cell controller to
|
|
91
|
+
match what actually happened. FMS Insight is watching the cell controller and when the pallet status
|
|
92
|
+
is adjusted, FMS Insight will move any material that was thought to be loaded on the pallet to the
|
|
93
|
+
quarantine queue. That material can then be re-introduced back into the queue so that the queue in
|
|
94
|
+
FMS Insight matches the material on the shop floor. In addition, FMS Insight allows the ability to
|
|
95
|
+
invalidate the inadvertent load events that were created.
|
|
96
|
+
|
|
97
|
+
Finally, in certain situations depending on the specific configuration of the jobs and queues, FMS
|
|
98
|
+
Insight supports a serial swap. FMS Insight assumes the material that is loaded is the first
|
|
99
|
+
material in the queue which matches the job the cell controller expects. If the serial actually
|
|
100
|
+
loaded is different but the job and details match, the supervisor can swap the two serials on the
|
|
101
|
+
supervisor's material page. This is a data-only change and no change is made to the cell controller.
|
|
102
|
+
If a swap cannot be performed, the material must be quarantined and invalidated as described above.
|
|
@@ -2,25 +2,23 @@
|
|
|
2
2
|
title: Operator Instructions
|
|
3
3
|
nav: FMS Insight Server > Instructions
|
|
4
4
|
description: >-
|
|
5
|
-
The FMS Insight server can be configured to display arbitrary load, unload, wash
|
|
6
|
-
|
|
5
|
+
The FMS Insight server can be configured to display arbitrary load, unload, wash and inspection
|
|
6
|
+
instructions to the operator.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# FMS Insight Operator Instructions
|
|
10
10
|
|
|
11
|
-
FMS Insight can display load, wash, and inspection instructions to the operator.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
browser tab.
|
|
11
|
+
FMS Insight can display load, wash, and inspection instructions to the operator. The instructions
|
|
12
|
+
are documents (typically PDF files) stored on the FMS Insight server, and when the user clicks a
|
|
13
|
+
button in the client the instructions are shown in a new browser tab.
|
|
15
14
|
|
|
16
15
|
### Configuration
|
|
17
16
|
|
|
18
|
-
The instruction files are kept on the FMS Insight server in a single directory. The
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
directory
|
|
17
|
+
The instruction files are kept on the FMS Insight server in a single directory. The directory is
|
|
18
|
+
configured via a [configuration option](server-config) `InstructionFilePath` within the `FMS`
|
|
19
|
+
section. Once configured, this directory should be filled with files that can be displayed in a
|
|
20
|
+
browser (PDF is a good choice). When the user requests an instruction file, the FMS Insight server
|
|
21
|
+
will search the filename of all files inside this directory
|
|
24
22
|
|
|
25
23
|
### Instruction Types
|
|
26
24
|
|
|
@@ -29,35 +27,37 @@ search for a different file depending on the page on the
|
|
|
29
27
|
[station monitor screen](client-station-monitor) and the currently selected part. To create
|
|
30
28
|
instruction files for all possibilities, you should create files as follows:
|
|
31
29
|
|
|
32
|
-
- For each part, create a file with the partname and `load` in the filename. Inside this
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
- For each part, create a file with the partname and `load` in the filename. Inside this file, add
|
|
31
|
+
pictures and text to explain how to load and optionally unload the part from the pallet. For
|
|
32
|
+
example, for a part named `ABC123`, you could create a file `ABC123-load.pdf` which contains the
|
|
33
|
+
instructions. When the user is on the Load Station page in FMS Insight, FMS Insight will search
|
|
34
|
+
for a file with the partname and `load` in the filename, find `ABC123-load.pdf`, and display it to
|
|
35
|
+
the user.
|
|
38
36
|
|
|
39
|
-
- For each part, optionally create a file with the partname and `unload` in the filename. If no
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
- For each part, optionally create a file with the partname and `unload` in the filename. If no file
|
|
38
|
+
exists with the partname and `unload` in the filename, FMS Insight will fall back to searching for
|
|
39
|
+
a file with the partname and `load` in the filename. Thus you could just create a single file
|
|
42
40
|
(e.g. `ABC123-load.pdf`) which contains both the load and unload instructions, or you could create
|
|
43
41
|
two separate files (e.g. `ABC123-load.pdf` and `ABC123-unload.pdf`).
|
|
44
42
|
|
|
45
|
-
- For each part, create a file with the partname and `wash` in the filename. Inside this
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
the Inspection page, FMS Insight will find the file based on the currently selected part and
|
|
43
|
+
- For each part, create a file with the partname and `wash` in the filename. Inside this file, add
|
|
44
|
+
pictures and text to explain how to wash and perhaps other tasks at the wash station. For example,
|
|
45
|
+
for a part named `ABC123`, you could create a file `ABC123-wash.pdf`. Similar to before, when the
|
|
46
|
+
user is on the Wash page in FMS Insight, this instruction file will be displayed.
|
|
47
|
+
|
|
48
|
+
- For each part and each inspection type, create a file with the partname and the inspection type in
|
|
49
|
+
the filename. For example, for a part named `ABC123` and inspection types `CMM` and `3DScan`, you
|
|
50
|
+
should create two files: `ABC123-CMM.pdf` and `ABC123-3DScan.pdf`. Each file should contain
|
|
51
|
+
pictures and text to explain how to perform the inspection on this part. When the user is on the
|
|
52
|
+
Inspection page, FMS Insight will find the file based on the currently selected part and
|
|
56
53
|
inspection type.
|
|
57
54
|
|
|
58
55
|
### Opening the instructions
|
|
59
56
|
|
|
60
|
-
To open the instructions, click on any material card in the
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
To open the instructions, click on any material card in the
|
|
58
|
+
[station monitor page](client-station-monitor). When clicked, a dialog will appear with details
|
|
59
|
+
about the material. On the bottom of the dialog, there is a button "Instructions". When clicked, FMS
|
|
60
|
+
Insight will search for a file matching the current partname and page (load, wash, or inspection) as
|
|
61
|
+
described above. The instruction file will then be displayed in a new tab. When subsequent
|
|
62
|
+
instructions are requested, the tab will be re-used. Thus the tab does not need to be manually
|
|
63
|
+
closed after each operation.
|
package/docs/security.md
CHANGED
|
@@ -2,82 +2,82 @@
|
|
|
2
2
|
title: FMS Insight Security
|
|
3
3
|
nav: FMS Insight Server > Security
|
|
4
4
|
description: >-
|
|
5
|
-
The FMS Insight server runs on the cell controller and uses TLS and OpenID
|
|
6
|
-
Connect.
|
|
5
|
+
The FMS Insight server runs on the cell controller and uses TLS and OpenID Connect.
|
|
7
6
|
---
|
|
8
7
|
|
|
9
8
|
# FMS Insight Security
|
|
10
9
|
|
|
11
|
-
FMS Insight implements a JSON+REST-based HTTP server and runs on the cell
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
download jobs.
|
|
10
|
+
FMS Insight implements a JSON+REST-based HTTP server and runs on the cell controller. By default,
|
|
11
|
+
FMS Insight listens on port 5000 with no TLS and no authentication; any computer which can connect
|
|
12
|
+
to the port can view data and download jobs.
|
|
15
13
|
|
|
16
14
|
To implement security, we recommend one of two possible variants.
|
|
17
15
|
|
|
18
16
|
- FMS Insight can be configured to require TLS and require OpenID connect authentication for
|
|
19
|
-
single-sign-on. This requires the cell controller computer (running FMS Insight) to be directly
|
|
20
|
-
to the existing factory network, but a firewall can be used to only allow access on the
|
|
21
|
-
port running FMS Insight.
|
|
17
|
+
single-sign-on. This requires the cell controller computer (running FMS Insight) to be directly
|
|
18
|
+
connected to the existing factory network, but a firewall can be used to only allow access on the
|
|
19
|
+
specific port running FMS Insight.
|
|
22
20
|
- A cell-local private network containing the machines, cell-controller, and FMS Insight is created.
|
|
23
21
|
A reverse HTTP proxy connects the cell-local private network to the factory network.
|
|
24
22
|
|
|
25
23
|
## FMS Insight HTTPS, Authentication, and Firewall
|
|
26
24
|
|
|
27
|
-
In this design, FMS Insight is configured to require TLS/HTTPS and implements
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
network and is configured to only allow traffic on the FMS Insight port.
|
|
25
|
+
In this design, FMS Insight is configured to require TLS/HTTPS and implements authentication using
|
|
26
|
+
OpenID Connect. We have tested with AzureAD, Okta, and Keycloak, but any OpenID/OAuth2 compliant
|
|
27
|
+
identity provider should work. An external firewall is placed between the cell-controller and the
|
|
28
|
+
factory network and is configured to only allow traffic on the FMS Insight port.
|
|
32
29
|
|
|
33
|
-
To enable HTTPS, a server certificate must be created and stored in a pfx file. This
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
To enable HTTPS, a server certificate must be created and stored in a pfx file. This should be
|
|
31
|
+
signed by the enterprise domain, but could also be a self-signed certificate. Once created, within
|
|
32
|
+
the FMS Insight [config.ini](server-config) file, enable the `TLSCertFile` setting with the path to
|
|
33
|
+
the certificate.
|
|
37
34
|
|
|
38
|
-
Within your identity provider, create an application for FMS Insight and create a client.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
or groups to the application).
|
|
35
|
+
Within your identity provider, create an application for FMS Insight and create a client. The client
|
|
36
|
+
must require implicit grant flow with no client secret. The Redirect URI for the client must be set
|
|
37
|
+
to the common name from the TLS certificate with a root path. Finally, most identity providers allow
|
|
38
|
+
the administrator to restrict an application to a set of users (e.g. Azure Active Directory allows
|
|
39
|
+
assigning specific users or groups to the application).
|
|
44
40
|
|
|
45
41
|
Once the client has been created, there are four settings in the [config.ini](server-config).
|
|
46
42
|
|
|
47
|
-
- `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for
|
|
48
|
-
For example, for AzureAD, this is
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
- `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for
|
|
44
|
+
the identity provider. For example, for AzureAD, this is
|
|
45
|
+
`https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
|
|
46
|
+
- `OpenIDConnectClientID`: This should be the ClientID for the implicit grant flow client. This
|
|
47
|
+
ClientID is passed to the FMS Insight webpage which then performs the implicit flow grant to
|
|
48
|
+
obtain a token.
|
|
51
49
|
- `AuthAuthority`: This must be identical to the `OpenIDConnectAuthority`.
|
|
52
|
-
- `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity
|
|
53
|
-
cases, the audience matches the ClientID. Multiple audiences are separated
|
|
50
|
+
- `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity
|
|
51
|
+
tokens. In almost all cases, the audience matches the ClientID. Multiple audiences are separated
|
|
52
|
+
by semi-colons.
|
|
54
53
|
|
|
55
54
|
## Cell-Local Private Network With Proxy
|
|
56
55
|
|
|
57
|
-
In this design, a cell-local private network is created with a proxy computer to the factory
|
|
58
|
-
The design is based on a networking DMZ-setup.
|
|
56
|
+
In this design, a cell-local private network is created with a proxy computer to the factory
|
|
57
|
+
network. The design is based on a networking DMZ-setup.
|
|
59
58
|
|
|
60
|
-
- The machines and cell controller are placed on a private network. This network has no DNS,
|
|
61
|
-
|
|
59
|
+
- The machines and cell controller are placed on a private network. This network has no DNS, no
|
|
60
|
+
DHCP, and no route or access to any other network. IP Addresses are statically assigned.
|
|
62
61
|
|
|
63
62
|
- The cell controller computer runs FMS Insight with no TLS, listening on port 5000.
|
|
64
63
|
|
|
65
|
-
- The factory provides a computer with two network cards. One network card connects
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
- The factory provides a computer with two network cards. One network card connects to the
|
|
65
|
+
cell-local private network and is statically assigned an IP address. The second network card
|
|
66
|
+
connects to the existing factory network. This computer can join the domain, enable Windows
|
|
67
|
+
Updates, and use all the typical configuration of the Factory's IT. This computer should deny ALL
|
|
68
|
+
network traffic to be routed between the cell-local network and the factory network. All
|
|
69
|
+
communication is proxied (a networking DMZ setup). The factory provides this computer, allowing
|
|
70
|
+
you to use your preferred supplier and configuration.
|
|
72
71
|
|
|
73
|
-
- The proxy computer runs a reverse-HTTP-proxy. This can be Nginx, IIS, or something else. We
|
|
74
|
-
|
|
75
|
-
(~250 lines of code) which you can use if you wish it. The reverse-proxy implements TLS and
|
|
72
|
+
- The proxy computer runs a reverse-HTTP-proxy. This can be Nginx, IIS, or something else. We also
|
|
73
|
+
provide the source code for a small C# reverse-proxy server built using ASP.NET Core and Kestrel
|
|
74
|
+
(~250 lines of code) which you can use if you wish it. The reverse-proxy implements TLS and
|
|
75
|
+
requires connections over HTTPS.
|
|
76
76
|
|
|
77
|
-
- Either the reverse-proxy or FMS Insight itself is configured to require OpenID Connect/OAuth2
|
|
78
|
-
This allows single-sign-on and only authenticated users will then be able to view
|
|
79
|
-
FMS Insight has been tested with AzureAD, Okta, and Keycloak, but any OpenID
|
|
80
|
-
identity provider should work.
|
|
77
|
+
- Either the reverse-proxy or FMS Insight itself is configured to require OpenID Connect/OAuth2
|
|
78
|
+
Authentication. This allows single-sign-on and only authenticated users will then be able to view
|
|
79
|
+
data and create jobs. FMS Insight has been tested with AzureAD, Okta, and Keycloak, but any OpenID
|
|
80
|
+
Connect compliant identity provider should work.
|
|
81
81
|
|
|
82
82
|
- Software running on the factory network connects and authenticates with the reverse-proxy, which
|
|
83
83
|
passes the requests along to FMS Insight running on the cell controller.
|
|
@@ -85,47 +85,53 @@ The design is based on a networking DMZ-setup.
|
|
|
85
85
|
#### Reverse-Proxy Implemented Authentication
|
|
86
86
|
|
|
87
87
|
One option for authentication is for the reverse-proxy to require authentication. The reverse-proxy
|
|
88
|
-
should require OpenID Connect authentication for all routes starting with `/api` except for
|
|
89
|
-
Our small C# reverse-proxy implements OpenID Connect authentication
|
|
90
|
-
and Keycloak. Alternatively, Nginx+ or IIS can be configured
|
|
88
|
+
should require OpenID Connect authentication for all routes starting with `/api` except for
|
|
89
|
+
`/api/v1/fms/fms-information`. Our small C# reverse-proxy implements OpenID Connect authentication
|
|
90
|
+
and has been tested with AzureAD, Okta, and Keycloak. Alternatively, Nginx+ or IIS can be configured
|
|
91
|
+
to require authentication.
|
|
91
92
|
|
|
92
93
|
In this scenario, two settings are needed in FMS Insight's [config.ini](server-config):
|
|
93
94
|
|
|
94
|
-
- `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for
|
|
95
|
-
For example, for AzureAD, this is
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
- `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for
|
|
96
|
+
the identity provider. For example, for AzureAD, this is
|
|
97
|
+
`https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
|
|
98
|
+
- `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is
|
|
99
|
+
passed to the FMS Insight webpage which then performs the implicit flow grant to authenticate the
|
|
100
|
+
user and obtain a token.
|
|
98
101
|
|
|
99
|
-
These settings are just returned to clients in the `/api/v1/fms/fms-information` route, FMS Insight
|
|
100
|
-
check the request for a proper JWT token.
|
|
102
|
+
These settings are just returned to clients in the `/api/v1/fms/fms-information` route, FMS Insight
|
|
103
|
+
itself does not check the request for a proper JWT token.
|
|
101
104
|
|
|
102
|
-
Next, the reverse-proxy is configured with TLS certificates and authentication. For our small C#
|
|
103
|
-
this is done in the appsettings.json file.
|
|
105
|
+
Next, the reverse-proxy is configured with TLS certificates and authentication. For our small C#
|
|
106
|
+
reverse-proxy, this is done in the appsettings.json file.
|
|
104
107
|
|
|
105
108
|
#### FMS Insight Implemented Authentication
|
|
106
109
|
|
|
107
|
-
If the reverse-proxy does not implement authentication, FMS Insight itself can verify the tokens.
|
|
108
|
-
is that the FMS Insight server requires access to the OpenID Connect Authority
|
|
109
|
-
to be able to obtain the signing keys. For example, in AzureAD,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
the
|
|
110
|
+
If the reverse-proxy does not implement authentication, FMS Insight itself can verify the tokens.
|
|
111
|
+
The main challenge is that the FMS Insight server requires access to the OpenID Connect Authority
|
|
112
|
+
well-known configuration document to be able to obtain the signing keys. For example, in AzureAD,
|
|
113
|
+
the well-known document is
|
|
114
|
+
`https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration` where tenant is
|
|
115
|
+
your tenant GUID. This document is required to be accessible by the FMS Insight server to obtain the
|
|
116
|
+
rotating signing keys of the identity provider. Since FMS Insight is running on the cell-controller
|
|
117
|
+
on the cell-local private network and the proxy computer denies all routed traffic, FMS Insight has
|
|
118
|
+
no direct access to the well-known configuration document.
|
|
119
|
+
|
|
120
|
+
Thus, the reverse-proxy must also proxy the well-known configuration document. That is, the
|
|
121
|
+
reverse-proxy is configured to first proxy all connections from the factory network to FMS Insight.
|
|
122
|
+
In addition, the reverse-proxy is then also configured to proxy the request from FMS Insight to the
|
|
123
|
+
OpenID Connect configuration document to the real identity provider.
|
|
119
124
|
|
|
120
125
|
The configuration in FMS Insight's [config.ini](server-config) are as follows:
|
|
121
126
|
|
|
122
|
-
- `OpenIDConnectAuthority`: The real identity-provided authority URL.
|
|
123
|
-
|
|
124
|
-
- `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is
|
|
125
|
-
to the FMS Insight webpage which then performs the implicit flow grant to authenticate the
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
- `OpenIDConnectAuthority`: The real identity-provided authority URL. For example, for AzureAD, this
|
|
128
|
+
is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
|
|
129
|
+
- `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is
|
|
130
|
+
passed to the FMS Insight webpage which then performs the implicit flow grant to authenticate the
|
|
131
|
+
user and obtain a token.
|
|
132
|
+
- `AuthAuthority`: The path to the reverse-proxy to obtain the OpenID configuration. For example, it
|
|
133
|
+
could be `http://{reverse-proxy-ip-address}/openid-authority`. The reverse-proxy should then be
|
|
134
|
+
configured to proxy all paths starting with `/openid-authority/*` to the real identity provider.
|
|
135
|
+
- `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity
|
|
136
|
+
tokens. In almost all cases, the audience matches the ClientID. Multiple audiences are separated
|
|
137
|
+
by semi-colons. Thus this setting should be all the ClientIDs created separated by semi-colons.
|