| <!DOCTYPE html>  | 
 | <!-- | 
 |  Copyright (c) 2017 - 2018 fortiss GmbH | 
 |                2018 Johannes Kepler University Linz | 
 |                2018 - 2019 Andrea Zoitl  | 
 |                2019 - Jan Holzweber | 
 |    | 
 |  This program and the accompanying materials are made available under the | 
 |  terms of the Eclipse Public License 2.0 which is available at | 
 |  http://www.eclipse.org/legal/epl-2.0. | 
 |  | 
 |  SPDX-License-Identifier: EPL-2.0 | 
 |   | 
 |  Contributors: | 
 |     Jose Cabral  | 
 |      - initial API and implementation and/or initial documentation | 
 |     Andrea Zoitl - cleaning up tutorials for 1.10 release, fixing further issues, updated ToC | 
 |     Bianca Wiesmayr - minor text corrections | 
 |     Jan Holzweber - added tutorial Step 7 | 
 | --> | 
 |  | 
 | <html lang="en"> | 
 | <head> | 
 |   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | 
 |     <title>Step 2 - Distribute 4diac Applications</title> | 
 |     <link rel="stylesheet" type="text/css" href="../help.css" /> | 
 |   </head> | 
 |   <body> | 
 |  | 
 | <!--********************************************************************************************--> | 
 |  | 
 |     <h1 id="topOfPage">Step 2 - Distribute 4diac Applications</h1> | 
 |  | 
 |     <p>This page is part of a guide that gives a walk-through over the major 4diac IDE features.</p> | 
 |  | 
 |     <ol start="0"> | 
 |       <li><a href="../../html/4diacIDE/overview.html">4diac IDE Overview</a></li> | 
 |       <li><a href="../../html/4diacIDE/use4diacLocally.html">Use 4diac Locally (Blinking tutorial)</a></li> | 
 |       <li>Distribute 4diac Applications (YOU ARE HERE!)</li> | 
 |       <li><a href="../../html/4diacIDE/use4diacRemotely.html">Deploy Applications Remotely</a></li> | 
 |       <li><a href="../../html/4diacIDE/createOwnTypes.html">Create Your own Function Block Types</a></li> | 
 |       <li><a href="../../html/4diacIDE/otherUseful.html">Other Basic Features</a></li> | 
 |       <li><a href="../../html/4diacIDE/advancedFeatures.html">Advanced Features</a></li> | 
 |       <li><a href="../../html/4diacIDE/dynamicTypeLoader.html">Deploying new FBs with the Dynamic Type Loader</a></li> | 
 |     </ol> | 
 |  | 
 |   <p>This guide extends the blinking application of <a href="../../html/4diacIDE/use4diacLocally.html" target="_blank">Step 1</a>.  | 
 |   We want to count how many times the light has turned on.  | 
 |   You will learn how to distribute a IEC 61499 Application to several devices and set up the communication between them. | 
 |   The example continues to run on the local computer.  | 
 |   The application will run on 2 devices.  | 
 |   The blinking part of the application will run on a 4diac FORTE and the count on another 4diac FORTE, see the architecture below. | 
 |   The two different programs running on the local machine emulate two PLCs. | 
 |   <br><img src="../../html/4diacIDE/img/distributedArchitecture.png" alt="architecture for the current step"/></p> | 
 |  | 
 | <!--********************************************************************************************--> | 
 |     <h2 id="extendApplication">Extend the Application</h2> | 
 |      | 
 | 	<p>To count the blinking, we need to add 2 new Function Blocks (FBs) to the existing Application in the <i>BlinkTestApp</i> Application Editor.</p>  | 
 |      | 
 |      <ol> | 
 |       <li>Drag and Drop the following FBs from the folder events of the Palette. | 
 |       <ul> | 
 |             <li>E_PERMIT </li> | 
 |             <li>E_CTU</li> | 
 |           </ul> | 
 |       </li> | 
 |       <li>Create the connections between the FBs.</li> | 
 |     </ol> | 
 |      | 
 |     <p>Remember, Event and Data connections can not be mixed.</p> | 
 |      | 
 |     <img src="../../html/4diacIDE/img/Step2/counterFBs.png" alt="architecture for the current step" /> | 
 |  | 
 |  <!--********************************************************************************************--> | 
 |     <h2 id="AddAnotherDevice">Add Another Device</h2> | 
 |      | 
 | 	<p>Change to the <i>BlinkTest</i> System Configuration Editor and add a second device from the Palette.  | 
 |     The counter will run on the new device.</p>  | 
 |  | 
 |     <ol> | 
 | 	  <li>Drag and Drop a <b>FORTE_PC</b> device next to the existing one.</li> | 
 | 	  <li>Rename the device to <b>Counter</b>.</li> | 
 |       <li>Set the localhost to 61500. The devices need to have different localhosts, they can not have the same one.</li> | 
 | 	  <li>Rename the resource to <b>Counter_RES</b>.</li> | 
 |     </ol> | 
 |      | 
 |     <img src="../../html/4diacIDE/img/Step2/addAnotherDevice.png" alt="Add another device to the system" /> | 
 |      | 
 |     <p>Change back to the <i>BlinkTestApp</i> Application Editor and map the two new FBs to the Resource <i>Counter_RES</i>. | 
 |     You can see the dashed connections between the two devices.</p> | 
 |            | 
 |     <img src="../../html/4diacIDE/img/Step2/mapToCounter.png" alt="Mapping of Function Block Instances within the Application Editor" />         | 
 |   | 
 | <!--********************************************************************************************--> | 
 |    <h2 id="SetUpCommunication">Set up the Communication Between Both Devices</h2> | 
 |          | 
 |     <p>Change to the <i>Testee.Blinky_RES</i> or <i>Counter.Counter_RES</i> Resource Editor.  | 
 |     There you can see 2 incomplete FBs at the E_SR FB or E_PERMIT.  | 
 |     They symbolize the broken connections between the two devices. | 
 |     Currently they have no opportunity to communicate with each other.  | 
 |     We fix it by adding special Communications FBs. | 
 |     You can find more information about broken connections <a href="../../html/before4DIAC/iec61499.html#brokenConnection">here on our Homepage</a>.</p>  | 
 |      | 
 |     <img src="../../html/4diacIDE/img/Step2/incompleteFBs.png" alt="incomplete FBs show die broken connection beween two devices" /> | 
 |  <!--*********************--> | 
 |      <h3 id="SetUpBlinking">Set up the Blinking Part of the Application</h3> | 
 |       | 
 |      <p>Change to the <i>Testee.Blinky_RES</i> Resource Editor.</p>  | 
 |       | 
 |      <p>Drag and Drop a <b>PUBLISH_1</b> FB from the folder net of the Palette and set up the connections. | 
 |      The PUBLISH FB must be initialized, so it is best to connect its INIT event directly to the START.</p> | 
 |       | 
 |      <img src="../../html/4diacIDE/img/Step2/blinkyResourceComplete.png" alt="Blinky_RES completely connected" /> | 
 |       | 
 |      <p>Set the QI value to 1 and the set the ID input data of the PUBLISH_COUNT FB to 239.0.0.1:61000.</p> | 
 | <!--*********************--> | 
 |      <h3 id="SetUpCounting">Set up the Counting Part of the Application</h3> | 
 |       | 
 |      <p>Change to the <i>Counter.Counter_RES</i> Resource Editor.</p> | 
 |       | 
 |      <p>Drag and Drop a <b>SUBSCRIBE_1</b> FB from the folder net of the Palette and set up the connections. | 
 |      The SUBSCRIBE FB must also be initialized.</p> | 
 |       | 
 |      <img src="../../html/4diacIDE/img/Step2/counterResourceComplete.png" alt="Counter_RES completely connected" /> | 
 |       | 
 |      <p>Set the QI value to 1 and the set the ID input data of the SUBSCRIBE_COUNT FB to 239.0.0.1:61000.</p> | 
 | <!--*********************--> | 
 |      <h3 id="BackgroundCommunicationFBs">Background of the Communication FBs</h3> | 
 |       | 
 |      <p>Here is what the last steps mean. The PUBLISH_X FB is used to send messages over the network which are received by an according SUBSCRIBE_X FB.  | 
 | 	 Every time a REQ is triggered, a message is sent according to the ID input.  | 
 | 	 With the value of the ID input you can specify what specific network protocol you would like to use (e.g., MQTT, OPC UA).  | 
 | 	 If you do not specify a dedicated protocol the default as defined in the <a href="https://www.holobloc.com/doc/ita/">"IEC 61499 Compliance Profile for Feasibility Demonstrations"</a> is used.  | 
 |      The number X in PUBLISH_X is the number of data elements that you want to send in the message.  | 
 | 	 Since we are only sending one value we used PUBLISH_1.</p>  | 
 |  | 
 |  | 
 | 	 <p>The used ID value specifies an IP:PORT pair.  | 
 | 	 The used "IEC 61499 Compliance Profile for Feasibility Demonstrations" defines that this is an UDP multi-cast address in a certain address range.  | 
 | 	 The selected 239.0.0.1 and port 61000 have nothing to do with the localhost:61499 or localhost:61500 use for configuring the devices.  | 
 | 	 The first is a UDP multi-cast address use to send messages between devices, and the latter are TCP connections for deploying applications to devices and manage them. | 
 | 	 Take care of not using the same UDP socket for different PUBLISH_X/SUBSCRIBE_X pairs.</p> | 
 | 		    | 
 | <!--********************************************************************************************--> | 
 |     <h2 id="startDevices">Start Both Devices</h2> | 
 |      | 
 |     <p>Change to the Deployment Perspective.</p>  | 
 |      | 
 |     <ol> | 
 |       <li>Set the Port to 61499 (the same as defined before, remember localhost:61499 in the System Configuration Editor?).</li> | 
 |       <li>Launch Local 4diac FORTE.</li> | 
 |       <li>You should see the location of your 4diac FORTE and the Terminate button enabled in the Console.</li> | 
 |       <li>Set the Port to 61500 (the same as defined before, remember localhost:61500 in the System Configuration?)</li> | 
 |       <li>Launch Local 4diac FORTE</li> | 
 |       <li>You should see the the location of your 4diac FORTE and the Terminate button enabled in the Console.</li> | 
 |       <li>Select the elements to deploy.  | 
 |           For this tutorial select our devices <i>Counter</i> and <i>Testee</i>.</li> | 
 |       <li>Click the <span class="button4diac">Deploy</span> button.</li> | 
 |       <li>Check that the <i>Deployment Console</i> shows some output, and that no red warning appears on the right nor left of it.  | 
 |           If you get something red, something went wrong.</li> | 
 |     </ol> | 
 |      | 
 |     <img src="../../html/4diacIDE/img/Step2/deployCounter.png" alt="deploying of the application" /> | 
 |         | 
 | <!--********************************************************************************************--> | 
 |     <h2 id="testApplication">Test it!</h2> | 
 |      | 
 |     <img src="../../html/4diacIDE/img/Step2/monitoringApp.png" alt="monitoring of the application" /> | 
 |         | 
 | <!--********************************************************************************************--> | 
 | <h1>Where to go from here?</h1> | 
 |  | 
 | <p>In the next step you will see how 4diac FORTE runs in another machine.</p> | 
 |  | 
 | <p><a href="../../html/4diacIDE/use4diacRemotely.html">Step 3 - Deploy Applications Remotely</a></p> | 
 |  | 
 | <p>If you want to go back to the original Blinking application without buttons, here's a link</p> | 
 |  | 
 | <p><a href="../../html/4diacIDE/use4diacLocally.html">Step 1 - Use 4diac Locally (Blinking Tutorial)</a></p> | 
 |  | 
 | <p>If you want to go back to the Start Here page, we leave you here a fast access</p> | 
 |  | 
 | <p><a href="../../html/startHere/startHere.html">Where to Start</a></p> | 
 |  | 
 | <p class="goToTop"><a href="#topOfPage">Go to top</a></p> | 
 |  | 
 | </body> | 
 | </html> |