From 265912bb09166beed1f2e8bc9cae739fde3a801c Mon Sep 17 00:00:00 2001 From: TaddyHC Date: Wed, 20 Sep 2023 20:58:52 -0600 Subject: [PATCH] Initial commit - PLC IDE documentation QoL updates --- .../tutorials/rtd-thermocouple-pmc/content.md | 15 ++++++++++++++- .../plc-ide/tutorials/modbus-setup/content.md | 6 ++++++ .../tutorials/plc-ide-cloud-support/content.md | 6 ++++++ .../tutorials/plc-ide-pin-mapping/content.md | 2 ++ .../assets/IdeDownloadPage.png | Bin 48828 -> 0 bytes .../assets/IdeDownloadPage.svg | 9 +++++++++ .../tutorials/plc-ide-setup-license/content.md | 8 +++++--- .../plc-programming-introduction/content.md | 9 +++++++++ 8 files changed, 51 insertions(+), 4 deletions(-) delete mode 100644 content/software/plc-ide/tutorials/plc-ide-setup-license/assets/IdeDownloadPage.png create mode 100644 content/software/plc-ide/tutorials/plc-ide-setup-license/assets/IdeDownloadPage.svg diff --git a/content/hardware/05.pro-solutions/solutions-and-kits/portenta-machine-control/tutorials/rtd-thermocouple-pmc/content.md b/content/hardware/05.pro-solutions/solutions-and-kits/portenta-machine-control/tutorials/rtd-thermocouple-pmc/content.md index 8cc492fc69..eb0bc21b55 100644 --- a/content/hardware/05.pro-solutions/solutions-and-kits/portenta-machine-control/tutorials/rtd-thermocouple-pmc/content.md +++ b/content/hardware/05.pro-solutions/solutions-and-kits/portenta-machine-control/tutorials/rtd-thermocouple-pmc/content.md @@ -21,6 +21,7 @@ software: --- ## Introduction + RTDs (Resistance Temperature Detectors) and Thermocouples are used for temperature measurement in various industrial fields. **RTDs** are sensors that change resistance in response to temperature variation. They are used regularly in industries that require precise temperature measurements, such as food processing and pharmaceuticals. On the other hand, **Thermocouples** are transducers that provide a voltage proportional to the temperature difference between two junctions. They are widely used in industrial applications such as HVAC systems, diesel engines, and power plants. @@ -30,7 +31,9 @@ Both RTDs and thermocouples have unique characteristics, which make them suitabl In this tutorial, we will use a two-wire **PT100** RTD to obtain temperature measurements. We will also briefly discuss how to connect a three-wire RTD and a thermocouple. ## Goals + The goals of this tutorial are: + - Learn about the differences between RTD and thermocouples - Learn how to connect an RTD or thermocouple to the Portenta Machine Control - Understand the operation of the Portenta Machine Control's Temperature Probe inputs @@ -38,18 +41,22 @@ The goals of this tutorial are: - Read the temperature values using the Arduino PLC IDE ## Hardware and Software Requirements + ### Hardware Requirements + - [Portenta Machine Control](https://store.arduino.cc/products/arduino-portenta-machine-control) (x1) - Micro-USB cable (x1) - PT100 RTD (x1) ### Software Requirements + - The [Arduino PLC IDE](https://www.arduino.cc/pro/software-plc-ide) (Including Arduino PLC IDE Tools) - If you have not done so, set up and activate the Portenta Machine Control license following the steps of [this tutorial](https://docs.arduino.cc/tutorials/portenta-machine-control/plc-ide-setup-license) ## Temperature Sensors ### RTD + A **Resistance Temperature Detector**, or **RTD**, is a temperature sensor that works by measuring the variation in the electrical resistance of a metallic element as a function of the temperature changes. The most commonly used metal for RTDs is platinum: one common type of RTD sensor is the PT100, where PT stands for platinum and 100 refers to the nominal resistance of the sensor at 0°C. As the temperature increases, the resistance of the metal element in the RTD increases predictably and linearly. The resistance variation can be measured using an external circuit or measuring instrument and converted into a temperature reading, using a calibration curve or formula putting into relation the resistance value with the temperature. @@ -69,6 +76,7 @@ Thermocouples are used in a wide range of applications where temperature measure Depending on the sensor you use, you will need to perform different connection settings. Find below three tables showing how to connect a two-wire RTD (PT100), a three-wire RTD (PT100) or a thermocouple. ### Two Wires RTD Connection + The 2-wire RTD configuration is the simplest of the RTD circuit designs, but is more prone to errors. | Channel 0 | Channel 1 | Channel 2 | @@ -82,6 +90,7 @@ In this tutorial, we will use a two-wire RTD, so we will configure **channel 0** ![Two Wires Connection to Channel 0](./assets/two-wire-connection.png) ### Three Wires RTD Connection + The 3-wire RTD configuration is the most commonly used RTD circuit design. In this configuration, two wires link the sensing element to the monitoring device on one side of the sensing element, and one links it on the other side. | Channel 0 | Channel 1 | Channel 2 | @@ -97,7 +106,9 @@ The 3-wire RTD configuration is the most commonly used RTD circuit design. In th ### Thermocouples Connection Connect **only non-grounded thermocouples** (grounded thermocouples are not supported). Do not connect both a thermocouple and a PT100 to a single same channel. + The thermocouples supported by the Portenta Machine Control are: + - Thermocouple Type K, non-grounded - Thermocouple Type J, non-grounded @@ -106,7 +117,6 @@ The thermocouples supported by the Portenta Machine Control are: | Connect the positive pin to TP0 | Connect the positive pin to TP1 | Connect the positive pin to TP2 | | Connect the negative pin to TN0 | Connect the negative pin to TN1 | Connect the negative pin to TN2 | - ***Do not connect any pin to GND*** ![Thermocouple Connection to Channel 0](./assets/thermocouple-connection.png) @@ -181,6 +191,7 @@ Now that we have created the variables, we have to make it work by defining the TP00 := sysTempProbes[0]; temp0:= systempProbes[0].temperature; ``` + Next, plug in your device, make sure it is connected to the Arduino PLC IDE and click the compile button to make sure there are no errors in the code. If you are not sure about how to connect your device, you can check it on [the setup tutorial](https://docs.arduino.cc/tutorials/portenta-machine-control/plc-ide-setup-license#5-connect-to-the-device). @@ -198,6 +209,7 @@ To visualize the values once we have downloaded the code into the Portenta Machi ![Watch Variables](./assets/watch-variables.gif) ## Conclusion + RTDs are best for high-accuracy temperature measurements within a narrow range of up to 600°C. Thermocouples are better for high-temperature applications up to 2300°C, fast response times, and harsh environments. RTDs are used in laboratories and industrial process control, while thermocouples are used in industrial applications like furnaces and aerospace. We have learned how to connect RTD and Thermocouple sensors to a Portenta Machine Control and how to monitor the temperature values through the Arduino PLC IDE. @@ -205,6 +217,7 @@ We have learned how to connect RTD and Thermocouple sensors to a Portenta Machin We have also learned that there are many different types of RTDs and thermocouples and that we have to choose one according to our needs. ## Next Steps + Now that we know how to use these temperature sensors, we can implement them in a real industrial or domestic environment, such as an ambient temperature monitoring project. - For more information on programming in the Arduino PLC IDE using IEC-61131-3 languages, please refer to the tutorial [Introduction to Programming with the Arduino PLC IDE](https://docs.arduino.cc/tutorials/portenta-machine-control/plc-programming-introduction) tutorial. diff --git a/content/software/plc-ide/tutorials/modbus-setup/content.md b/content/software/plc-ide/tutorials/modbus-setup/content.md index df6241ae5d..8d32320179 100644 --- a/content/software/plc-ide/tutorials/modbus-setup/content.md +++ b/content/software/plc-ide/tutorials/modbus-setup/content.md @@ -54,12 +54,15 @@ Then you can attach some functions to the Generic Modbus item, they will appear ![Modbus catalog select new item](assets/modbusCatalog-add-prompt.png) #### Mode +

* Not used * Modbus RTU Master * Modbus RTU Slave #### Baud Rate +

+ Baud rate, options: * 600 @@ -73,6 +76,7 @@ Baud rate, options: * 115200 #### Serial Mode +

| Name | Parity | data bits | stop bits | | ------- | ----------- | --------- | ----------| @@ -83,6 +87,7 @@ Baud rate, options: | O, 8, 2 | Odd parity | 8 | 2 | #### Slave Settings +

(Only available on slave mode) @@ -90,6 +95,7 @@ Baud rate, options: Address of the device: from 1 to 247. It can not be repeated within the same Modbus net. #### Modbus Node Configuration +

Once you have configured your device as a **Modbus Master** you can attach some blocks to configure it, you can see them while you have the **RS485 SerialPort** on the **Catalog Tile Window** ![Modbus catalog](assets/modBusCatalog.png) diff --git a/content/software/plc-ide/tutorials/plc-ide-cloud-support/content.md b/content/software/plc-ide/tutorials/plc-ide-cloud-support/content.md index d29bb0ad4d..547a5cc5fd 100644 --- a/content/software/plc-ide/tutorials/plc-ide-cloud-support/content.md +++ b/content/software/plc-ide/tutorials/plc-ide-cloud-support/content.md @@ -205,6 +205,7 @@ The PLC IDE configuration will play an important role in establishing successful Thus, you will learn to configure the 'Shared variables' based on the peripherals and tasks you may assign to Opta™. #### Shared Variables Configuration +

The successful communication between Opta™ configured with PLC IDE and Arduino IoT Cloud relies on the 'Shared variables'. The 'Shared variables' is defined by heading to `Resources > Opta > Shared variables`. It will then offer two additional tabs: 'Inputs' and 'Outputs'. @@ -238,6 +239,7 @@ Depending on the project's development requirements, you can add all the variabl We will now configure Opta™ device's features to link all these shared variables. #### Analog Port Configuration +

The analog port is configured using the following properties under: `Resources > Opta > Local IO Mapping > Programmable Inputs`. @@ -254,6 +256,7 @@ The 'Programmable inputs mapping' table should look as the following image: You can also change the analog resolution if needed between 12, 14, or 16 bits. #### User Programmable LED Configuration +

The user programmable LED of Opta™ is configurable under `Resources > Opta > Local IO Mapping > LED Outputs`. To use the user programmable LED, you will need to assign a variable that will represent the 'LB' row as it can be seen in the following image: @@ -262,6 +265,7 @@ The user programmable LED of Opta™ is configurable under `Resources > Opta > L In this case, the `userLed` is assigned as the variable that will represent the user programmable LED of Opta™ that emits blue light. The `userLed` is a boolean type variable as well as the `in_cloudButton`. It will be matched inside the PLC program to pass the boolean state per the command sent from the Arduino IoT Cloud dashboard. #### Library Components +

The Library section would be where you could find various pre-written codes or functions specific to PLC operations. It could include libraries for handling several industrial protocols, dealing with specific types of I/O, or even specialized functions for certain control systems. It makes the development process more efficient by providing ready-to-use codes, saving time and effort. @@ -285,6 +289,7 @@ These libraries are indexed, thus they are certified guaranteeing optimized perf ***For more information about managing libraries inside PLC IDE, please have a look at ["Library Management"](https://docs.arduino.cc/software/plc-ide/tutorials/plc-programming-introduction#library-management) section from the [Programming Introduction with Arduino PLC IDE](https://docs.arduino.cc/software/plc-ide/tutorials/plc-programming-introduction).*** #### Arduino Sketch +

We can now build the Arduino sketch that will be used to establish communication with the Arduino IoT Cloud and manage data traffic. The base sketch will be needed and can be found as discussed in the ['Setting Up the Arduino IoT Cloud'](#setting-up-the-iot-cloud) section. @@ -386,6 +391,7 @@ void onCloudButtonChange() { The `NETWORK_SSID` and `NETWORK_PASS` requires to be manually defined. Please replace these parameters to establish a connection with the desired network. Also, the parameters must be defined in between the quotation marks, replacing `NETWORK_SSID` and `NETWORK_PASS` fields. #### PLC Program +

The Arduino sketch is ready and now we need a PLC program that will control the onboard features of Opta™ and data readings. diff --git a/content/software/plc-ide/tutorials/plc-ide-pin-mapping/content.md b/content/software/plc-ide/tutorials/plc-ide-pin-mapping/content.md index c372b62c39..9ccdbee9fd 100644 --- a/content/software/plc-ide/tutorials/plc-ide-pin-mapping/content.md +++ b/content/software/plc-ide/tutorials/plc-ide-pin-mapping/content.md @@ -67,6 +67,7 @@ To create a variable for a **pin map** you have two options: ***By default they are not available as variables, in any case, you can get the values by accessing their memory registers, which is not as easy as having variables with the data.*** #### Single Variable +

Double-click the **Pin Map** that you want to edit, for example, the **Digital Output table**. @@ -85,6 +86,7 @@ digitalOut01 := 1; ``` #### Array +

Go to your project tile window, and right-click on the **Global Variable** element. diff --git a/content/software/plc-ide/tutorials/plc-ide-setup-license/assets/IdeDownloadPage.png b/content/software/plc-ide/tutorials/plc-ide-setup-license/assets/IdeDownloadPage.png deleted file mode 100644 index 710b8c57344cb01bf47f51767b1f7d47a1056aba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48828 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 diff --git a/content/software/plc-ide/tutorials/plc-ide-setup-license/assets/IdeDownloadPage.svg b/content/software/plc-ide/tutorials/plc-ide-setup-license/assets/IdeDownloadPage.svg new file mode 100644 index 0000000000..1519f08715 --- /dev/null +++ b/content/software/plc-ide/tutorials/plc-ide-setup-license/assets/IdeDownloadPage.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/content/software/plc-ide/tutorials/plc-ide-setup-license/content.md b/content/software/plc-ide/tutorials/plc-ide-setup-license/content.md index 39fb60c363..eb736b6ead 100644 --- a/content/software/plc-ide/tutorials/plc-ide-setup-license/content.md +++ b/content/software/plc-ide/tutorials/plc-ide-setup-license/content.md @@ -49,7 +49,7 @@ To get the Arduino PLC IDE software, go to the [official software website of the * Arduino PLC IDE Tools * Arduino PLC IDE -![Arduino IDE Download page](assets/IdeDownloadPage.png) +![Arduino IDE Download page](assets/IdeDownloadPage.svg) The software requires **Windows 10** or a newer operating system version for the x64 architecture. @@ -73,9 +73,9 @@ Once the installation has finished, all the required drivers, libraries, and Ard When you download the Arduino PLC IDE executable, the file naming scheme is as follows: -`Setup_Arduino PLC IDE_X.X.X.X_20230329` +`Setup_Arduino PLC IDE_X.X.X.X_{ReleaseDate}` -If you have got the correct IDE software, it should follow the previous naming scheme with the `X.X.X` that represents the version of the IDE software and its latest version release date. +If you have the correct IDE software, its name should include the version format `X.X.X.X`, with the associated release date in the `{ReleaseDate}` field. For instance, a release date might look like `20230329`. Run the Arduino PLC IDE installer after you have installed the Arduino PLC IDE Tools. If you have not installed the PLC IDE tools, please check [Arduino® PLC IDE Tools Setup section](#1-arduino-plc-ide-tools-setup) before proceeding as it needs to have the tools set before IDE software installation. @@ -134,6 +134,7 @@ Click OK to save the settings and press the connect button on **On-line > Connec If the communication is successful the main panel will show the license section to be filled in and a status indicator. #### Online Activation +

To use your product license, paste the key in the blank next to **Product Key** and press the **Activate** button. @@ -146,6 +147,7 @@ After you click the **Activate** button, the IDE will bind the license to the ha Once the product has been activated, it is recommended to get the **Hardware-ID** of your device. #### Offline Activation +

To activate the product **Offline**, deselect the "Online" slider and the scenario below will show up: diff --git a/content/software/plc-ide/tutorials/plc-programming-introduction/content.md b/content/software/plc-ide/tutorials/plc-programming-introduction/content.md index 9200df814b..893fbcfbbe 100644 --- a/content/software/plc-ide/tutorials/plc-programming-introduction/content.md +++ b/content/software/plc-ide/tutorials/plc-programming-introduction/content.md @@ -38,6 +38,7 @@ There are 2 types of variables: * Local variables: Only one program has access to it. #### Global Variable +

Click inside the **Project** tab and click the **Global_vars** section, a table is available to see the full list of global variables on your project. @@ -53,6 +54,7 @@ You will see a list with all the global variables in the **Global_vars** section ![Using a global variable inside a program](assets/usingGlobalVariable.png) #### Local Variable +

Go inside the **Project** tab and select a program by double-clicking it, once it has been opened you will see a **Local Variables** table on the top panel. ![Default Ladder Diagram Program](assets/default_LD_program.png) @@ -78,6 +80,7 @@ Once you drag and drop it on your canvas it will generate a block with some inpu Once you have your programs you can attach them to a task inside the runtime. There are 4 Tasks: + * Init: Single execution of the assigned programs, done on the initialization * Fast: Loop that executes the attached programs, every 10ms by default (it can be changed) * Slow: Loop that executes the attached programs, every 100ms, can not be changed @@ -183,6 +186,7 @@ This is how a counter program looks: ![Ladder Diagram counter program](assets/LDprogram.png) Here is a video doing that from scratch: + ### Sequential Function Chart @@ -192,6 +196,7 @@ This language approaches the script in a similar way as a flowchart, meaning you SFC language can not interact directly with the machine, meaning you can not make an output be OFF directly, to do so you will need to create **actions** #### Actions +

An action is a script in another language (i.e. structured text) that performs the work, this will get triggered depending on the chart. @@ -200,6 +205,7 @@ To create one go to your project tree, right-click the SFC script and click the ![Creating new action](assets/newAction.png) #### SFC Program +

You have blocks available by right-clicking inside the canvas or on the top bar, you can drag and drop them. @@ -213,6 +219,7 @@ The counter program should look like the following picture. Note the action insi ![Sequential Function Chart counter program](assets/SFCprogram.png) Here is a video doing that from scratch: + ### Functional Block Diagram @@ -225,6 +232,7 @@ This is how the counter program looks: ![Functional Block Diagram](assets/FBDprogram.png) Here is a video doing that from scratch: + ***In the previous programs, we used local variables, remember to select the program's specific variables to be watched, or you will not see any data*** @@ -232,6 +240,7 @@ Here is a video doing that from scratch: ## Conclusion You have: + * Created a simple counter with each language * Learned how to watch live variable's value * Attached a program to a task