{"id":16280,"date":"2024-05-14T17:21:41","date_gmt":"2024-05-14T17:21:41","guid":{"rendered":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/"},"modified":"2025-12-23T09:46:20","modified_gmt":"2025-12-23T14:46:20","slug":"factorytalk-optix-series-3-netlogic-overview-and-examples","status":"publish","type":"post","link":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/","title":{"rendered":"FactoryTalk Optix Series 3 &#8211; NetLogic Overview and Examples"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.dmcinfo.com\/services\/manufacturing-automation-and-intelligence\/hmi-and-scada-programming\"><strong>HMI Programming and SCADA Programming<\/strong><\/a> are essential for creating efficient and responsive automation systems. When working with Optix, leveraging NetLogic allows for seamless integration between C# code and the SCADA environment, enabling advanced control and data exchange.&nbsp;<\/p>\n\n\n\n<p>NetLogic is C# code&nbsp;that is linked to Optix. Optix can call methods with parameters, set private C# variables, and has numerous C# Libraries integrated by default to assist with passing data between Optix and your C# code. Optix also allows you to link the monitoring of C# code to an Optix runtime instance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-linking-variables\">Linking Variables<\/h2>\n\n\n\n<p>When creating NetLogic, you can define variables that interface with the C# code, and can be both written to and read from said C# code. You can also define variable categories to assist with organization.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>First, Variables are added onto the NetLogic object in Optix.<\/li>\n<\/ul>\n\n\n\n<p><p style=\"text-align: center;\">&nbsp;<img decoding=\"async\" alt=\"Linking Netlogic Variables\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164810\/net-logic-linking-variables.png\"><\/p><\/p>\n\n\n\n<p><p style=\"text-align: center;\"><em>An example of variables attached to a NetLogic object<\/em><\/p><\/p>\n\n\n\n<p>These variables can be referenced in the C# logic by utilizing the \u201cGetVariable\u201d method on our LogicObject.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For any variables at the top-most level, simply call: LogicObject.GetVariable(\u201cYourVariable\u201d).<\/li>\n\n\n\n<li>For nested variables (such as variables under \u201cTable\u201d in the example above), define a new IUAVariable for the nested name (Tables in this case), and then reference the individual elements of that new variable.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e\"><span style=\"background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\nprivate void ParametersSetup()\n\n{\n\tDB_SERVER_IP = LogicObject.GetVariable(\"Server IP\").Value;\n\tDB_SERVER_PORT = uint.Parse(LogicObject.GetVariable(\"Server port\").Value);\n\tSERVICE_NAME = LogicObject.GetVariable(\"Service name\").Value;\n\tDB_USERNAME = LogicObject.GetVariable(\"Username\").Value;\n\tDB_PASSWORD = LogicObject.GetVariable(\"Password\").Value;\n\tDB_QUERIES_FEEDBACK = LogicObject.GetVariable(\"Queries feedback\");\n\tTABLES = LogicObject.GetVariable(\"Tables\");\n\n\tTABLE_DESTINATION = TABLES.GetVariable(\"Destination\").Value;\n\tTABLE_DISTANCE = TABLES.GetVariable(\"Distance\").Value;\n\tTABLE_LOCATIONCHANGE = TABLES.GetVariable(\"LocationChange\").Value;\n\tTABLE_EQUIPMENTSTATUS = TABLES.GetVariable(\"EquipmentStatus\").Value;\n\tNUMBER_OF_DEVICES = LogicObject.GetVariable(\"Number of devices\").Value;\n\tNUMBER_OF_EQUIPMENT_AREAS = LogicObject.GetVariable(\"Number of equipment areas\").Value;\n\tCONNECTIONSTRING = $\"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={DB_SERVER_IP})(PORT={(int)DB_SERVER_PORT})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={SERVICE_NAME})));User Id={DB_USERNAME};Password={DB_PASSWORD};\";\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">void<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">ParametersSetup<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">DB_SERVER_IP<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Server IP&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">DB_SERVER_PORT<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">uint<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Parse<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Server port&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">SERVICE_NAME<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Service name&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">DB_USERNAME<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Username&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">DB_PASSWORD<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Password&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">DB_QUERIES_FEEDBACK<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Queries feedback&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">TABLES<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Tables&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">TABLE_DESTINATION<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">TABLES<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Destination&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">TABLE_DISTANCE<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">TABLES<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Distance&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">TABLE_LOCATIONCHANGE<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">TABLES<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;LocationChange&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">TABLE_EQUIPMENTSTATUS<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">TABLES<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;EquipmentStatus&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">NUMBER_OF_DEVICES<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Number of devices&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">NUMBER_OF_EQUIPMENT_AREAS<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">LogicObject<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetVariable<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Number of equipment areas&quot;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">CONNECTIONSTRING<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">$&quot;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={<\/span><span style=\"color: #9CDCFE\">DB_SERVER_IP<\/span><span style=\"color: #CE9178\">})(PORT={(<\/span><span style=\"color: #569CD6\">int<\/span><span style=\"color: #CE9178\">)<\/span><span style=\"color: #9CDCFE\">DB_SERVER_PORT<\/span><span style=\"color: #CE9178\">})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={<\/span><span style=\"color: #9CDCFE\">SERVICE_NAME<\/span><span style=\"color: #CE9178\">})));User Id={<\/span><span style=\"color: #9CDCFE\">DB_USERNAME<\/span><span style=\"color: #CE9178\">};Password={<\/span><span style=\"color: #9CDCFE\">DB_PASSWORD<\/span><span style=\"color: #CE9178\">};&quot;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e\"><span style=\"background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\nprivate IUAVariable DB_QUERIES_FEEDBACK;\nprivate string DB_SERVER_IP;\nprivate uint DB_SERVER_PORT;\nprivate string SERVICE_NAME;\nprivate string DB_USERNAME;\nprivate string DB_PASSWORD;\npublic IUAVariable TABLES;\nprivate string TABLE_DESTINATION;\nprivate string TABLE_DISTANCE;\nprivate string TABLE_LOCATIONCHANGE;\nprivate string TABLE_EQUIPMENTSTATUS;\nprivate Int32 NUMBER_OF_DEVICES;\nprivate Int32 NUMBER_OF_EQUIPMENT_AREAS;\n\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">IUAVariable<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">DB_QUERIES_FEEDBACK<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">DB_SERVER_IP<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">uint<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">DB_SERVER_PORT<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">SERVICE_NAME<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">DB_USERNAME<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">DB_PASSWORD<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">IUAVariable<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">TABLES<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">TABLE_DESTINATION<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">TABLE_DISTANCE<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">TABLE_LOCATIONCHANGE<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">string<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">TABLE_EQUIPMENTSTATUS<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Int32<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">NUMBER_OF_DEVICES<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Int32<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">NUMBER_OF_EQUIPMENT_AREAS<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-calling-methods\">Calling Methods<\/h2>\n\n\n\n<p>C# Methods can be called directly from Optix when the [ExportMethod] Line is added above said method. Any parameters associated with the Method will also be exposed, allowing you to set them dynamically from Optix, using a MethodInvocation or by linking them to events.<\/p>\n\n\n\n<p><p style=\"text-align: center;\"><img decoding=\"async\" alt=\"Invoking C# Methods from Optix\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164809\/method-invocation.png\"><\/p><\/p>\n\n\n\n<p><p style=\"text-align: center;\"><em>An example method invocation that shows all the [ExportMethod] methods from the Netlogic C# code<\/em><\/p><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e\"><span style=\"background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\n&#91;ExportMethod&#93;\n\npublic void SelectAllDevicesDestination()\n\n{\n\n\u2026\n\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #4EC9B0\">ExportMethod<\/span><span style=\"color: #D4D4D4\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">void<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">SelectAllDevicesDestination<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u2026<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-monitoring-code\">Monitoring Code<\/h2>\n\n\n\n<p>When NetLogic is created, Optix automatically configures the codespace (if utilizing VSCode) to attach to the Optix runtime instance, allowing you to monitor your C# card while the Optix application is running.<\/p>\n\n\n\n<p><p style=\"text-align: center;\"><img decoding=\"async\" alt=\"Monitoring an Optix Project in Visual Code\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164809\/visual-code-monitoring.png\"><\/p><\/p>\n\n\n\n<p><p style=\"text-align: center;\"><em>Visual Code is attached to the Optix Runtime when monitoring<\/em><\/p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-logging-and-error-handling\">Logging and Error Handling<\/h2>\n\n\n\n<p>Optix has a C# library for logging code that should be utilized, as it will output to the console in FT Optix Studio, as well as to the log file for the Optix application.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e\"><span style=\"background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e\">C#<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\ncatch (System.Exception ex)\n{\n\tLog.Error(MethodBase.GetCurrentMethod().Name, ex.Message);\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">catch<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">System<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4EC9B0\">Exception<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">ex<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\t<\/span><span style=\"color: #9CDCFE\">Log<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Error<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">MethodBase<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">GetCurrentMethod<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #9CDCFE\">Name<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">ex<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Message<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p><p style=\"text-align: center;\">&nbsp;<img decoding=\"async\" alt=\"Location of Optix Log Files\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/optix-runtime-logs.png\"><\/p><\/p>\n\n\n\n<p><p style=\"text-align: center;\"><em>The location&nbsp;of Optix log files for an emulated project<\/em><\/p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-read-the-other-articles-in-this-series\">Read the Other Articles in this Series<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.dmcinfo.com\/latest-thinking\/blog\/id\/10576\/factorytalk-optix-series-1--getting-started-with-factorytalk-optix\">FactoryTalk Optix Series 1 &#8211; Getting Started with FactoryTalk Optix<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.dmcinfo.com\/latest-thinking\/blog\/id\/10609\/factorytalk-optix-series-2--variables-attributes-dynamic-links-and-converters\">FactoryTalk Optix Series 2 &#8211; Variables, Attributes, Dynamic Links, and Converters<\/a><\/li>\n<\/ul>\n\n\n\n<p><strong>Learn more about our experience with <a href=\"https:\/\/www.dmcinfo.com\/services\/manufacturing-automation-and-intelligence\/hmi-and-scada-programming\/rockwell-factorytalk\">Rockwell FactoryTalk<\/a> and <a href=\"https:\/\/www.dmcinfo.com\/contact\">contact us<\/a> today for your next project.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>HMI Programming and SCADA Programming are essential for creating efficient and responsive automation systems. When working with Optix, leveraging NetLogic allows for seamless integration between C# code and the SCADA environment, enabling advanced control and data exchange.&nbsp; NetLogic is C# code&nbsp;that is linked to Optix. Optix can call methods with parameters, set private C# variables, [&hellip;]<\/p>\n","protected":false},"author":60,"featured_media":16281,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[735,756,731],"tags":[814,810,813,811,808,812,809],"class_list":["post-16280","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allen-bradley-plc","category-hmi-and-scada","category-manufacturing-automation-intelligence","tag-c","tag-factorytalk","tag-factorytalk-optix","tag-ft-optix","tag-hmi","tag-optix","tag-scada"],"yoast_head":"<title>FactoryTalk Optix Series 3 - NetLogic Overview and Examples | DMC, Inc.<\/title>\n<meta name=\"description\" content=\"Get an overview and examples of NetLogic, used for seamless integration when working with FactoryTalk Optix, in this guide by DMC, Inc..\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FactoryTalk Optix Series 3 - NetLogic Overview and Examples\" \/>\n<meta property=\"og:description\" content=\"Get an overview and examples of NetLogic, used for seamless integration when working with FactoryTalk Optix, in this guide by DMC, Inc..\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/\" \/>\n<meta property=\"og:site_name\" content=\"DMC, Inc.\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-14T17:21:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-23T14:46:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"925\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ben Clare\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ben Clare\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/\"},\"author\":{\"name\":\"Ben Clare\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/person\/0debf62cc4678537d64a65ee5ad39514\"},\"headline\":\"FactoryTalk Optix Series 3 &#8211; NetLogic Overview and Examples\",\"datePublished\":\"2024-05-14T17:21:41+00:00\",\"dateModified\":\"2025-12-23T14:46:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/\"},\"wordCount\":422,\"publisher\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png\",\"keywords\":[\"C#\",\"FactoryTalk\",\"FactoryTalk Optix\",\"FT Optix\",\"HMI\",\"Optix\",\"SCADA\"],\"articleSection\":[\"Allen Bradley PLC\",\"HMI and SCADA\",\"Manufacturing Automation &amp; Intelligence\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/\",\"url\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/\",\"name\":\"FactoryTalk Optix Series 3 - NetLogic Overview and Examples | DMC, Inc.\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png\",\"datePublished\":\"2024-05-14T17:21:41+00:00\",\"dateModified\":\"2025-12-23T14:46:20+00:00\",\"description\":\"Get an overview and examples of NetLogic, used for seamless integration when working with FactoryTalk Optix, in this guide by DMC, Inc..\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png\",\"width\":925,\"height\":400,\"caption\":\"getting-started-with-factorytalk-optix-part3\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dmcinfo.com\/#website\",\"url\":\"https:\/\/www.dmcinfo.com\/\",\"name\":\"DMC, Inc.\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dmcinfo.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\",\"name\":\"DMC, Inc.\",\"url\":\"https:\/\/www.dmcinfo.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png\",\"width\":418,\"height\":167,\"caption\":\"DMC, Inc.\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929\",\"https:\/\/www.instagram.com\/dmcengineering\",\"https:\/\/www.youtube.com\/DMCEngineering\",\"https:\/\/www.linkedin.com\/company\/dmc-engineering\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/person\/0debf62cc4678537d64a65ee5ad39514\",\"name\":\"Ben Clare\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/person\/image\/\",\"url\":\"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/60.png\",\"contentUrl\":\"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/60.png\",\"caption\":\"Ben Clare\"},\"url\":\"https:\/\/www.dmcinfo.com\/blog\/author\/benc\/\"}]}<\/script>","yoast_head_json":{"title":"FactoryTalk Optix Series 3 - NetLogic Overview and Examples | DMC, Inc.","description":"Get an overview and examples of NetLogic, used for seamless integration when working with FactoryTalk Optix, in this guide by DMC, Inc..","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:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/","og_locale":"en_US","og_type":"article","og_title":"FactoryTalk Optix Series 3 - NetLogic Overview and Examples","og_description":"Get an overview and examples of NetLogic, used for seamless integration when working with FactoryTalk Optix, in this guide by DMC, Inc..","og_url":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/","og_site_name":"DMC, Inc.","article_publisher":"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","article_published_time":"2024-05-14T17:21:41+00:00","article_modified_time":"2025-12-23T14:46:20+00:00","og_image":[{"width":925,"height":400,"url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png","type":"image\/png"}],"author":"Ben Clare","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ben Clare","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#article","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/"},"author":{"name":"Ben Clare","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/person\/0debf62cc4678537d64a65ee5ad39514"},"headline":"FactoryTalk Optix Series 3 &#8211; NetLogic Overview and Examples","datePublished":"2024-05-14T17:21:41+00:00","dateModified":"2025-12-23T14:46:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/"},"wordCount":422,"publisher":{"@id":"https:\/\/www.dmcinfo.com\/#organization"},"image":{"@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png","keywords":["C#","FactoryTalk","FactoryTalk Optix","FT Optix","HMI","Optix","SCADA"],"articleSection":["Allen Bradley PLC","HMI and SCADA","Manufacturing Automation &amp; Intelligence"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/","url":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/","name":"FactoryTalk Optix Series 3 - NetLogic Overview and Examples | DMC, Inc.","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage"},"image":{"@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png","datePublished":"2024-05-14T17:21:41+00:00","dateModified":"2025-12-23T14:46:20+00:00","description":"Get an overview and examples of NetLogic, used for seamless integration when working with FactoryTalk Optix, in this guide by DMC, Inc..","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/blog\/16280\/factorytalk-optix-series-3-netlogic-overview-and-examples\/#primaryimage","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27164808\/getting-started-with-factorytalk-optix-part3.png","width":925,"height":400,"caption":"getting-started-with-factorytalk-optix-part3"},{"@type":"WebSite","@id":"https:\/\/www.dmcinfo.com\/#website","url":"https:\/\/www.dmcinfo.com\/","name":"DMC, Inc.","description":"","publisher":{"@id":"https:\/\/www.dmcinfo.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dmcinfo.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dmcinfo.com\/#organization","name":"DMC, Inc.","url":"https:\/\/www.dmcinfo.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png","width":418,"height":167,"caption":"DMC, Inc."},"image":{"@id":"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","https:\/\/www.instagram.com\/dmcengineering","https:\/\/www.youtube.com\/DMCEngineering","https:\/\/www.linkedin.com\/company\/dmc-engineering"]},{"@type":"Person","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/person\/0debf62cc4678537d64a65ee5ad39514","name":"Ben Clare","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/person\/image\/","url":"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/60.png","contentUrl":"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/60.png","caption":"Ben Clare"},"url":"https:\/\/www.dmcinfo.com\/blog\/author\/benc\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/16280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/users\/60"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/comments?post=16280"}],"version-history":[{"count":2,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/16280\/revisions"}],"predecessor-version":[{"id":37999,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/16280\/revisions\/37999"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media\/16281"}],"wp:attachment":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media?parent=16280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/categories?post=16280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/tags?post=16280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}