{"id":1737,"date":"2023-08-16T09:17:00","date_gmt":"2023-08-16T09:17:00","guid":{"rendered":"https:\/\/joseamaita.com\/en\/?p=1737"},"modified":"2023-08-16T15:27:04","modified_gmt":"2023-08-16T15:27:04","slug":"opc-router-tutorial-backend","status":"publish","type":"post","link":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/","title":{"rendered":"OPC Router Tutorial Backend"},"content":{"rendered":"\n<p>Following the eleventh part of the <a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial\/\">OPC Router tutorial<\/a>, I&#8217;m presenting how to implement more advanced backend features for our recently created REST API. Remember, we&#8217;re configuring and running a project for \u201cPap\u00edn\u201d, a fictional potato bread factory.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Why_an_OPC_Router_tutorial_with_Backend\" >Why an OPC Router tutorial with Backend?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Considerations\" >Considerations<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Prerequisites\" >Prerequisites<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#User_Story\" >User Story<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Schematic_Diagram\" >Schematic Diagram<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Updates_to_our_REST_API_design\" >Updates to our REST API design<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Check_your_output_data_channel\" >Check your output data channel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Create_and_Test_Stored_Procedures\" >Create and Test Stored Procedures<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#sp_avg_mcurr_pln01\" >sp_avg_mcurr_pln01<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#sp_min_mtorq_pln02\" >sp_min_mtorq_pln02<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#sp_max_mspd_pln03\" >sp_max_mspd_pln03<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Exploring_Other_Calculated_Values\" >Exploring Other Calculated Values<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Creating_Resources\" >Creating Resources<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#AvgValueMCurrPln01\" >\/AvgValueMCurrPln01<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#MinValueMTorqPln02\" >\/MinValueMTorqPln02<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#MaxValueMSpdPln03\" >\/MaxValueMSpdPln03<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#OptValueMSpdPln03\" >\/OptValueMSpdPln03<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Visualize_Online_Data_in_OPC_Router\" >Visualize Online Data in OPC Router<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#Verify_Data_Transfer_to_Controller_Tags\" >Verify Data Transfer to Controller Tags<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Why_an_OPC_Router_tutorial_with_Backend\"><\/span>Why an OPC Router tutorial with Backend?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Because &#8220;learning by doing&#8221; with examples is fun. Also, this functionality can provide us with a unique use case: the power to deploy the backend for a web-enabled application in a very intuitive visual way, which is an outstanding option when we want to implement some business logic simpler and faster. See below a list of posts that complete this tutorial:<\/p>\n\n\n\n<ol class=\"wp-block-list\" id=\"block-99f9a4a2-b030-4440-aba5-a32461487c2c\"><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial\/\">Getting Started with OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-sql\/\"><\/a><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-sql\/\">Connect an OPC DA server to Microsoft SQL Server<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-mqtt\/\"><\/a><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-mqtt\/\">Connect an MQTT data source to InfluxDB Cloud<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-calculator\/\"><\/a><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-calculator\/\">Perform multiple calculations within OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-linux\/\"><\/a><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-linux\/\">Run an OPC Router application with Linux and Docker<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-simulator\/\">Build a process data simulator with Python, CSV and OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-rest\/\">Explore basic RESTful web services within OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-telegram\/\">Build a Telegram basic interaction within OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-sms\/\">Build an SMS basic interaction within OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-whatsapp\/\">Build a WhatsApp basic interaction within OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-teams\/\">Build a Teams basic interaction within OPC Router<\/a><\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-rest\/\">Explore advanced RESTful web services within OPC Router<\/a> (this post)<\/li><li><a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-portainer\/\">Run an OPC Router application with Portainer<\/a><\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Considerations\"><\/span>Considerations<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>From this point on, we must download and install <a href=\"https:\/\/www.opc-router.com\/\">OPC Router<\/a> v4.27.5016.75 or later to make this feature work appropriately. Also, <strong>OPC Router Config<\/strong> was renamed to <strong>OPC Router Management<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Prerequisites\"><\/span>Prerequisites<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Firstly, you&#8217;ll need:<\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-ee48a914-4268-4996-ba6d-3408937ce4ff\"><li>Google Chrome, Mozilla Firefox, or Microsoft Edge web browser \ud83c\udf10<\/li><li>Microsoft SQL Server database \ud83e\uddf1<\/li><li>Microsoft SQL Server Management Studio (SSMS) \ud83c\udf99\ufe0f (or equivalent application)<\/li><li>FactoryTalk Linx Gateway as OPC DA server \ud83d\udee4\ufe0f<\/li><li>ControlLogix 1756-L61 as Programmable Automation Controller (PAC) \ud83e\udd16<\/li><li>Schematic diagram \ud83d\udcdd<\/li><li><strong>OPC Router Management<\/strong> application \ud83d\udcbb<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"User_Story\"><\/span>User Story<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>We want to build a REST interface that allows us to take some calculated values from a SQL Server database, and send them back to an industrial automation controller through an OPC DA server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"block-2ead0b80-9953-4295-8048-6d090304e941\"><span class=\"ez-toc-section\" id=\"Schematic_Diagram\"><\/span>Schematic Diagram<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p id=\"block-eb69f402-081b-4755-84fa-2c1bbb340cc9\">To illustrate this new approach better, look at this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"661\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_002-1-1024x661.png\" alt=\"opc router tutorial backend 1\" class=\"wp-image-2490\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_002-1-1024x661.png 1024w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_002-1-300x194.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_002-1-768x495.png 768w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_002-1.png 1065w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Additionally, make sure to complete the previous post <a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-rest\/\">here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Updates_to_our_REST_API_design\"><\/span>Updates to our REST API design<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>At this point, add the new resources that will be exposed by this service:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>HTTP Method<\/th><th>Resource Name<\/th><th>Resource Action<\/th><\/tr><\/thead><tbody><tr><td>GET<\/td><td>\/AvgValueMCurrPln01<\/td><td>Average value of <strong>MCurr<\/strong> at PLN01.<\/td><\/tr><tr><td>GET<\/td><td>\/MinValueMTorqPln02<\/td><td>Minimum value of <strong>MTorq<\/strong> at PLN02.<\/td><\/tr><tr><td>GET<\/td><td>\/MaxValueMSpdPln03<\/td><td>Maximum value of <strong>MSpd<\/strong> at PLN03.<\/td><\/tr><tr><td>GET<\/td><td>\/OptimalValueMSpdPln03<\/td><td>Optimal value of <strong>MSpd<\/strong> at PLN03.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Check_your_output_data_channel\"><\/span>Check your output data channel<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>At this instant, make sure to check OPC topic &#8220;<strong>P_PBF19_PA01<\/strong>&#8221; for 1756-L61 controller through Factory Talk Linx Gateway OPC DA interface.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"615\" height=\"332\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/10\/img_p_17_104.png\" alt=\"opc router tutorial backend 2\" class=\"wp-image-1977\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/10\/img_p_17_104.png 615w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/10\/img_p_17_104-300x162.png 300w\" sizes=\"auto, (max-width: 615px) 100vw, 615px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>In order to check the transfer, monitor variables within &#8220;Controller Tags&#8221; tab:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"621\" height=\"153\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_034.png\" alt=\"opc router tutorial backend 3\" class=\"wp-image-2412\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_034.png 621w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_034-300x74.png 300w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"153\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_035.png\" alt=\"opc router tutorial backend 4\" class=\"wp-image-2413\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_035.png 624w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_035-300x74.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"634\" height=\"153\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_036-1.png\" alt=\"opc router tutorial backend 5\" class=\"wp-image-2418\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_036-1.png 634w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_036-1-300x72.png 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"641\" height=\"153\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_039.png\" alt=\"opc router tutorial backend 6\" class=\"wp-image-2417\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_039.png 641w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_039-300x72.png 300w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Create_and_Test_Stored_Procedures\"><\/span>Create and Test Stored Procedures<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"sp_avg_mcurr_pln01\"><\/span>sp_avg_mcurr_pln01<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>To begin with, consider saved <strong>MCurr<\/strong> values at PLN01:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"626\" height=\"242\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_014.png\" alt=\"opc router tutorial backend 7\" class=\"wp-image-2357\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_014.png 626w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_014-300x116.png 300w\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Then, the idea I propose here is for the database engine to calculate the average value of <strong>MCurr<\/strong> at PLN01:<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>AVERAGE(\n108.70000\n109.17000\n106.33000\n108.70000\n109.17000\n106.33000\n108.70000\n109.17000\n106.33000\n108.70000\n109.17000\n)<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>With this in mind, notice that you should expect an average value of 108.224545.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>AVERAGE(MCurr) = 108.224545<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, let&#8217;s create and test our first database stored procedure as &#8220;<strong>dbo.sp_avg_mcurr_pln01<\/strong>&#8220;:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"378\" height=\"422\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_020.png\" alt=\"opc router tutorial backend 8\" class=\"wp-image-2365\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_020.png 378w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_020-269x300.png 269w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Initially, run SSMS and connect to the database server.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-3 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"313\" height=\"679\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_016.png\" alt=\"opc router tutorial backend 9\" class=\"wp-image-2360\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_016.png 313w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_016-138x300.png 138w\" sizes=\"auto, (max-width: 313px) 100vw, 313px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"315\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_017.png\" alt=\"opc router tutorial backend 10\" class=\"wp-image-2361\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_017.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_017-300x198.png 300w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Press &#8220;Ctrl +N&#8221; or click the &#8220;New Query&#8221; button to start this process:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"430\" height=\"109\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_018.png\" alt=\"opc router tutorial backend 11\" class=\"wp-image-2362\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_018.png 430w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_018-300x76.png 300w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Enter the SQL code below:<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-4 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>USE &#91;papinpbf19_db]\nGO\n\nSET ANSI_NULLS ON\nGO\nSET QUOTED_IDENTIFIER ON\nGO\nCREATE PROCEDURE &#91;dbo].&#91;sp_avg_mcurr_pln01](\n@cd_location1 bigint  OUT,\n@cd_location2 bigint  OUT,\n@cd_location3 bigint  OUT,\n@cd_variable  bigint  OUT,\n@avg          DECIMAL(18,5) OUT\n)\nAS\nBEGIN\n\n    SELECT @avg = AVG(qt_value)\n      FROM pv.tb_rv_vsd_motor_i\n     WHERE (\n\t   (pv.tb_rv_vsd_motor_i.cd_location1 = @cd_location1)\n       AND (pv.tb_rv_vsd_motor_i.cd_location2 = @cd_location2)\n       AND (pv.tb_rv_vsd_motor_i.cd_location3 = @cd_location3)\n       AND (pv.tb_rv_vsd_motor_i.cd_variable = @cd_variable))\n    return @avg\nEND<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"420\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_009-2.png\" alt=\"opc router tutorial backend 12\" class=\"wp-image-2394\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_009-2.png 473w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_009-2-300x266.png 300w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Press &#8220;F5&#8221; or click the &#8220;Execute&#8221; button to run the new SQL query:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"437\" height=\"127\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_010.png\" alt=\"opc router tutorial backend 13\" class=\"wp-image-2352\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_010.png 437w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_010-300x87.png 300w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, refresh the &#8220;Stored Procedures&#8221; folder:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"396\" height=\"430\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_019.png\" alt=\"opc router tutorial backend 14\" class=\"wp-image-2363\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_019.png 396w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_019-276x300.png 276w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>After that, notice the newly created stored procedure:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"304\" height=\"578\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_011.png\" alt=\"opc router tutorial backend 15\" class=\"wp-image-2353\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_011.png 304w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_011-158x300.png 158w\" sizes=\"auto, (max-width: 304px) 100vw, 304px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Right click the stored procedure and click the &#8220;Execute Stored Procedure&#8230;&#8221; to begin the test.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"481\" height=\"619\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_012.png\" alt=\"opc router tutorial backend 16\" class=\"wp-image-2354\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_012.png 481w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_012-233x300.png 233w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Later, enter the test data and click &#8220;OK&#8221;.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"660\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_013-2.png\" alt=\"opc router tutorial backend 17\" class=\"wp-image-2395\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_013-2.png 698w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_013-2-300x284.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Lastly, watch the results window and make sure it matches the expected (rounded) value.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"465\" height=\"261\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_015-1.png\" alt=\"opc router tutorial backend 18\" class=\"wp-image-2396\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_015-1.png 465w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_015-1-300x168.png 300w\" sizes=\"auto, (max-width: 465px) 100vw, 465px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"sp_min_mtorq_pln02\"><\/span>sp_min_mtorq_pln02<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>To begin with, consider saved <strong>MTorq<\/strong> values at PLN02:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"234\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_042.png\" alt=\"opc router tutorial backend 19\" class=\"wp-image-2422\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_042.png 614w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_042-300x114.png 300w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Then, the idea I propose here is for the database engine to calculate the minimum value of <strong>MTorq<\/strong> at PLN02:<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-5 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>MINIMUM(\n361.78000\n362.25000\n359.97000\n350.12000\n361.78000\n362.25000\n359.97000\n361.78000\n362.25000\n359.97000\n361.78000\n)<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>With this in mind, notice that you should expect a minimum value of 350.12000.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>MINIMUM(MTorq) = 350.12000<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, let&#8217;s create and test our second database stored procedure as &#8220;<strong>dbo.sp_min_mtorq_pln02<\/strong>&#8220;:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"384\" height=\"421\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_043.png\" alt=\"opc router tutorial backend 20\" class=\"wp-image-2423\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_043.png 384w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_043-274x300.png 274w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Enter and run the SQL code below:<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>USE &#91;papinpbf19_db]\nGO\n\nSET ANSI_NULLS ON\nGO\nSET QUOTED_IDENTIFIER ON\nGO\nCREATE PROCEDURE &#91;dbo].&#91;sp_min_mtorq_pln02](\n@cd_location1 bigint  OUT,\n@cd_location2 bigint  OUT,\n@cd_location3 bigint  OUT,\n@cd_variable  bigint  OUT,\n@min          DECIMAL(18,5) OUT\n)\nAS\nBEGIN\n\n    SELECT @min = MIN(qt_value)\n      FROM pv.tb_rv_vsd_motor_t\n     WHERE (\n\t   (pv.tb_rv_vsd_motor_t.cd_location1 = @cd_location1)\n       AND (pv.tb_rv_vsd_motor_t.cd_location2 = @cd_location2)\n       AND (pv.tb_rv_vsd_motor_t.cd_location3 = @cd_location3)\n       AND (pv.tb_rv_vsd_motor_t.cd_variable = @cd_variable))\n    return @min\nEND<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"453\" height=\"421\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_044.png\" alt=\"opc router tutorial backend 21\" class=\"wp-image-2424\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_044.png 453w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_044-300x279.png 300w\" sizes=\"auto, (max-width: 453px) 100vw, 453px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Later, enter the test data for the procedure and click &#8220;OK&#8221;.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"660\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_045.png\" alt=\"opc router tutorial backend 22\" class=\"wp-image-2425\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_045.png 698w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_045-300x284.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Lastly, watch the results window and make sure it matches the expected value.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"456\" height=\"264\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_046.png\" alt=\"opc router tutorial backend 23\" class=\"wp-image-2426\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_046.png 456w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_046-300x174.png 300w\" sizes=\"auto, (max-width: 456px) 100vw, 456px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"block-e11611b6-0442-4e23-944d-72166685f6b4\"><span class=\"ez-toc-section\" id=\"sp_max_mspd_pln03\"><\/span>sp_max_mspd_pln03<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-c137b439-8d45-4c8f-bcd2-e7bd7996e7a5\"><li>To begin with, consider saved <strong>MSpd<\/strong> values at PLN03:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\" id=\"block-9fa65b05-33f9-4e9f-8c51-b64b0b57aa02\"><img loading=\"lazy\" decoding=\"async\" width=\"619\" height=\"242\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_047.png\" alt=\"opc router tutorial backend 24\" class=\"wp-image-2430\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_047.png 619w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_047-300x117.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-63e00ca9-2ab4-4ee4-a789-b999619ea4e2\"><li>Then, the idea I propose here is for the database engine to calculate the maximum value of <strong>MSpd<\/strong> at PLN03:<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>MAXIMUM(\n705.68000\n700.15000\n703.77000\n705.68000\n700.15000\n703.77000\n707.08000\n705.68000\n700.15000\n703.77000\n)<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-14b7815c-3c9f-4413-beea-dca45baaaf6b\"><li>With this in mind, notice that you should expect a maximum value of 707.08000.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>MAXIMUM(MSpd) = 707.08000<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-4337f98f-7308-4cfc-bc8a-df3908a22ae8\"><li>At this point, let&#8217;s create and test our third database stored procedure as &#8220;<strong>dbo.sp_max_mspd_pln03<\/strong>&#8220;:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\" id=\"block-d5337b4e-a884-414b-a012-eecc4cbe044f\"><img loading=\"lazy\" decoding=\"async\" width=\"386\" height=\"425\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_048.png\" alt=\"opc router tutorial backend 25\" class=\"wp-image-2429\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_048.png 386w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_048-272x300.png 272w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-4e56cc9d-c697-4721-8792-81d7bf3717ee\"><li>Enter and run the SQL code below:<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-10 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>USE &#91;papinpbf19_db]\nGO\n\nSET ANSI_NULLS ON\nGO\nSET QUOTED_IDENTIFIER ON\nGO\nCREATE PROCEDURE &#91;dbo].&#91;sp_max_mspd_pln03](\n@cd_location1 bigint  OUT,\n@cd_location2 bigint  OUT,\n@cd_location3 bigint  OUT,\n@cd_variable  bigint  OUT,\n@max          DECIMAL(18,5) OUT\n)\nAS\nBEGIN\n\n    SELECT @max = MAX(qt_value)\n      FROM pv.tb_rv_vsd_motor_s\n     WHERE (\n\t   (pv.tb_rv_vsd_motor_s.cd_location1 = @cd_location1)\n       AND (pv.tb_rv_vsd_motor_s.cd_location2 = @cd_location2)\n       AND (pv.tb_rv_vsd_motor_s.cd_location3 = @cd_location3)\n       AND (pv.tb_rv_vsd_motor_s.cd_variable = @cd_variable))\n    return @max\nEND<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-full\" id=\"block-18f83ce3-bbb2-461e-98a9-3211a42d027f\"><img loading=\"lazy\" decoding=\"async\" width=\"456\" height=\"420\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_049.png\" alt=\"opc router tutorial backend 26\" class=\"wp-image-2431\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_049.png 456w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_049-300x276.png 300w\" sizes=\"auto, (max-width: 456px) 100vw, 456px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-231ce17f-9c7b-4454-a686-3ea10ac67fa9\"><li>Later, enter the test data for the procedure and click &#8220;OK&#8221;.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\" id=\"block-9b26d16d-7c96-4c54-af7a-bd256d16df11\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"661\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_050.png\" alt=\"opc router tutorial backend 27\" class=\"wp-image-2432\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_050.png 698w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_050-300x284.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-21f2e934-34a0-4023-99c3-3c571ad6e894\"><li>Lastly, watch the results window and make sure it matches the expected value.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\" id=\"block-93f375c9-c126-498c-b9e2-a099e30a9a20\"><img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"264\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_051.png\" alt=\"opc router tutorial backend 28\" class=\"wp-image-2433\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_051.png 464w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_051-300x171.png 300w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Exploring_Other_Calculated_Values\"><\/span>Exploring Other Calculated Values<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-c137b439-8d45-4c8f-bcd2-e7bd7996e7a5\"><li>In this case, suppose you have these calculated <strong>MCurr, MTorq and MSpd<\/strong> values by a third-party algorithm within the &#8220;tb_cv_optimal_value&#8221; database table.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\" id=\"block-9fa65b05-33f9-4e9f-8c51-b64b0b57aa02\"><img loading=\"lazy\" decoding=\"async\" width=\"971\" height=\"225\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_078.png\" alt=\"opc router tutorial backend 29\" class=\"wp-image-2466\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_078.png 971w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_078-300x70.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_078-768x178.png 768w\" sizes=\"auto, (max-width: 971px) 100vw, 971px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-63e00ca9-2ab4-4ee4-a789-b999619ea4e2\"><li>The idea I propose here is for OPC Router to select the most recent optimal value of <strong>MSpd<\/strong> at PLN03, but without the use of any stored procedure.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"110\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_079.png\" alt=\"opc router tutorial backend 30\" class=\"wp-image-2467\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_079.png 575w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_079-300x57.png 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-14b7815c-3c9f-4413-beea-dca45baaaf6b\"><li>With this in mind, notice that you should expect an optimal value of 639.00000.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-11 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>LAST_OPT(MSpd) = 639.00000<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creating_Resources\"><\/span>Creating Resources<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"AvgValueMCurrPln01\"><\/span>\/AvgValueMCurrPln01<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>At this time, let&#8217;s create the resource to return the average value of <strong>MCurr<\/strong> at PLN01 as &#8220;<strong>GET AvgValueMCurrPln01<\/strong>&#8220;:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"313\" height=\"431\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_021.png\" alt=\"opc router tutorial backend 31\" class=\"wp-image-2366\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_021.png 313w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_021-218x300.png 218w\" sizes=\"auto, (max-width: 313px) 100vw, 313px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Then, drag and drop these five blocks as shown here:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"277\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_030.png\" alt=\"opc router tutorial backend 32\" class=\"wp-image-2398\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_030.png 607w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_030-300x137.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>After that, edit the REST trigger block to include the new URL endpoint and the JSON response format:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"651\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_022.png\" alt=\"opc router tutorial backend 33\" class=\"wp-image-2368\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_022.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_022-220x300.png 220w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"252\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_023.png\" alt=\"\" class=\"wp-image-2369\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_023.png 447w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_023-300x169.png 300w\" sizes=\"auto, (max-width: 447px) 100vw, 447px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, edit the &#8220;Constant Values&#8221; block with a fixed location at PLN01 and the appropriate variable code:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"584\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_108.png\" alt=\"\" class=\"wp-image-1653\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_108.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_108-245x300.png 245w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"184\" height=\"134\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_109.png\" alt=\"\" class=\"wp-image-1654\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Furthermore, edit the Database block and make sure it looks like this:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"785\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_024-1.png\" alt=\"\" class=\"wp-image-2400\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_024-1.png 643w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_024-1-246x300.png 246w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"285\" height=\"237\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_025-2.png\" alt=\"\" class=\"wp-image-2402\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Also, edit the JSON Write block:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"797\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png\" alt=\"\" class=\"wp-image-1661\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png 674w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114-254x300.png 254w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"130\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_115.png\" alt=\"\" class=\"wp-image-1662\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Finally, edit the OPC Data Access block with the specific controller tag:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"606\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_031.png\" alt=\"\" class=\"wp-image-2403\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_031.png 573w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_031-284x300.png 284w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"356\" height=\"120\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_032.png\" alt=\"\" class=\"wp-image-2404\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_032.png 356w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_032-300x101.png 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Then, make sure all transfer objects look like these:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"541\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_026-1.png\" alt=\"\" class=\"wp-image-2405\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_026-1.png 920w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_026-1-300x176.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_026-1-768x452.png 768w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, make sure to link blocks as shown here to complete the resource:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"911\" height=\"565\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_027-1.png\" alt=\"\" class=\"wp-image-2406\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_027-1.png 911w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_027-1-300x186.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_027-1-768x476.png 768w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"541\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_028-1.png\" alt=\"\" class=\"wp-image-2407\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_028-1.png 904w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_028-1-300x180.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_028-1-768x460.png 768w\" sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, repeat the section &#8220;<a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-rest\/#Compile_Save_and_Publish_your_OPC_Router_Project_Configuration_with_REST\">Compile, Save and Publish your OPC Router Tutorial Project Configuration with REST<\/a>&#8221; to apply changes.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"353\" height=\"1003\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_029.png\" alt=\"\" class=\"wp-image-2379\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_029.png 353w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/01\/img_p_15_029-106x300.png 106w\" sizes=\"auto, (max-width: 353px) 100vw, 353px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, test the API with Swagger.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"839\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_033-1.png\" alt=\"\" class=\"wp-image-2410\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_033-1.png 683w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_033-1-244x300.png 244w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"700\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_040.png\" alt=\"\" class=\"wp-image-2419\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_040.png 843w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_040-300x249.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_040-768x638.png 768w\" sizes=\"auto, (max-width: 843px) 100vw, 843px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"MinValueMTorqPln02\"><\/span>\/MinValueMTorqPln02<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>At this time, let&#8217;s create the resource to return the minimum value of <strong>MTorq<\/strong> at PLN02 as &#8220;<strong>GET MinValueMTorqPln02<\/strong>&#8220;. Just copy, paste and rename from the &#8220;GET AvgValueMCurrPln01&#8221; connection.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"347\" height=\"449\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_052.png\" alt=\"\" class=\"wp-image-2437\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_052.png 347w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_052-232x300.png 232w\" sizes=\"auto, (max-width: 347px) 100vw, 347px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>After that, edit the REST trigger block to include the new URL endpoint and the JSON response format:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"652\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_053.png\" alt=\"\" class=\"wp-image-2438\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_053.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_053-219x300.png 219w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, edit the &#8220;Constant Values&#8221; block with a fixed location for PLN02 and the appropriate variable code:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"584\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_054.png\" alt=\"\" class=\"wp-image-2439\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_054.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_054-245x300.png 245w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Furthermore, edit the Database block and make sure it looks like this:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"644\" height=\"786\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_055-1.png\" alt=\"\" class=\"wp-image-2441\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_055-1.png 644w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_055-1-246x300.png 246w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Also, keep the JSON Write block:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"797\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png\" alt=\"\" class=\"wp-image-1661\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png 674w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114-254x300.png 254w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Finally, edit the OPC Data Access block with the specific controller tag:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"574\" height=\"607\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_056.png\" alt=\"\" class=\"wp-image-2442\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_056.png 574w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_056-284x300.png 284w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, make sure to link blocks as shown here to complete the resource:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"911\" height=\"541\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_057.png\" alt=\"\" class=\"wp-image-2443\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_057.png 911w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_057-300x178.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_057-768x456.png 768w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"908\" height=\"542\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_058.png\" alt=\"\" class=\"wp-image-2444\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_058.png 908w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_058-300x179.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_058-768x458.png 768w\" sizes=\"auto, (max-width: 908px) 100vw, 908px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, repeat the section &#8220;<a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-rest\/#Compile_Save_and_Publish_your_OPC_Router_Project_Configuration_with_REST\">Compile, Save and Publish your OPC Router Tutorial Project Configuration with REST<\/a>&#8221; to apply changes.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"362\" height=\"1000\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_059.png\" alt=\"\" class=\"wp-image-2445\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_059.png 362w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_059-109x300.png 109w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, test the API with Swagger.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"644\" height=\"935\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_060.png\" alt=\"\" class=\"wp-image-2447\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_060.png 644w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_060-207x300.png 207w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"695\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_061.png\" alt=\"\" class=\"wp-image-2448\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_061.png 845w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_061-300x247.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_061-768x632.png 768w\" sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"MaxValueMSpdPln03\"><\/span>\/MaxValueMSpdPln03<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>At this time, let&#8217;s create the resource to return the maximum value of <strong>MSpd<\/strong> at PLN03 as &#8220;<strong>GET MaxValueMSpdPln03<\/strong>&#8220;. Just copy, paste and rename from the &#8220;GET MinValueMTorqPln02&#8221; connection.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"335\" height=\"468\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_066.png\" alt=\"\" class=\"wp-image-2454\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_066.png 335w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_066-215x300.png 215w\" sizes=\"auto, (max-width: 335px) 100vw, 335px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>After that, edit the REST trigger block to include the new URL endpoint and the JSON response format:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"651\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_067.png\" alt=\"\" class=\"wp-image-2455\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_067.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_067-220x300.png 220w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, edit the &#8220;Constant Values&#8221; block with a fixed location for PLN03 and the appropriate variable code:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"584\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_068.png\" alt=\"\" class=\"wp-image-2456\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_068.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_068-245x300.png 245w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Furthermore, edit the Database block and make sure it looks like this:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"785\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_069.png\" alt=\"\" class=\"wp-image-2457\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_069.png 643w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_069-246x300.png 246w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Also, keep the JSON Write block:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"797\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png\" alt=\"\" class=\"wp-image-1661\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png 674w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114-254x300.png 254w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Finally, edit the OPC Data Access block with the specific controller tag:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"606\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_070.png\" alt=\"\" class=\"wp-image-2458\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_070.png 573w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_070-284x300.png 284w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, make sure to link blocks as shown here to complete the resource:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"903\" height=\"538\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_071.png\" alt=\"\" class=\"wp-image-2459\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_071.png 903w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_071-300x179.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_071-768x458.png 768w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"535\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_072.png\" alt=\"\" class=\"wp-image-2460\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_072.png 900w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_072-300x178.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_072-768x457.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, repeat the section &#8220;<a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-rest\/#Compile_Save_and_Publish_your_OPC_Router_Project_Configuration_with_REST\">Compile, Save and Publish your OPC Router Tutorial Project Configuration with REST<\/a>&#8221; to apply changes.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"353\" height=\"1000\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_073.png\" alt=\"\" class=\"wp-image-2461\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_073.png 353w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_073-106x300.png 106w\" sizes=\"auto, (max-width: 353px) 100vw, 353px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, test the API with Swagger.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"641\" height=\"939\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_074.png\" alt=\"\" class=\"wp-image-2462\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_074.png 641w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_074-205x300.png 205w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"697\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_075.png\" alt=\"\" class=\"wp-image-2463\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_075.png 843w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_075-300x248.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_075-768x635.png 768w\" sizes=\"auto, (max-width: 843px) 100vw, 843px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"OptValueMSpdPln03\"><\/span>\/OptValueMSpdPln03<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>At this time, let&#8217;s create the resource to return the optimal value of <strong>MSpd<\/strong> at PLN03 as &#8220;<strong>GET OptValueMSpdPln03<\/strong>&#8220;. Just copy, paste and rename from the &#8220;GET MaxValueMSpdPln03&#8221; connection.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"488\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_080.png\" alt=\"\" class=\"wp-image-2470\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_080.png 330w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_080-203x300.png 203w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>After that, edit the REST trigger block to include the new URL endpoint and the JSON response format:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"651\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_081.png\" alt=\"\" class=\"wp-image-2471\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_081.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_081-220x300.png 220w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, edit the &#8220;Constant Values&#8221; block with a fixed location for PLN03:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"584\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_085.png\" alt=\"\" class=\"wp-image-2472\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_085.png 477w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_085-245x300.png 245w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Furthermore, edit the Database block so as to use a SELECT command instead of a stored procedure:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"785\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_082.png\" alt=\"\" class=\"wp-image-2473\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_082.png 643w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_082-246x300.png 246w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"785\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_083.png\" alt=\"\" class=\"wp-image-2474\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_083.png 643w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_083-246x300.png 246w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"785\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_084.png\" alt=\"\" class=\"wp-image-2475\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_084.png 643w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_084-246x300.png 246w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Also, keep the JSON Write block:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"797\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png\" alt=\"\" class=\"wp-image-1661\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114.png 674w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_13_114-254x300.png 254w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Finally, edit the OPC Data Access block with the specific controller tag:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"606\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_086.png\" alt=\"\" class=\"wp-image-2476\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_086.png 573w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_086-284x300.png 284w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, make sure to link blocks as shown here to complete the resource:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"543\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_087.png\" alt=\"\" class=\"wp-image-2477\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_087.png 902w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_087-300x181.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_087-768x462.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"542\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_088.png\" alt=\"\" class=\"wp-image-2478\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_088.png 904w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_088-300x180.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_088-768x460.png 768w\" sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Following this, repeat the section &#8220;<a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-rest\/#Compile_Save_and_Publish_your_OPC_Router_Project_Configuration_with_REST\">Compile, Save and Publish your OPC Router Tutorial Project Configuration with REST<\/a>&#8221; to apply changes.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"345\" height=\"1000\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_089.png\" alt=\"\" class=\"wp-image-2479\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_089.png 345w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_089-104x300.png 104w\" sizes=\"auto, (max-width: 345px) 100vw, 345px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, test the API with Swagger.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"938\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_090.png\" alt=\"\" class=\"wp-image-2481\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_090.png 660w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_090-211x300.png 211w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"701\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_091.png\" alt=\"\" class=\"wp-image-2482\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_091.png 840w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_091-300x250.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_091-768x641.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Visualize_Online_Data_in_OPC_Router\"><\/span>Visualize Online Data in OPC Router<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Also, you can watch live values here:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"898\" height=\"535\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_063.png\" alt=\"\" class=\"wp-image-2451\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_063.png 898w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_063-300x179.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_063-768x458.png 768w\" sizes=\"auto, (max-width: 898px) 100vw, 898px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"535\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_064.png\" alt=\"\" class=\"wp-image-2452\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_064.png 904w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_064-300x178.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_064-768x455.png 768w\" sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"535\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_076.png\" alt=\"\" class=\"wp-image-2464\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_076.png 902w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_076-300x178.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_076-768x456.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"541\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_092.png\" alt=\"\" class=\"wp-image-2484\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_092.png 902w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_092-300x180.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_092-768x461.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>At this point, you should notice an execution time visually:<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"325\" height=\"206\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_065.png\" alt=\"\" class=\"wp-image-2453\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_065.png 325w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_065-300x190.png 300w\" sizes=\"auto, (max-width: 325px) 100vw, 325px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verify_Data_Transfer_to_Controller_Tags\"><\/span>Verify Data Transfer to Controller Tags<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Finally, watch how the OPC Router tutorial allows us to implement a light backend for a web-enabled application by sending calculated values from a SQL Server database to an industrial automation controller.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"457\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_094.png\" alt=\"\" class=\"wp-image-2488\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_094.png 842w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_094-300x163.png 300w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_094-768x417.png 768w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Firstly, watch the calculated average value of <strong>MCurr<\/strong> at PLN01 transferred to the controller.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"638\" height=\"153\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_041.png\" alt=\"\" class=\"wp-image-2420\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_041.png 638w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_041-300x72.png 300w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Then, watch the calculated minimum value of <strong>MTorq<\/strong> at PLN02 transferred to the controller.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"635\" height=\"153\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_062.png\" alt=\"\" class=\"wp-image-2450\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_062.png 635w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_062-300x72.png 300w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>After that, watch the calculated maximum value of <strong>MSpd<\/strong> at PLN03 transferred to the controller.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"628\" height=\"154\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_077.png\" alt=\"\" class=\"wp-image-2465\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_077.png 628w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_077-300x74.png 300w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Finally, watch the calculated optimal value of <strong>MSpd<\/strong> at PLN03 transferred to the controller.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"153\" src=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_093.png\" alt=\"\" class=\"wp-image-2485\" srcset=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_093.png 624w, https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2023\/03\/img_p_15_093-300x74.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>Did you enjoy this OPC Router tutorial with Backend? I&#8217;d love to hear from you.<\/p>\n\n\n\n<p>Stay tuned and follow part 13 of this tutorial! \ud83d\ude0e<\/p>\n\n\n\n<p>For other articles like this one in English, click <a href=\"https:\/\/joseamaita.com\/en\/blog\/\">here<\/a>. To see them in Spanish, click <a href=\"https:\/\/joseamaita.com\/blog\/\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Following the eleventh part of the OPC Router tutorial, I&#8217;m presenting how to implement more advanced backend features for our recently created REST API. Remember, we&#8217;re configuring and running a project for \u201cPap\u00edn\u201d, a fictional potato bread factory. Why an OPC Router tutorial with Backend? Because &#8220;learning by doing&#8221; with examples is fun. Also, this&hellip;&nbsp;<a href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">OPC Router Tutorial Backend<\/span><\/a><\/p>\n<div class='heateor_sss_sharing_container heateor_sss_vertical_sharing heateor_sss_bottom_sharing' style='width:44px;left: -10px;top: 100px;-webkit-box-shadow:none;box-shadow:none;' data-heateor-sss-href='https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/posts\/1737'><div class=\"heateor_sss_sharing_ul\"><a aria-label=\"Facebook\" class=\"heateor_sss_facebook\" href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fjoseamaita.com%2Fen%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1737\" title=\"Facebook\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg\" style=\"background-color:#0765FE;width:40px;height:40px;margin:0;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\"><path fill=\"#fff\" d=\"M28 16c0-6.627-5.373-12-12-12S4 9.373 4 16c0 5.628 3.875 10.35 9.101 11.647v-7.98h-2.474V16H13.1v-1.58c0-4.085 1.849-5.978 5.859-5.978.76 0 2.072.15 2.608.298v3.325c-.283-.03-.775-.045-1.386-.045-1.967 0-2.728.745-2.728 2.683V16h3.92l-.673 3.667h-3.247v8.245C23.395 27.195 28 22.135 28 16Z\"><\/path><\/svg><\/span><\/a><a aria-label=\"Twitter\" class=\"heateor_sss_button_twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?text=joseamaita.com%20-%20The%20place%20where%20I%20make%20things%20happen.&url=https%3A%2F%2Fjoseamaita.com%2Fen%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1737\" title=\"Twitter\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_twitter\" style=\"background-color:#55acee;width:40px;height:40px;margin:0;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"-4 -4 39 39\"><path d=\"M28 8.557a9.913 9.913 0 0 1-2.828.775 4.93 4.93 0 0 0 2.166-2.725 9.738 9.738 0 0 1-3.13 1.194 4.92 4.92 0 0 0-3.593-1.55 4.924 4.924 0 0 0-4.794 6.049c-4.09-.21-7.72-2.17-10.15-5.15a4.942 4.942 0 0 0-.665 2.477c0 1.71.87 3.214 2.19 4.1a4.968 4.968 0 0 1-2.23-.616v.06c0 2.39 1.7 4.38 3.952 4.83-.414.115-.85.174-1.297.174-.318 0-.626-.03-.928-.086a4.935 4.935 0 0 0 4.6 3.42 9.893 9.893 0 0 1-6.114 2.107c-.398 0-.79-.023-1.175-.068a13.953 13.953 0 0 0 7.55 2.213c9.056 0 14.01-7.507 14.01-14.013 0-.213-.005-.426-.015-.637.96-.695 1.795-1.56 2.455-2.55z\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><a aria-label=\"Linkedin\" class=\"heateor_sss_button_linkedin\" href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fjoseamaita.com%2Fen%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1737\" title=\"Linkedin\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_linkedin\" style=\"background-color:#0077b5;width:40px;height:40px;margin:0;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\"><path d=\"M6.227 12.61h4.19v13.48h-4.19V12.61zm2.095-6.7a2.43 2.43 0 0 1 0 4.86c-1.344 0-2.428-1.09-2.428-2.43s1.084-2.43 2.428-2.43m4.72 6.7h4.02v1.84h.058c.56-1.058 1.927-2.176 3.965-2.176 4.238 0 5.02 2.792 5.02 6.42v7.395h-4.183v-6.56c0-1.564-.03-3.574-2.178-3.574-2.18 0-2.514 1.7-2.514 3.46v6.668h-4.187V12.61z\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><a aria-label=\"Whatsapp\" class=\"heateor_sss_whatsapp\" href=\"https:\/\/api.whatsapp.com\/send?text=joseamaita.com%20-%20The%20place%20where%20I%20make%20things%20happen.%20https%3A%2F%2Fjoseamaita.com%2Fen%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1737\" title=\"Whatsapp\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg\" style=\"background-color:#55eb4c;width:40px;height:40px;margin:0;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"-6 -5 40 40\"><path class=\"heateor_sss_svg_stroke heateor_sss_no_fill\" stroke=\"#fff\" stroke-width=\"2\" fill=\"none\" d=\"M 11.579798566743314 24.396926207859085 A 10 10 0 1 0 6.808479557110079 20.73576436351046\"><\/path><path d=\"M 7 19 l -1 6 l 6 -1\" class=\"heateor_sss_no_fill heateor_sss_svg_stroke\" stroke=\"#fff\" stroke-width=\"2\" fill=\"none\"><\/path><path d=\"M 10 10 q -1 8 8 11 c 5 -1 0 -6 -1 -3 q -4 -3 -5 -5 c 4 -2 -1 -5 -1 -4\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><a aria-label=\"Telegram\" class=\"heateor_sss_button_telegram\" href=\"https:\/\/telegram.me\/share\/url?url=https%3A%2F%2Fjoseamaita.com%2Fen%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1737&text=joseamaita.com%20-%20The%20place%20where%20I%20make%20things%20happen.\" title=\"Telegram\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_telegram\" style=\"background-color:#3da5f1;width:40px;height:40px;margin:0;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\"><path fill=\"#fff\" d=\"M25.515 6.896L6.027 14.41c-1.33.534-1.322 1.276-.243 1.606l5 1.56 1.72 5.66c.226.625.115.873.77.873.506 0 .73-.235 1.012-.51l2.43-2.363 5.056 3.734c.93.514 1.602.25 1.834-.863l3.32-15.638c.338-1.363-.52-1.98-1.41-1.577z\"><\/path><\/svg><\/span><\/a><a aria-label=\"Reddit\" class=\"heateor_sss_button_reddit\" href=\"https:\/\/reddit.com\/submit?url=https%3A%2F%2Fjoseamaita.com%2Fen%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1737&title=joseamaita.com%20-%20The%20place%20where%20I%20make%20things%20happen.\" title=\"Reddit\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_reddit\" style=\"background-color:#ff5700;width:40px;height:40px;margin:0;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"-3.5 -3.5 39 39\"><path d=\"M28.543 15.774a2.953 2.953 0 0 0-2.951-2.949 2.882 2.882 0 0 0-1.9.713 14.075 14.075 0 0 0-6.85-2.044l1.38-4.349 3.768.884a2.452 2.452 0 1 0 .24-1.176l-4.274-1a.6.6 0 0 0-.709.4l-1.659 5.224a14.314 14.314 0 0 0-7.316 2.029 2.908 2.908 0 0 0-1.872-.681 2.942 2.942 0 0 0-1.618 5.4 5.109 5.109 0 0 0-.062.765c0 4.158 5.037 7.541 11.229 7.541s11.22-3.383 11.22-7.541a5.2 5.2 0 0 0-.053-.706 2.963 2.963 0 0 0 1.427-2.51zm-18.008 1.88a1.753 1.753 0 0 1 1.73-1.74 1.73 1.73 0 0 1 1.709 1.74 1.709 1.709 0 0 1-1.709 1.711 1.733 1.733 0 0 1-1.73-1.711zm9.565 4.968a5.573 5.573 0 0 1-4.081 1.272h-.032a5.576 5.576 0 0 1-4.087-1.272.6.6 0 0 1 .844-.854 4.5 4.5 0 0 0 3.238.927h.032a4.5 4.5 0 0 0 3.237-.927.6.6 0 1 1 .844.854zm-.331-3.256a1.726 1.726 0 1 1 1.709-1.712 1.717 1.717 0 0 1-1.712 1.712z\" fill=\"#fff\"\/><\/svg><\/span><\/a><a class=\"heateor_sss_more\" aria-label=\"More\" title=\"More\" rel=\"nofollow noopener\" style=\"font-size: 32px!important;border:0;box-shadow:none;display:inline-block!important;font-size:16px;padding:0 4px;vertical-align: middle;display:inline;\" href=\"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/posts\/1737\" onclick=\"event.preventDefault()\"><span class=\"heateor_sss_svg\" style=\"background-color:#ee8e2d;width:40px;height:40px;margin:0;display:inline-block!important;opacity:1;float:left;font-size:32px!important;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;display:inline;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box;\" onclick=\"heateorSssMoreSharingPopup(this, 'https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/posts\/1737', 'joseamaita.com%20-%20The%20place%20where%20I%20make%20things%20happen.', '' )\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" viewBox=\"-.3 0 32 32\" version=\"1.1\" width=\"100%\" height=\"100%\" style=\"display:block;\" xml:space=\"preserve\"><g><path fill=\"#fff\" d=\"M18 14V8h-4v6H8v4h6v6h4v-6h6v-4h-6z\" fill-rule=\"evenodd\"><\/path><\/g><\/svg><\/span><\/a><\/div><div class=\"heateorSssClear\"><\/div><\/div>","protected":false},"author":1,"featured_media":1740,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[42,55,17,5,3,22,41],"tags":[43,56,24,25,23,44,28],"class_list":["post-1737","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-api","category-backend","category-data-transfer","category-english","category-industrial-automation","category-opc-router","category-rest","tag-api","tag-backend","tag-data-transfer","tag-industrial-automation","tag-opc-router","tag-rest","tag-sql-server"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OPC Router Tutorial Backend - joseamaita.com<\/title>\n<meta name=\"description\" content=\"Following the eleventh part of the OPC Router tutorial, I&#039;m presenting more advanced backend features for our recently created REST API.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OPC Router Tutorial Backend - joseamaita.com\" \/>\n<meta property=\"og:description\" content=\"Following the eleventh part of the OPC Router tutorial, I&#039;m presenting more advanced backend features for our recently created REST API.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\" \/>\n<meta property=\"og:site_name\" content=\"joseamaita.com\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-16T09:17:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-16T15:27:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png\" \/>\n\t<meta property=\"og:image:width\" content=\"335\" \/>\n\t<meta property=\"og:image:height\" content=\"367\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jos\u00e9 Alberto Maita\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jos\u00e9 Alberto Maita\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\"},\"author\":{\"name\":\"Jos\u00e9 Alberto Maita\",\"@id\":\"https:\/\/joseamaita.com\/en\/#\/schema\/person\/b53d49d3ddf8f348fed0d484b541b1a4\"},\"headline\":\"OPC Router Tutorial Backend\",\"datePublished\":\"2023-08-16T09:17:00+00:00\",\"dateModified\":\"2023-08-16T15:27:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\"},\"wordCount\":1593,\"image\":{\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png\",\"keywords\":[\"API\",\"Backend\",\"Data Transfer\",\"Industrial Automation\",\"OPC Router\",\"REST\",\"SQL Server\"],\"articleSection\":[\"API\",\"Backend\",\"Data Transfer\",\"English\",\"Industrial Automation\",\"OPC Router\",\"REST\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\",\"url\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\",\"name\":\"OPC Router Tutorial Backend - joseamaita.com\",\"isPartOf\":{\"@id\":\"https:\/\/joseamaita.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png\",\"datePublished\":\"2023-08-16T09:17:00+00:00\",\"dateModified\":\"2023-08-16T15:27:04+00:00\",\"author\":{\"@id\":\"https:\/\/joseamaita.com\/en\/#\/schema\/person\/b53d49d3ddf8f348fed0d484b541b1a4\"},\"description\":\"Following the eleventh part of the OPC Router tutorial, I'm presenting more advanced backend features for our recently created REST API.\",\"breadcrumb\":{\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage\",\"url\":\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png\",\"contentUrl\":\"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png\",\"width\":335,\"height\":367},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/joseamaita.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OPC Router Tutorial Backend\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/joseamaita.com\/en\/#website\",\"url\":\"https:\/\/joseamaita.com\/en\/\",\"name\":\"joseamaita.com\",\"description\":\"The place where I make things happen.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/joseamaita.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/joseamaita.com\/en\/#\/schema\/person\/b53d49d3ddf8f348fed0d484b541b1a4\",\"name\":\"Jos\u00e9 Alberto Maita\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/joseamaita.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dfc4d3fa06e5fa2aee2ef3834715e1b8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dfc4d3fa06e5fa2aee2ef3834715e1b8?s=96&d=mm&r=g\",\"caption\":\"Jos\u00e9 Alberto Maita\"},\"url\":\"https:\/\/joseamaita.com\/en\/author\/joseamaita\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OPC Router Tutorial Backend - joseamaita.com","description":"Following the eleventh part of the OPC Router tutorial, I'm presenting more advanced backend features for our recently created REST API.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/","og_locale":"en_US","og_type":"article","og_title":"OPC Router Tutorial Backend - joseamaita.com","og_description":"Following the eleventh part of the OPC Router tutorial, I'm presenting more advanced backend features for our recently created REST API.","og_url":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/","og_site_name":"joseamaita.com","article_published_time":"2023-08-16T09:17:00+00:00","article_modified_time":"2023-08-16T15:27:04+00:00","og_image":[{"width":335,"height":367,"url":"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png","type":"image\/png"}],"author":"Jos\u00e9 Alberto Maita","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jos\u00e9 Alberto Maita","Est. reading time":"27 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#article","isPartOf":{"@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/"},"author":{"name":"Jos\u00e9 Alberto Maita","@id":"https:\/\/joseamaita.com\/en\/#\/schema\/person\/b53d49d3ddf8f348fed0d484b541b1a4"},"headline":"OPC Router Tutorial Backend","datePublished":"2023-08-16T09:17:00+00:00","dateModified":"2023-08-16T15:27:04+00:00","mainEntityOfPage":{"@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/"},"wordCount":1593,"image":{"@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage"},"thumbnailUrl":"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png","keywords":["API","Backend","Data Transfer","Industrial Automation","OPC Router","REST","SQL Server"],"articleSection":["API","Backend","Data Transfer","English","Industrial Automation","OPC Router","REST"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/","url":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/","name":"OPC Router Tutorial Backend - joseamaita.com","isPartOf":{"@id":"https:\/\/joseamaita.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage"},"image":{"@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage"},"thumbnailUrl":"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png","datePublished":"2023-08-16T09:17:00+00:00","dateModified":"2023-08-16T15:27:04+00:00","author":{"@id":"https:\/\/joseamaita.com\/en\/#\/schema\/person\/b53d49d3ddf8f348fed0d484b541b1a4"},"description":"Following the eleventh part of the OPC Router tutorial, I'm presenting more advanced backend features for our recently created REST API.","breadcrumb":{"@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#primaryimage","url":"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png","contentUrl":"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png","width":335,"height":367},{"@type":"BreadcrumbList","@id":"https:\/\/joseamaita.com\/en\/opc-router-tutorial-backend\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/joseamaita.com\/en\/"},{"@type":"ListItem","position":2,"name":"OPC Router Tutorial Backend"}]},{"@type":"WebSite","@id":"https:\/\/joseamaita.com\/en\/#website","url":"https:\/\/joseamaita.com\/en\/","name":"joseamaita.com","description":"The place where I make things happen.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/joseamaita.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/joseamaita.com\/en\/#\/schema\/person\/b53d49d3ddf8f348fed0d484b541b1a4","name":"Jos\u00e9 Alberto Maita","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/joseamaita.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dfc4d3fa06e5fa2aee2ef3834715e1b8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dfc4d3fa06e5fa2aee2ef3834715e1b8?s=96&d=mm&r=g","caption":"Jos\u00e9 Alberto Maita"},"url":"https:\/\/joseamaita.com\/en\/author\/joseamaita\/"}]}},"jetpack_featured_media_url":"https:\/\/joseamaita.com\/en\/wp-content\/uploads\/sites\/2\/2022\/09\/img_p_15_001.png","_links":{"self":[{"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/posts\/1737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/comments?post=1737"}],"version-history":[{"count":54,"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/posts\/1737\/revisions"}],"predecessor-version":[{"id":2833,"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/posts\/1737\/revisions\/2833"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/media\/1740"}],"wp:attachment":[{"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/media?parent=1737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/categories?post=1737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/joseamaita.com\/en\/wp-json\/wp\/v2\/tags?post=1737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}