{"id":40637,"date":"2026-01-19T10:22:54","date_gmt":"2026-01-19T15:22:54","guid":{"rendered":"https:\/\/www.dmcinfo.com\/?p=40637"},"modified":"2026-01-09T10:24:00","modified_gmt":"2026-01-09T15:24:00","slug":"siemens-s7-1200-web-server","status":"publish","type":"post","link":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/","title":{"rendered":"Siemens S7-1200 Web Server"},"content":{"rendered":"\n<p>In the 13 years since <a href=\"https:\/\/www.dmcinfo.com\/about\/our-team\/tim-jager\/\">Tim<\/a> wrote his blog post on the <a href=\"https:\/\/www.dmcinfo.com\/blog\/28315\/siemens-s7-1200-web-server-tutorial-from-getting-started-to-html5-user-defined-pages\/\">Siemens embedded web server on S7-1200 and S7-1500 PLCs<\/a>, a lot has changed regarding PLC security and access control. In this blog post, we will be walking through creating a user-defined web page using the latest security features in TIA Portal V20 and firmware v4.7.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-project-setup\">Project Setup<\/h2>\n\n\n\n<p>We will start by creating a new project in TIA Portal, navigating to the &#8220;Devices &amp; Networks&#8221; page, and adding our chosen PLC from the catalog. For this example, we will be using a `6ES7 212-1BE40-0XB0` more commonly known as a 1212C AC\/DC\/RLY.<\/p>\n\n\n\n<p>Once the PLC is added, a pop-up will appear asking you to configure PLC security settings for the project. If you clicked cancel or had previously checked the box to prevent this pop-up from being shown, you can access it by clicking on the PLC in the Devices &amp; networks page (the actual PLC, not the gray box around it), selecting the Properties and General tabs, selecting the Protection &amp; Security dropdown, and clicking the Start security wizard button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"268\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06103709\/plc.png\" alt=\"PLC CPU\" class=\"wp-image-40644\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06103709\/plc.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06103709\/plc-300x129.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>The first step is creating a password to protect the PLC project and data on the PLC. Both DMC and Siemens recommend setting this password to improve OT security, and since we will be enabling a web server on this device (while presumably connecting it to a larger IT network), it is a critical step towards protecting the PLC. It is important to note that once applied, this password cannot be removed &#8211; make sure it is documented in a secure place like a password manager available to everyone on your team. A Post-it on your monitor is not a great place to store this password.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"537\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104248\/plc-security-settings.png\" alt=\"PLC \" class=\"wp-image-40645\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104248\/plc-security-settings.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104248\/plc-security-settings-300x259.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>The next security setting is the mode for PG\/PC and HMI communication. Unless you know you will be communicating with a legacy device, you should leave this at the default option to only allow secure communication.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"539\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104344\/plc-hmi-communication.png\" alt=\"PLC HMI Communication\" class=\"wp-image-40646\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104344\/plc-hmi-communication.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104344\/plc-hmi-communication-300x260.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>The next setting will be for setting up access control. This should be enabled to restrict who can perform actions on the PLC, such as changing the run mode or accessing our user pages.<\/p>\n\n\n\n<p>The &#8220;access levels&#8221; option is a legacy option that was the only security option before V20. If setting up a new project, it is recommended to leave this unchecked and use the new User Management and Access Control (UMAC) feature.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"539\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104519\/plc-access-protection.png\" alt=\"PLC access protection\" class=\"wp-image-40647\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104519\/plc-access-protection.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104519\/plc-access-protection-300x260.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>In the next step, we will create one or more administrator users. This user will be able to perform all actions on a PLC that may be restricted, such as changing the mode between run\/stop, updating safety settings (if available on your selected PLC model), changing drive parameters, or downloading new programs. It is important to store the login information in a secure place, and having a backup administrator user is a good idea.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"535\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104618\/plc-administrator-setup.png\" alt=\"PLC Administrator Setup\" class=\"wp-image-40648\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104618\/plc-administrator-setup.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104618\/plc-administrator-setup-300x258.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>The next security setting is selecting whether anonymous access should be enabled. This could be useful to provide read-only access to any user without logging in, but it does reduce security slightly. For this demo, we will leave it disabled.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"540\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104747\/plc-anonymous-access.png\" alt=\"PLC Anonymous Access\" class=\"wp-image-40649\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104747\/plc-anonymous-access.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104747\/plc-anonymous-access-300x260.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>The next page will need no changes as we are not using access control levels, and the last page will provide an overview of the settings you have chosen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"540\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104911\/plc-overview.png\" alt=\"PLC Overview\" class=\"wp-image-40650\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104911\/plc-overview.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06104911\/plc-overview-300x260.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>At this point, we can click Finish and get started changing PLC settings for the web server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-getting-started\">Getting Started<\/h2>\n\n\n\n<p>Back in Devices &amp; Networks, open up the PLC properties. Each section below will guide you through the settings that need to be changed specifically for the web server.<\/p>\n\n\n\n<p><strong>General<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Here we can set the PLC name, plant information, and other designators.<\/li>\n<\/ul>\n\n\n\n<p><strong>PROFINET Interface [X1]<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Here, we will need to set an IP address and Subnet Mask.<\/li>\n\n\n\n<li>If this device will be accessible from an IT network, make sure the router address is set so that the PLC can be accessed outside the immediate local network.<\/li>\n\n\n\n<li>If the PLC will be performing any tasks where the time of day needs to be known, or if you would like logs to have accurate timestamps, enable the time-of-day synchronization and enter NTP addresses. For this example, we will use several NIST servers located in different geographic regions.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"381\" height=\"217\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105216\/time-of-day-synchronization.png\" alt=\"NIST time-of-day synchronization\" class=\"wp-image-40651\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105216\/time-of-day-synchronization.png 381w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105216\/time-of-day-synchronization-300x171.png 300w\" sizes=\"(max-width: 381px) 100vw, 381px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>At the bottom of this tab, make sure to enable the web server on this interface (we will enable the web server module later).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"441\" height=\"108\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105353\/web-server-access.png\" alt=\"Web Server Access\" class=\"wp-image-40652\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105353\/web-server-access.png 441w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105353\/web-server-access-300x73.png 300w\" sizes=\"(max-width: 441px) 100vw, 441px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Note: if your PLC has multiple interfaces, one may be set up for connecting to local devices such as drives, remote IO, or local HMIs, and the other may be configured for connection to a larger IT network. The router address, NTP server, and web server access would only be needed on the interface used for IT network access.<\/li>\n<\/ul>\n\n\n\n<p><strong>Web Server<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Check the box to enable the web server on all modules of the device and to permit access with HTTPS only.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"502\" height=\"111\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105531\/web-server-general.png\" alt=\"Web Server general\" class=\"wp-image-40653\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105531\/web-server-general.png 502w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06105531\/web-server-general-300x66.png 300w\" sizes=\"(max-width: 502px) 100vw, 502px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Certificate Type: Hardware-generated\n<ul class=\"wp-block-list\">\n<li>For this blog post, we will skip the differences between the two.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Further updates will be made here once we create an actual web page.<\/li>\n<\/ul>\n\n\n\n<p><strong>Time of Day<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set the time zone and daylight savings settings according to your location.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-adding-users-and-web-server-user-roles\">Adding Users and Web Server User Roles<\/h2>\n\n\n\n<p>Before we download and test our setup so far, we will need to configure user roles to allow access to the web server and create some non-administrator users who can access it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-user-roles\">User Roles<\/h3>\n\n\n\n<p>In the project tree, open Security settings &gt; Users and roles and then select the Roles tab.<\/p>\n\n\n\n<p>We will create two new roles: the first is a Web Server Admin, who can perform all tasks through the web server. The existing administrator users will be added to this.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"556\" height=\"573\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153348\/plc-security-settings-user-roles.png\" alt=\"PLC security settings user-roles\" class=\"wp-image-40682\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153348\/plc-security-settings-user-roles.png 556w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153348\/plc-security-settings-user-roles-291x300.png 291w\" sizes=\"(max-width: 556px) 100vw, 556px\" \/><\/figure>\n\n\n\n<p>The second role will be a Web Server User role with permission to open only the user-defined pages we create.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"643\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153604\/web-server-user-role.png\" alt=\"Web server user role\" class=\"wp-image-40683\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153604\/web-server-user-role.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153604\/web-server-user-role-291x300.png 291w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-users\">Users<\/h3>\n\n\n\n<p>At this point, we can go back to the Users tab. The administrator users created during the project security setup should be added to the Web Server Admin role. We will &#8220;forget&#8221; to add the second administrator user to demonstrate what the web server looks like if these permissions are not given to the administrator.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"497\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153703\/plc-users.png\" alt=\"PLC users\" class=\"wp-image-40684\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153703\/plc-users.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153703\/plc-users-300x239.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>Clicking &lt;Add a new user&gt; lets you create a new non-administrator user with only the &#8220;Web Server User&#8221; role assigned, which we created earlier.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"500\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153828\/creating-a-new-non-administrator-user.png\" alt=\"Creating a new non administrator user\" class=\"wp-image-40685\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153828\/creating-a-new-non-administrator-user.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06153828\/creating-a-new-non-administrator-user-300x241.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-testing-our-setup-so-far\">Testing our Setup So Far<\/h2>\n\n\n\n<p>To confirm that all our security settings are working, we can download the hardware and software to the PLC and try accessing its webpage.<\/p>\n\n\n\n<p>By entering the previously set IP address of our PLC in a browser window, we should be greeted by a Siemens landing page, and we can press Enter to view our PLC&#8217;s webpage. Make sure to enter `https:\/\/` before the IP address, and click your browser&#8217;s &#8220;accept the risk and continue&#8221; button if you&#8217;re prompted with a certificate warning.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"347\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06154143\/plc-webpage.png\" alt=\"PLC web page\" class=\"wp-image-40686\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06154143\/plc-webpage.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06154143\/plc-webpage-300x167.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>By logging in with our first administrator login (dmcAdmin1) we can see that we can access all pages as well as change the run mode of the PLC.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"450\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06154312\/plc-administrator-login.png\" alt=\"PLC administration login\" class=\"wp-image-40687\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06154312\/plc-administrator-login.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06154312\/plc-administrator-login-300x217.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>Logging out and back in as our \u201cincorrectly configured\u201d admin account shows that the user can log in, but because none of the web server runtime rights were granted, we cannot perform any actions that an authenticated user can. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"475\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155241\/siemens-s7-1200.png\" alt=\"Siemens S7 1200\" class=\"wp-image-40688\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155241\/siemens-s7-1200.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155241\/siemens-s7-1200-300x229.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>Finally, by logging in as the standard user with permissions to only access the User Pages, we can see that the user can access the user defined pages tab, but is unable to perform administrator actions such as switching the PLC operating mode, downloading or backing up the program, etc.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"476\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155414\/s7-1200-station-standard-user.png\" alt=\"S7 1200 Station standard user\" class=\"wp-image-40689\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155414\/s7-1200-station-standard-user.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155414\/s7-1200-station-standard-user-300x229.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-optimization\">Optimization<\/h2>\n\n\n\n<p>We have now shown that the Siemens PLC web server is enabled and secured, but if you spend any time navigating even the existing pages, you may notice that the web pages feel sluggish and slow to respond. There are two options that can be changed to speed up the pages.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-communication-load\">Communication Load<\/h3>\n\n\n\n<p>By default, the PLC is set to spend no more than 20% of its CPU cycles performing communications. For some use cases, you may not have a large or complicated PLC project and would prefer a more responsive web server, at the cost of a slower scan time. By navigating to the PLC properties and increasing the limit from 20% to 50%, the project will become noticeably faster. During testing with one of my customers&#8217; projects, web page loading time was approximately halved, while scan times went from 3-5ms to 4-11ms.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"618\" height=\"374\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155553\/plc-communication-load.png\" alt=\"PLC communication load\" class=\"wp-image-40690\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155553\/plc-communication-load.png 618w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155553\/plc-communication-load-300x182.png 300w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-enabling-http-communications\">Enabling HTTP Communications<\/h3>\n\n\n\n<p>During the web server setup process, we checked a box to enable only HTTPS (secured and encrypted) communications. Doing so requires the PLC to spend significantly more of the Communication Load time encrypting and decrypting web traffic and less time transferring web pages. Disabling this option will make the web pages load much faster. If your PLC is properly secured behind a VPN or is fully disconnected from the internet, then the decrease in security is not too severe, but keep in mind that anyone with access to the network could theoretically read the unencrypted HTTP information as it is transferred. This means that login information and everything displayed will be transferred in unsecured, plain text.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"623\" height=\"328\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155717\/plc-enabling-http-communications.png\" alt=\"Enabling HTTP communications\" class=\"wp-image-40691\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155717\/plc-enabling-http-communications.png 623w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06155717\/plc-enabling-http-communications-300x158.png 300w\" sizes=\"(max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p>Changing this setting had the most significant impact on page loading time, making the PLC-hosted web page feel almost as responsive as any site on the web, but comes with the cost of the greatest impact on security.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-next-steps\">Next Steps<\/h2>\n\n\n\n<p>At this point, our PLC project and user permissions are correctly configured to enable user-defined pages. For more details on writing custom HTML pages that interface with the PLC program, check out <a href=\"https:\/\/www.dmcinfo.com\/blog\/28315\/siemens-s7-1200-web-server-tutorial-from-getting-started-to-html5-user-defined-pages\/\">Tim&#8217;s excellent write-up<\/a>, which is mentioned at the start of this post.<a id=\"_msocom_1\"><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"466\" height=\"303\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06160246\/siemens-s7-1200-station.png\" alt=\"Siemens S7 1200 Station\" class=\"wp-image-40692\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06160246\/siemens-s7-1200-station.png 466w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06160246\/siemens-s7-1200-station-300x195.png 300w\" sizes=\"(max-width: 466px) 100vw, 466px\" \/><\/figure>\n\n\n\n<p><strong>Ready to take your <a href=\"https:\/\/www.dmcinfo.com\/services\/manufacturing-automation-and-intelligence\/\">Automation<\/a> project to the next level? <a href=\"https:\/\/www.dmcinfo.com\/contact#get-in-touch\">Contact us today<\/a> to learn more about our solutions and how we can help you achieve your goals.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the 13 years since Tim wrote his blog post on the Siemens embedded web server on S7-1200 and S7-1500 PLCs, a lot has changed regarding PLC security and access control. In this blog post, we will be walking through creating a user-defined web page using the latest security features in TIA Portal V20 and [&hellip;]<\/p>\n","protected":false},"author":190,"featured_media":40696,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[731,732],"tags":[],"class_list":["post-40637","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-manufacturing-automation-intelligence","category-plc"],"yoast_head":"<title>Siemens S7-1200 Web Server | DMC, Inc.<\/title>\n<meta name=\"description\" content=\"Explore how to create a user-defined web page on the Siemens S7-1200 Web Server with new security protocols.\" \/>\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\/40637\/siemens-s7-1200-web-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Siemens S7-1200 Web Server\" \/>\n<meta property=\"og:description\" content=\"Explore how to create a user-defined web page on the Siemens S7-1200 Web Server with new security protocols.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/\" \/>\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=\"2026-01-19T15:22:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1107\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Michael Sidler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Sidler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/\"},\"author\":{\"name\":\"Michael Sidler\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/person\/910d37695712e61a8925b789e9274e37\"},\"headline\":\"Siemens S7-1200 Web Server\",\"datePublished\":\"2026-01-19T15:22:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/\"},\"wordCount\":1631,\"publisher\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg\",\"articleSection\":[\"Manufacturing Automation &amp; Intelligence\",\"PLC\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/\",\"url\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/\",\"name\":\"Siemens S7-1200 Web Server | DMC, Inc.\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg\",\"datePublished\":\"2026-01-19T15:22:54+00:00\",\"description\":\"Explore how to create a user-defined web page on the Siemens S7-1200 Web Server with new security protocols.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg\",\"width\":2560,\"height\":1107,\"caption\":\"Siemens S7 1200 Web Server\"},{\"@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\/910d37695712e61a8925b789e9274e37\",\"name\":\"Michael Sidler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/person\/image\/\",\"url\":\"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/190.png\",\"contentUrl\":\"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/190.png\",\"caption\":\"Michael Sidler\"},\"url\":\"https:\/\/www.dmcinfo.com\/blog\/author\/michaels\/\"}]}<\/script>","yoast_head_json":{"title":"Siemens S7-1200 Web Server | DMC, Inc.","description":"Explore how to create a user-defined web page on the Siemens S7-1200 Web Server with new security protocols.","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\/40637\/siemens-s7-1200-web-server\/","og_locale":"en_US","og_type":"article","og_title":"Siemens S7-1200 Web Server","og_description":"Explore how to create a user-defined web page on the Siemens S7-1200 Web Server with new security protocols.","og_url":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/","og_site_name":"DMC, Inc.","article_publisher":"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","article_published_time":"2026-01-19T15:22:54+00:00","og_image":[{"width":2560,"height":1107,"url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg","type":"image\/jpeg"}],"author":"Michael Sidler","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Michael Sidler","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#article","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/"},"author":{"name":"Michael Sidler","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/person\/910d37695712e61a8925b789e9274e37"},"headline":"Siemens S7-1200 Web Server","datePublished":"2026-01-19T15:22:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/"},"wordCount":1631,"publisher":{"@id":"https:\/\/www.dmcinfo.com\/#organization"},"image":{"@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg","articleSection":["Manufacturing Automation &amp; Intelligence","PLC"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/","url":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/","name":"Siemens S7-1200 Web Server | DMC, Inc.","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage"},"image":{"@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg","datePublished":"2026-01-19T15:22:54+00:00","description":"Explore how to create a user-defined web page on the Siemens S7-1200 Web Server with new security protocols.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/blog\/40637\/siemens-s7-1200-web-server\/#primaryimage","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2026\/01\/06174900\/Siemens-S7-1200-Web-Server-3.jpg","width":2560,"height":1107,"caption":"Siemens S7 1200 Web Server"},{"@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\/910d37695712e61a8925b789e9274e37","name":"Michael Sidler","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/person\/image\/","url":"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/190.png","contentUrl":"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/190.png","caption":"Michael Sidler"},"url":"https:\/\/www.dmcinfo.com\/blog\/author\/michaels\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/40637","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\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/comments?post=40637"}],"version-history":[{"count":3,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/40637\/revisions"}],"predecessor-version":[{"id":40698,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/40637\/revisions\/40698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media\/40696"}],"wp:attachment":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media?parent=40637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/categories?post=40637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/tags?post=40637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}