Skip to content

Commit f449bcb

Browse files
authored
Merge pull request #6 from jsonBackup/fix/misspelling
Fix Misspellings
2 parents 9d4ec17 + a1164e8 commit f449bcb

File tree

5 files changed

+49
-49
lines changed

5 files changed

+49
-49
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ through the typical process of an application developer and learn about MORYX
55
concepts and terminology on the way.
66

77
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
99
processes right now.
1010

1111

@@ -19,7 +19,7 @@ Programming**, all of that is **not mandatory** to master this.
1919

2020
## Prerequisite
2121

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
2323
don't need to know right upfront.
2424

2525
### General/OOP
@@ -46,7 +46,7 @@ This is a list of more or less 'advanced' topics
4646

4747
## Requirements
4848

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:
5050

5151
* [ ] [Git](https://git-scm.com/)
5252
* [ ] [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
8080

8181
## [Chapter 2 - Drivers](chapter-2-drivers.md)
8282

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.
8484

8585
In this chapter you will learn how to
8686
* Communicate with hardware
8787
* Use different hardware, without having to adjust the source code
88-
* Setup a simulated production
88+
* Set up a simulated production
8989

9090
Terminology and Concepts you will learn
9191
* Drivers
@@ -94,9 +94,9 @@ Terminology and Concepts you will learn
9494

9595

9696
## [Chapter 3 - Basics II](chapter-3-basics-II.md)
97-
The manufacturer decided to have a seperate Colorizing Cell for each color in order not to have to change the paint anymore.
97+
The manufacturer decided to have a separate Colorizing Cell for each color in order not to have to change the paint anymore.
9898

99-
In this chapter you will lean how to
99+
In this chapter you will learn how to
100100

101101
* Find the right Cell depending on a product property
102102

chapter-0-requirements.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
* [ ] [CodeMeter User Runtime (Version 8.x)](https://www.wibu.com/de/support/anwendersoftware/anwendersoftware.html)
66

77
## 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.

chapter-1-basics.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ In this chapter you will learn the basics of MORYX and how it helps you to set u
33

44
## Use Case
55

6-
Your costumer *Pencilla Inc.* produces pencils. The production needs prepared
6+
Your customer *Pencilla Inc.* produces pencils. The production needs prepared
77
material - wooden slats and graphite - and consists of the following four steps:​
88

99
* Assembling: Glue slats and graphite together​ and shape it.
10-
* Colorizing : Add paint and imprint text
10+
* Colorizing: Add paint and imprint text
1111
* Testing: Test if the pencil writes and if the colors are visible on paper.
1212
* Packing: Pack each article in a box​
1313

@@ -62,7 +62,7 @@ Run the application (press `F5`).
6262
![Application dashboard](./chapter-1/HomePageOfPencilApp.PNG)
6363

6464

65-
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.
6666
To skip the UI here and speed things up, you'll use the MORYX CLI again.
6767

6868
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
8080
Products represent the articles to be manufactured. MORYX differentiates between
8181
`ProductType` and `ProductInstance`. The `ProductType` is what you can order
8282
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`
8484
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).
8686

8787
Let's take a look at the composition of the pencil *Pencilla Inc.* produces.
8888

@@ -103,7 +103,7 @@ From the details above, the `GraphitePencilType` needs
103103
You will find the `GraphitePencilType` among all other `<Product>Types` in the
104104
`PencilFactory` package within the `Products` folder.
105105

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)
107107
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.
108108

109109
``` cs
@@ -144,7 +144,7 @@ To create a product, you need to run the application now and head to the
144144
**Products UI**.
145145

146146
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.
148148

149149
> *Note* The naming here comes from the fact, that you wouldn't necessarily add
150150
> products here, but 'import' them from other systems.
@@ -160,13 +160,13 @@ sound a bit confusing, but it let's you add new products.
160160
* Click on the product you just added: `100001-00 GP-1B`
161161
* Click on the edit icon at the top right to edit.
162162
* 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`
164164
in this case.
165165
* Save your changes by clicking on the save icon at the top right corner.
166166

167167
![Graphite GP-1B](./chapter-1/AddGraphiteProduct.PNG)
168168

169-
Repeat the same step for a second product:
169+
Repeat the same steps for a second product:
170170

171171

172172
* `GraphitePencilType`
@@ -176,7 +176,7 @@ Repeat the same step for a second product:
176176
* *Hardness*: `HB`
177177
* *Color*: `Brown`
178178

179-
If you did everything correctly you should end up with something more or less
179+
If you did everything correctly, you should end up with something more or less
180180
similar to the image below.
181181

182182
![Products list](./chapter-1/productList.PNG)
@@ -191,7 +191,7 @@ Therefore, the next step is to model a resource after which we can create a **Re
191191

192192
## Resources
193193

194-
We begin with modelling the assembling station, used to assemble the pencils. This
194+
We begin with modeling the assembling station, used to assemble the pencils. This
195195
is where resources come into play.
196196

197197
Resources represent physical assets and logical objects like robots or drivers
@@ -219,7 +219,7 @@ Based on these requirements
219219

220220
### Add worker support
221221

222-
The `AssemblingCell`, you will find it in `PencilFactory.Resources`,
222+
The `AssemblingCell`, which you will find in `PencilFactory.Resources`,
223223
already has an instructor.
224224

225225
``` cs
@@ -244,7 +244,7 @@ instructions to a worker. So the following resources are needed:
244244
* 1 `AssemblingCell`
245245
* 1 `VisualInstructor`
246246

247-
You will setup these in MORYX within the *Resources UI* by clicking the "+"
247+
You will set up these in MORYX within the *Resources UI* by clicking the "+"
248248
button and selecting the required cell.
249249

250250

@@ -281,14 +281,14 @@ Usually a *session* (and with it a *sequence*) is started by a resource, telling
281281
the process engine, that it is *ReadyToWork*.
282282

283283
Then with `ActivityStart()` the process engine can tell a resource, that it
284-
should start working on a product. After the resource has finished it's job, it
284+
should start working on a product. After the resource has finished its job, it
285285
will signal this with `ActivityCompleted()`.
286286

287287
When the process engine has processed the *ActivityResult* (submitted by `ActivityCompleted`),
288288
it will "close" the sequence with `SequenceCompleted()`.
289289

290290
Then, the resource could continue the current *session* (`ContinueSession`) with
291-
another *sequence* or start a whole new *session* by signalling `ReadyToWork`.
291+
another *sequence* or start a whole new *session* by signaling `ReadyToWork`.
292292

293293
![Activities, Sequences and Sessions](./chapter-1/SessionsAndSequences.png)
294294

@@ -317,8 +317,8 @@ thus signal `ReadyToWork` to the ProcessEngine.
317317
* `ActivityClassification.Production` is used to notify that the cell is ready to
318318
work on an `Activity` of type `production`.
319319

320-
Since that should result in an `ActivityStarted` event, the next thing to be
321-
implemented will be the `ActivityStarted()` function. Find the comment
320+
Since that should result in an `ActivityStarted` event, the next thing to
321+
implement will be the `ActivityStarted()` function. Find the comment
322322
`/* Start execution here */` and replace it so that the whole function looks
323323
like this:
324324

@@ -379,7 +379,7 @@ This allows you to define in a rather abstract way, *what* needs to be done with
379379
going much more into details. MORYX will find the way later, *how* this is done
380380
for a running order.
381381

382-
Start the application, go to *Wokplans* and click on the plus button.
382+
Start the application, go to *Workplans* and click on the plus button.
383383

384384
![Create new workplan](./chapter-1/NewWorkplan.png)
385385

@@ -402,7 +402,7 @@ When you are done, modeling your workflow, you have to save the workplan.
402402

403403
### Add a *Recipe*
404404

405-
In order to make the connection between a`Product` and the `Workplan` you just
405+
In order to make the connection between a `Product` and the `Workplan` you just
406406
created, you need a *Recipe*.
407407

408408
Go to *Products* and select the *Product* you want to produce, that is the
@@ -418,13 +418,13 @@ your created workplan `Workplan`.
418418
![Create a new recipe](./chapter-1/pencilRecipe.PNG)
419419

420420
* Click on **Create** for the recipe to show up in the products UI.
421-
* For the recipe to be automatically seletcted when the product is produced, select
421+
* For the recipe to be automatically selected when the product is produced, select
422422
`Default` Classification.
423423
* Save your changes by clicking on the save icon located at the top right corner.
424424

425425
![Select recipe classification](./chapter-1/firstRecipe.PNG)
426426

427-
* 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`.
428428

429429
### Start production
430430

@@ -463,7 +463,7 @@ Now the production is running!
463463
That's it, you should now be able to let the pencils flow through the assembling
464464
cell.
465465

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
467467

468468
![Select Display](./chapter-1/SelectDisplay.png)
469469

@@ -483,7 +483,7 @@ The application depends on MORYX modules, that are licensed. But no worries:
483483
They ship with developer licenses, that need to be activated:
484484

485485
* 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)
487487
* Drag & Drop the `.WibuCmRau` files onto it
488488

489489
![Activate developer licenses](./chapter-1/drag-licenses.png)

chapter-2-drivers.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Driver
22
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.
44
Correspondingly there are no visual instructions. Instead there is some kind of hardware, which needs to be connected to MORYX.
55

66
For the cell to communicate with the hardware a [Driver](https://github.com/PHOENIXCONTACT/MORYX-Framework/blob/dev/docs/tutorials/HowToBuildADriver.md) is needed.
77
In here the communication is encapsulated.
88

99
As there are many different ways to communicate, there are also many different implementations of drivers.
1010
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.
1212
* The `IInOutDriver` can read and write variables on a server. A typical protocol is OPC UA.
1313

1414
## Simulated InOutDriver
@@ -24,10 +24,10 @@ The ColorizingCell is using a protocol, where it can read and write variables on
2424

2525
1. When the physical cell is ready to work, it will set the input `Ready` to `true`.
2626
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`.
2828
4. Read the result from the input `ProcessResult`.
2929

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.
3131

3232
```cs
3333
[ResourceRegistration]
@@ -44,7 +44,7 @@ public class Colorizing : Cell
4444
}
4545
```
4646

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.
4848

4949
```cs
5050
private IInOutDriver<bool,bool> _driver;
@@ -74,7 +74,7 @@ protected override void OnInitialize()
7474

7575

7676

77-
In the method `OnInputChanged` you will check, if the value of `Ready` changed. If it is true, send a `ReadyToWork` to the ProcessEngine.
77+
In the method `OnInputChanged` you will check, if the value of `Ready` has changed. If it is true, send a `ReadyToWork` to the ProcessEngine.
7878

7979
```cs
8080
private void OnInputChanged(object sender, InputChangedEventArgs e)
@@ -108,7 +108,7 @@ private void OnInputChanged(object sender, InputChangedEventArgs e)
108108
}
109109
```
110110

111-
In order to start an activity on the phycial cell when an activityStart is received, set `ProcessStart` to `true`.
111+
In order to start an activity on the physical cell when an activityStart is received, set `ProcessStart` to `true`.
112112
```cs
113113
public override void StartActivity(ActivityStart activityStart)
114114
{
@@ -135,7 +135,7 @@ public override void SequenceCompleted(SequenceCompleted completed)
135135
}
136136
```
137137

138-
The same applies for `ControlSystemAttched`.
138+
The same applies for `ControlSystemAttached`.
139139

140140
```cs
141141
public override IEnumerable<Session> ControlSystemAttached()
@@ -158,7 +158,7 @@ public class SimulatedColorizingDriver : SimulatedInOutDriver<bool, bool>
158158
}
159159
```
160160

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`.
162162

163163
![States of a SimulationDriver](./chapter-2/SimulationStates.png)
164164

@@ -173,7 +173,7 @@ public override void Ready(IActivity activity)
173173
}
174174
```
175175

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.
177177

178178
```cs
179179
protected override void OnOutputSet(object sender, string key)
@@ -189,7 +189,7 @@ protected override void OnOutputSet(object sender, string key)
189189
}
190190
```
191191

192-
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.
193193

194194
```cs
195195
public override void Result(SimulationResult result)

0 commit comments

Comments
 (0)