{"id":15350,"date":"2025-06-02T10:26:12","date_gmt":"2025-06-02T10:26:12","guid":{"rendered":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/"},"modified":"2025-12-23T09:45:25","modified_gmt":"2025-12-23T14:45:25","slug":"beckhoff-xts-part-6-position-triggers","status":"publish","type":"post","link":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/","title":{"rendered":"Beckhoff XTS Part 6: Position Triggers"},"content":{"rendered":"\n<p>The previous entry in this series went over the Station function block. Stations are excellent at holding movers while an operation is performed on their payload. Stations require a mover to stop at the station before continuing along, but what if we wanted to adjust our mover\u2019s behavior while it\u2019s still moving? That\u2019s what position triggers are for. This blog will go over the PositionTrigger function block that comes with the base starter project. We will see how to configure Beckhoff XTS position triggers properly and what methods we have at our disposal to use with our system.&nbsp;<\/p>\n\n\n\n<p>This blog will continue to use the <a href=\"https:\/\/github.com\/Beckhoff-USA-Community\/XTS_Base\/tree\/master\">Beckhoff XTS_Base GitHub<\/a> and the <a href=\"https:\/\/www.beckhoff.com\/nl-be\/products\/motion\/xts-linear-product-transport\/xts-starter-kits\/at2000-1500-0170.html\">large XTS starter kit<\/a>.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-beckhoff-xts-series\">Beckhoff XTS Series<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.dmcinfo.com\/blog\/15666\/beckhoff-xts-part-1-downloads-and-starter-project\/\">Part 1 &#8211; Downloads and Starter Project<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.dmcinfo.com\/blog\/15650\/beckhoff-xts-part-2-setting-up-a-physical-xts-system\/\">Part 2 &#8211;&nbsp;Setting Up a Physical XTS System<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.dmcinfo.com\/blog\/15598\/beckhoff-xts-part-3-simulation-and-plc-logic\/\">Part 3 &#8211; Simulation and PLC Logic<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.dmcinfo.com\/blog\/15357\/beckhoff-xts-part-4-movers\/\">Part 4 &#8211; Movers<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.dmcinfo.com\/blog\/15354\/beckhoff-xts-part-5-stations\/\">Part 5 &#8211; Stations<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.dmcinfo.com\/blog\/15346\/beckhoff-xts-part-7-customizing-logic\/\">Part 7 &#8211; Customizing Logic<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-position-triggers\">Position Triggers<\/h2>\n\n\n\n<p>Position triggers are defined positions along the XTS track that know when movers pass by. This can allow for on-the-fly redirections or changes in velocity.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-declaring-a-position-trigger\">Declaring a Position Trigger<\/h2>\n\n\n\n<p>In MAIN, in the variable declaration we already have an array of position triggers defined with the line<\/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\">Structured Text<\/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>PositionTrigger : ARRAY&#91;0..2&#93; OF PositionTrigger;<\/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 style=\"color: #C8C8C8\">PositionTrigger<\/span><span style=\"color: #D4D4D4\"> : <\/span><span style=\"color: #4FC1FF\">ARRAY<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0..2<\/span><span style=\"color: #D4D4D4\">&#93; <\/span><span style=\"color: #4FC1FF\">OF<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>This defines 3 position triggers to use. If you want to use more, you can increase the array bounds. It\u2019s also likely worth using a global constant similar to how the stations are defined.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configuring-position-triggers\">Configuring Position Triggers<\/h2>\n\n\n\n<p>The existing starter project already has 3 position triggers configured, shown below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"624\" height=\"335\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/06\/09140203\/configuring-position-triggers.webp\" alt=\"configuring position triggers\" class=\"wp-image-36431\" srcset=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/06\/09140203\/configuring-position-triggers.webp 624w, https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/06\/09140203\/configuring-position-triggers-300x161.webp 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>Similarly to the stations, the position definition for these position triggers is in the MS_INTIIALIZING_OBJECTIVES section of the MAIN state machine, which is at line 115.<\/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-start:115;--cbp-line-number-width:calc(3 * 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\">Structured Text<\/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>PositionTrigger&#91;0&#93;.Position := 1500;\nPositionTrigger&#91;1&#93;.Position := 2000;\nPositionTrigger&#91;2&#93;.Position := 3500;\u00a0<\/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 style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">Position<\/span><span style=\"color: #D4D4D4\"> := <\/span><span style=\"color: #B5CEA8\">1500<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">Position<\/span><span style=\"color: #D4D4D4\"> := <\/span><span style=\"color: #B5CEA8\">2000<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">Position<\/span><span style=\"color: #D4D4D4\"> := <\/span><span style=\"color: #B5CEA8\">3500<\/span><span style=\"color: #D4D4D4\">;\u00a0<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>We can see that the position triggers are given positions (in mm) around the track that line up with the picture above. Changing these positions will change where along the track the position triggers exist.<\/p>\n\n\n\n<p>These position triggers also have CyclicLogic methods that must be called every scan and are already called for us at line 419.<\/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-start:419;--cbp-line-number-width:calc(3 * 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\">Structured Text<\/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>PositionTrigger&#91;0&#93;.Cyclic();\nPositionTrigger&#91;1&#93;.Cyclic();\nPositionTrigger&#91;2&#93;.Cyclic();<\/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 style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #DCDCAA\">Cyclic<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #DCDCAA\">Cyclic<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #DCDCAA\">Cyclic<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>If you add more position triggers, make sure to call their CyclicLogic methods as well.<\/p>\n\n\n\n<p>The stations also make sure to unregister movers on stopping or disabling. This happens on lines 332 and 367 by calling the UnregisterAll method for each position trigger.<\/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-start:332;--cbp-line-number-width:calc(3 * 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\">Structured Text<\/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>FOR i := 0 TO SIZEOF(PositionTrigger) \/ SIZEOF(PositionTrigger&#91;0&#93;) - 1 DO\n  PositionTrigger&#91;i&#93;.UnregisterAll();\nEND_FOR<\/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 style=\"color: #4FC1FF\">FOR<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C8C8C8\">i<\/span><span style=\"color: #D4D4D4\"> := <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">TO<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">SIZEOF<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">) \/ <\/span><span style=\"color: #DCDCAA\">SIZEOF<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">&#93;) - <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">DO<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #9CDCFE\">i<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #DCDCAA\">UnregisterAll<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4FC1FF\">END_FOR<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-position-trigger-logic\">Position Trigger Logic<\/h3>\n\n\n\n<p>The existing starter project already has some position trigger logic. The logic for these position triggers is in the MS_RUN section of the MAIN state machine, which starts at line 250. There\u2019s a few methods and properties about the position triggers that are useful to describe to interpret this code:<\/p>\n\n\n\n<p><em>MoverPassedPosition<\/em><\/p>\n\n\n\n<p>MoverPassedPosition is a property of the position trigger object. It goes TRUE when a mover passed the configured position trigger\u2019s position. This will allow for logic based on the position trigger to affect the mover passing by.<\/p>\n\n\n\n<p><em>MuteCurrent<\/em><\/p>\n\n\n\n<p>MuteCurrent is a method of the position trigger object. It will set MoverPassedPosition to FALSE and clear out the mover being tracked by the position trigger. This can be used to indicate the position trigger logic is done and a new mover can be handled.<\/p>\n\n\n\n<p>With these properties and methods, let\u2019s see what the current position triggers are doing.<\/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-start:250;--cbp-line-number-width:calc(3 * 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\">Structured Text<\/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>\/\/ Position Trigger 0 Logic\nIF PositionTrigger&#91;0&#93;.MoverPassedPosition THEN\n  PositionTrigger&#91;0&#93;.CurrentMover.SetVelocity(lowVelocity);\n  PositionTrigger&#91;0&#93;.MuteCurrent();\nEND_IF\n\n\/\/ Position Trigger 1 Logic\nIF PositionTrigger&#91;1&#93;.MoverPassedPosition THEN\n  PositionTrigger&#91;1&#93;.CurrentMover.SetVelocity(highVelocity);\n  PositionTrigger&#91;1&#93;.MuteCurrent();\nEND_IF\n\n\/\/ Position Trigger 2 Logic\nIF PositionTrigger&#91;2&#93;.MoverPassedPosition THEN\n  PositionTrigger&#91;2&#93;.CurrentMover.SetVelocity(lowVelocity);\n  PositionTrigger&#91;2&#93;.CurrentMover.MoveToStation(Station&#91;0&#93;);\n  PositionTrigger&#91;2&#93;.MuteCurrent();\nEND_IF<\/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 style=\"color: #6A9955\">\/\/ Position Trigger 0 Logic<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4FC1FF\">IF<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">MoverPassedPosition<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">THEN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">CurrentMover<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SetVelocity<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">lowVelocity<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #DCDCAA\">MuteCurrent<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4FC1FF\">END_IF<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Position Trigger 1 Logic<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4FC1FF\">IF<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">MoverPassedPosition<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">THEN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">CurrentMover<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SetVelocity<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">highVelocity<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #DCDCAA\">MuteCurrent<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4FC1FF\">END_IF<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Position Trigger 2 Logic<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4FC1FF\">IF<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">MoverPassedPosition<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">THEN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">CurrentMover<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SetVelocity<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">lowVelocity<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #9CDCFE\">CurrentMover<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">MoveToStation<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">Station<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">&#93;);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">PositionTrigger<\/span><span style=\"color: #D4D4D4\">&#91;<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">&#93;.<\/span><span style=\"color: #DCDCAA\">MuteCurrent<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4FC1FF\">END_IF<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Position triggers 0 and 1 are doing similar things. They both wait for a mover to pass their position and then change the velocity of the mover. Position trigger 0 changes to low velocity and position trigger 1 changes to high velocity. They then both call the MuteCurrent methods to clear out the mover from the position trigger. Note that neither of these position triggers are sending a command to the mover, just changing its velocity. The mover is still obeying the MoveVelocity command from station 4.<\/p>\n\n\n\n<p>Position trigger 2 waits for a mover to pass its position, sets the velocity low, and then commands the mover to move to station 0. This will override the move velocity command from station 4 and so the mover will next stop at station 0. The logic then calls MuteCurrent to signal the position trigger has processed the mover.<\/p>\n\n\n\n<p>Now that we\u2019ve reviewed movers, stations, and positions triggers we can not only understand the existing starter project logic but also write our own custom logic. In the next entry in this blog series, we will go over writing some custom logic for our XTS application.<\/p>\n\n\n\n<p>If you\u2019d like help with the next steps for your XTS system, DMC is proud to be a Beckhoff System Integrator and has worked on multiple XTS projects and applications. Learn more about our <a href=\"https:\/\/www.dmcinfo.com\/about\/partners\/beckhoff-integrator-group\">Beckhoff partnership<\/a> and<a href=\"https:\/\/www.dmcinfo.com\/contact\"> contact us<\/a> for your next project.<\/p>\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\">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>The previous entry in this series went over the Station function block. Stations are excellent at holding movers while an operation is performed on their payload. Stations require a mover to stop at the station before continuing along, but what if we wanted to adjust our mover\u2019s behavior while it\u2019s still moving? That\u2019s what position [&hellip;]<\/p>\n","protected":false},"author":77,"featured_media":15351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[733,731,732],"tags":[],"class_list":["post-15350","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-beckhoff-plc","category-manufacturing-automation-intelligence","category-plc"],"yoast_head":"<title>Beckhoff XTS Part 6: Position Triggers | DMC, Inc.<\/title>\n<meta name=\"description\" content=\"Learn how DMC, Inc. configures and uses Beckhoff XTS position triggers to control movers without stopping them.\" \/>\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\/15350\/beckhoff-xts-part-6-position-triggers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Beckhoff XTS Part 6: Position Triggers\" \/>\n<meta property=\"og:description\" content=\"Learn how DMC, Inc. configures and uses Beckhoff XTS position triggers to control movers without stopping them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/\" \/>\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=\"2025-06-02T10:26:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-23T14:45:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.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=\"Carter Silvey\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carter Silvey\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/\"},\"author\":{\"name\":\"Carter Silvey\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/person\/d91de4b6b9fb5fa6d04183d3898c5081\"},\"headline\":\"Beckhoff XTS Part 6: Position Triggers\",\"datePublished\":\"2025-06-02T10:26:12+00:00\",\"dateModified\":\"2025-12-23T14:45:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/\"},\"wordCount\":800,\"publisher\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png\",\"articleSection\":[\"Beckhoff PLC\",\"Manufacturing Automation &amp; Intelligence\",\"PLC\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/\",\"url\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/\",\"name\":\"Beckhoff XTS Part 6: Position Triggers | DMC, Inc.\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png\",\"datePublished\":\"2025-06-02T10:26:12+00:00\",\"dateModified\":\"2025-12-23T14:45:25+00:00\",\"description\":\"Learn how DMC, Inc. configures and uses Beckhoff XTS position triggers to control movers without stopping them.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png\",\"width\":925,\"height\":400,\"caption\":\"beckhoff blog template\"},{\"@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\/d91de4b6b9fb5fa6d04183d3898c5081\",\"name\":\"Carter Silvey\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/person\/image\/\",\"url\":\"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/77.png\",\"contentUrl\":\"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/77.png\",\"caption\":\"Carter Silvey\"},\"url\":\"https:\/\/www.dmcinfo.com\/blog\/author\/carters\/\"}]}<\/script>","yoast_head_json":{"title":"Beckhoff XTS Part 6: Position Triggers | DMC, Inc.","description":"Learn how DMC, Inc. configures and uses Beckhoff XTS position triggers to control movers without stopping them.","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\/15350\/beckhoff-xts-part-6-position-triggers\/","og_locale":"en_US","og_type":"article","og_title":"Beckhoff XTS Part 6: Position Triggers","og_description":"Learn how DMC, Inc. configures and uses Beckhoff XTS position triggers to control movers without stopping them.","og_url":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/","og_site_name":"DMC, Inc.","article_publisher":"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","article_published_time":"2025-06-02T10:26:12+00:00","article_modified_time":"2025-12-23T14:45:25+00:00","og_image":[{"width":925,"height":400,"url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png","type":"image\/png"}],"author":"Carter Silvey","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Carter Silvey","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#article","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/"},"author":{"name":"Carter Silvey","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/person\/d91de4b6b9fb5fa6d04183d3898c5081"},"headline":"Beckhoff XTS Part 6: Position Triggers","datePublished":"2025-06-02T10:26:12+00:00","dateModified":"2025-12-23T14:45:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/"},"wordCount":800,"publisher":{"@id":"https:\/\/www.dmcinfo.com\/#organization"},"image":{"@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png","articleSection":["Beckhoff PLC","Manufacturing Automation &amp; Intelligence","PLC"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/","url":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/","name":"Beckhoff XTS Part 6: Position Triggers | DMC, Inc.","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage"},"image":{"@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png","datePublished":"2025-06-02T10:26:12+00:00","dateModified":"2025-12-23T14:45:25+00:00","description":"Learn how DMC, Inc. configures and uses Beckhoff XTS position triggers to control movers without stopping them.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/blog\/15350\/beckhoff-xts-part-6-position-triggers\/#primaryimage","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165347\/2_beckhoff-blog-template.png","width":925,"height":400,"caption":"beckhoff blog template"},{"@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\/d91de4b6b9fb5fa6d04183d3898c5081","name":"Carter Silvey","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/person\/image\/","url":"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/77.png","contentUrl":"\/\/www.dmcinfo.com\/wp-content\/uploads\/wpo365\/profile-images\/77.png","caption":"Carter Silvey"},"url":"https:\/\/www.dmcinfo.com\/blog\/author\/carters\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/15350","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\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/comments?post=15350"}],"version-history":[{"count":5,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/15350\/revisions"}],"predecessor-version":[{"id":36550,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/posts\/15350\/revisions\/36550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media\/15351"}],"wp:attachment":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media?parent=15350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/categories?post=15350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/tags?post=15350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}