You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ through the typical process of an application developer and learn about MORYX
5
5
concepts and terminology on the way.
6
6
7
7
You will accompany a pencil manufacturer on its road to the digital factory.
8
-
Despite using some specialised machines, they don't have any automatted
8
+
Despite using some specialized machines, they don't have any automated
9
9
processes right now.
10
10
11
11
@@ -19,7 +19,7 @@ Programming**, all of that is **not mandatory** to master this.
19
19
20
20
## Prerequisite
21
21
22
-
Below is a list of patterns and basic concepts that MORYX is build upon, but you
22
+
Below is a list of patterns and basic concepts that MORYX is built upon, but you
23
23
don't need to know right upfront.
24
24
25
25
### General/OOP
@@ -46,7 +46,7 @@ This is a list of more or less 'advanced' topics
46
46
47
47
## Requirements
48
48
49
-
Before to start, you need the following tools installed on you machine:
49
+
Before you start, you need the following tools installed on your machine:
50
50
51
51
*[ ][Git](https://git-scm.com/)
52
52
*[ ][Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) (Any version below wouldn't work, but you can install them in parallel)
@@ -80,12 +80,12 @@ MORYX Terminology and Concepts you will learn
80
80
81
81
## [Chapter 2 - Drivers](chapter-2-drivers.md)
82
82
83
-
Since so many pencils were sold, the manufacturer decided that only manual cells aren't feasible anymore. So some manual cells are replaced by full automated ones.
83
+
Since so many pencils were sold, the manufacturer decided that only manual cells aren't feasible anymore. So some manual cells are replaced by fully automated ones.
84
84
85
85
In this chapter you will learn how to
86
86
* Communicate with hardware
87
87
* Use different hardware, without having to adjust the source code
88
-
*Setup a simulated production
88
+
*Set up a simulated production
89
89
90
90
Terminology and Concepts you will learn
91
91
* Drivers
@@ -94,9 +94,9 @@ Terminology and Concepts you will learn
Copy file name to clipboardExpand all lines: chapter-0-requirements.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,5 +5,5 @@
5
5
*[ ][CodeMeter User Runtime (Version 8.x)](https://www.wibu.com/de/support/anwendersoftware/anwendersoftware.html)
6
6
7
7
## Get all your licenses running
8
-
The application developer program uses developer licenses. The licenses end on WibuCmRaU. You need the CodeMeter Control Center, where you can add those files via drag and drop. This can be downloaded from the Wibu website directly.
9
-
For a scenario in which you want to use production licenses you may consider installing the PHOENIX CONTACT Activation Wizard available on the [PHOENIX CONTACT page](https://www.phoenixcontact.com/de-de/produkte/programmier-software-plcnext-engineer-1046008) under Downloads -> Software.
8
+
The application developer program uses developer licenses. The licenses end with WibuCmRaU. You need the CodeMeter Control Center, where you can add those files via drag and drop. This can be downloaded from the Wibu website directly.
9
+
For a scenario in which you want to use production licenses, you may consider installing the PHOENIX CONTACT Activation Wizard available on the [PHOENIX CONTACT page](https://www.phoenixcontact.com/de-de/produkte/programmier-software-plcnext-engineer-1046008) under Downloads -> Software.
Now, that you have a running MORYX instance, you need to create some databases.
65
+
Now that you have a running MORYX instance, you need to create some databases.
66
66
To skip the UI here and speed things up, you'll use the MORYX CLI again.
67
67
68
68
While the application is still running, `moryx exec post-setup` will create empty
@@ -80,9 +80,9 @@ At first, you will model [products](https://github.com/PHOENIXCONTACT/MORYX-Fram
80
80
Products represent the articles to be manufactured. MORYX differentiates between
81
81
`ProductType` and `ProductInstance`. The `ProductType` is what you can order
82
82
in a catalog, while the `ProductInstance` is what you would receive after ordering:
83
-
an instance of the product with its unique serialnumber. In order for a `ProductType`
83
+
an instance of the product with its unique serial number. In order for a `ProductType`
84
84
to be produced, it needs a corresponding `ProductInstance`. For further
85
-
information on how to create a product see [this](https://github.com/PHOENIXCONTACT/MORYX-Framework/blob/main/docs/tutorials/HowToCreateAProduct.md).
85
+
information on how to create a product, see [this](https://github.com/PHOENIXCONTACT/MORYX-Framework/blob/main/docs/tutorials/HowToCreateAProduct.md).
86
86
87
87
Let's take a look at the composition of the pencil *Pencilla Inc.* produces.
88
88
@@ -103,7 +103,7 @@ From the details above, the `GraphitePencilType` needs
103
103
You will find the `GraphitePencilType` among all other `<Product>Types` in the
104
104
`PencilFactory` package within the `Products` folder.
105
105
106
-
For properties to be shown on the UI, add the [EntrySerialize](https://github.com/PHOENIXCONTACT/MORYX-Framework/blob/dev/docs/articles/Core/Serialization/EntryConvert.md#entryserialize-attribute)
106
+
For properties to be shown in the UI, add the [EntrySerialize](https://github.com/PHOENIXCONTACT/MORYX-Framework/blob/dev/docs/articles/Core/Serialization/EntryConvert.md#entryserialize-attribute)
107
107
attribute. For properties to be saved in the database, use the [DataMember](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.datamemberattribute?view=net-7.0) attribute.
108
108
109
109
```cs
@@ -144,7 +144,7 @@ To create a product, you need to run the application now and head to the
144
144
**Products UI**.
145
145
146
146
Click on the plus button to open the 'Product Importer' menu. This title may
147
-
sound a bit confusing, but it let's you add new products.
147
+
sound a bit confusing, but it lets you add new products.
148
148
149
149
> *Note* The naming here comes from the fact, that you wouldn't necessarily add
150
150
> products here, but 'import' them from other systems.
@@ -160,13 +160,13 @@ sound a bit confusing, but it let's you add new products.
160
160
* Click on the product you just added: `100001-00 GP-1B`
161
161
* Click on the edit icon at the top right to edit.
162
162
* In the `Color` dropdown choose `Green`
163
-
* In the `Hardness` dropdown choose `B` as the hardness, which represent`1B`
163
+
* In the `Hardness` dropdown choose `B` as the hardness, which represents`1B`
164
164
in this case.
165
165
* Save your changes by clicking on the save icon at the top right corner.
* Repeat the same step for the second product `100002-00 Green Pencil GP-HB`.
427
+
* Repeat the same steps for the second product `100002-00 Green Pencil GP-HB`.
428
428
429
429
### Start production
430
430
@@ -463,7 +463,7 @@ Now the production is running!
463
463
That's it, you should now be able to let the pencils flow through the assembling
464
464
cell.
465
465
466
-
In order to see the visual instructions, got to the module `Worker Support` and select for VisualInstructor as Display
466
+
In order to see the visual instructions, go to the module `Worker Support` and select for VisualInstructor as Display
467
467
468
468

469
469
@@ -483,7 +483,7 @@ The application depends on MORYX modules, that are licensed. But no worries:
483
483
They ship with developer licenses, that need to be activated:
484
484
485
485
* Open *CodeMeter Control Center*,
486
-
that you should have installed beforehand through the [CodeMeter User Runtime (Version 8.x)](https://www.wibu.com/de/support/anwendersoftware/anwendersoftware.html)
486
+
which you should have installed beforehand through the [CodeMeter User Runtime (Version 8.x)](https://www.wibu.com/de/support/anwendersoftware/anwendersoftware.html)
Copy file name to clipboardExpand all lines: chapter-2-drivers.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
1
# Driver
2
2
In this chapter you will implement the ColorizingCell and the TestingCell.
3
-
Both of them are automatic cells, which don't need any user interactions.
3
+
Both of them are automatic cells, which don't need any user interaction.
4
4
Correspondingly there are no visual instructions. Instead there is some kind of hardware, which needs to be connected to MORYX.
5
5
6
6
For the cell to communicate with the hardware a [Driver](https://github.com/PHOENIXCONTACT/MORYX-Framework/blob/dev/docs/tutorials/HowToBuildADriver.md) is needed.
7
7
In here the communication is encapsulated.
8
8
9
9
As there are many different ways to communicate, there are also many different implementations of drivers.
10
10
Common interfaces for drivers are `IMessageDriver<TMessage>` and `IInOutDriver`.
11
-
* The `IMessageDriver<TMessage>` is used for message based protocols. The driver is able to send and receive messages. When a new message is received, an event get's invoked. A typical procotol would be MQTT.
11
+
* The `IMessageDriver<TMessage>` is used for message based protocols. The driver is able to send and receive messages. When a new message is received, an event gets invoked. A typical protocol would be MQTT.
12
12
* The `IInOutDriver` can read and write variables on a server. A typical protocol is OPC UA.
13
13
14
14
## Simulated InOutDriver
@@ -24,10 +24,10 @@ The ColorizingCell is using a protocol, where it can read and write variables on
24
24
25
25
1. When the physical cell is ready to work, it will set the input `Ready` to `true`.
26
26
2. The digital twin will send a `ReadyToWork`.
27
-
3. When the cells receives an activity, set the output `ProcessStart` to `true`.
27
+
3. When the cell receives an activity, set the output `ProcessStart` to `true`.
28
28
4. Read the result from the input `ProcessResult`.
29
29
30
-
For a protocol like that the `IInOutDriver` makes the most sense. Open the ColorizingCell and replace the already generated `IMessageDriver` by an `IInOutDriver`. Also add constants the names of the variables to read and write.
30
+
For a protocol like that the `IInOutDriver` makes the most sense. Open the ColorizingCell and replace the already generated `IMessageDriver` by an `IInOutDriver`. Also add constants for the names of the variables to read and write.
31
31
32
32
```cs
33
33
[ResourceRegistration]
@@ -44,7 +44,7 @@ public class Colorizing : Cell
44
44
}
45
45
```
46
46
47
-
In order to recognize, when an input changed, subscribe to that in `OnInitialize` and when the driver is set. If you don't also subscribe to the event in the setter of the driver, you always have to restart the system after changing the driver of a cell.
47
+
In order to recognize, when an input changes, subscribe to that in `OnInitialize` and when the driver is set. If you don't also subscribe to the event in the setter of the driver, you will always have to restart the system after changing the driver of a cell.
@@ -158,7 +158,7 @@ public class SimulatedColorizingDriver : SimulatedInOutDriver<bool, bool>
158
158
}
159
159
```
160
160
161
-
A `SimulationDriver` has several states, which are needed in order for the SimulationModule to know whats happens. After the system has booted, the driver is in the state `Idle`. Is a product arriving, the cell sends a `ReadyToWork` and the driver changes its state to `Requested`. During production the state is `Executing` and afterward it changes back to `Idle`.
161
+
A `SimulationDriver` has several states, which are needed in order for the SimulationModule to know what happens. After the system has booted, the driver is in the state `Idle`. Is a product arriving, the cell sends a `ReadyToWork` and the driver changes its state to `Requested`. During production the state is `Executing` and afterward it changes back to `Idle`.
162
162
163
163

164
164
@@ -173,7 +173,7 @@ public override void Ready(IActivity activity)
173
173
}
174
174
```
175
175
176
-
The method `OnOuputSet` gets called when outputs where changed. In this example only the output `ProcessStart` gets set, which would activate the production.
176
+
The method `OnOuputSet` gets called when outputs are changed. In this example only the output `ProcessStart` gets set, which would activate the production.
The method `Result` gets called by the after the (simulated) physical cell has finished its task. It sets the input `ProcessResult` in order to pass on the result to the digital twin.
192
+
The method `Result` gets called after the (simulated) physical cell has finished its task. It sets the input `ProcessResult` in order to pass on the result to the digital twin.
0 commit comments