<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>esp engineering: insights and events</title><description>Articles from precision engineering, and the dates where you can meet us.</description><link>https://esp-engineering.com/en/</link><language>en-US</language><lastBuildDate>Mon, 21 Sep 2026 12:35:33 GMT</lastBuildDate><atom:link href="https://esp-engineering.com/en/rss.xml" rel="self" type="application/rss+xml"/><item><title>W3+ Fair Jena 2026</title><link>https://esp-engineering.com/en/events/w3-fair-jena-2026/</link><guid isPermaLink="true">https://esp-engineering.com/en/events/w3-fair-jena-2026/</guid><description>Networking fair for photonics, optics, electronics and mechanics. We are on site on both days.</description><pubDate>Mon, 21 Sep 2026 12:35:33 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://esp-engineering.com/assets/img/lab-3.jpg&quot; alt=&quot;W3+ Fair Jena 2026&quot; /&gt;&lt;/p&gt;&lt;p&gt;The W3+ Fair Jena brings together companies, research institutes, start-ups and users from photonics, optics, electronics and precision mechanics. It runs on 23 and 24 September 2026 at the Sparkassen-Arena in Jena, and admission is for trade visitors only.&lt;/p&gt;&lt;p&gt;esp engineering is on site on both days. If you have a machine, a process or a feasibility question in mind, get in touch beforehand and we will make the time to talk.&lt;/p&gt;</content:encoded><category>Trade fair</category></item><item><title>Motek 2026</title><link>https://esp-engineering.com/en/events/motek-2026/</link><guid isPermaLink="true">https://esp-engineering.com/en/events/motek-2026/</guid><description>Trade fair for production and assembly automation. We are on site.</description><pubDate>Mon, 21 Sep 2026 12:35:33 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://esp-engineering.com/assets/img/engineering-1.jpg&quot; alt=&quot;Motek 2026&quot; /&gt;&lt;/p&gt;&lt;p&gt;Motek shows what is currently possible in production and assembly automation: handling, feeding, joining, testing. It runs from 6 to 8 October 2026 at Messe Stuttgart, alongside VISION in the same halls.&lt;/p&gt;&lt;p&gt;We are there as visitors, not with a stand of our own. If you have a machine or an assembly process in mind and want to talk it through on site, get in touch beforehand and we will find a slot.&lt;/p&gt;</content:encoded><category>Trade fair</category></item><item><title>VISION 2026</title><link>https://esp-engineering.com/en/events/vision-2026/</link><guid isPermaLink="true">https://esp-engineering.com/en/events/vision-2026/</guid><description>Leading trade fair for machine vision. We are on site.</description><pubDate>Mon, 21 Sep 2026 12:35:33 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://esp-engineering.com/assets/img/faosi-head.jpg&quot; alt=&quot;VISION 2026&quot; /&gt;&lt;/p&gt;&lt;p&gt;VISION is the leading fair for industrial image processing: cameras, optics, illumination, software and complete inspection systems. It runs from 6 to 8 October 2026 at Messe Stuttgart, at the same time as Motek.&lt;/p&gt;&lt;p&gt;Machine vision sits inside many of our systems, from fiducial detection to surface inspection. We are there as visitors. If you have an inspection task where the question is whether a camera can solve it at all, talk to us beforehand.&lt;/p&gt;</content:encoded><category>Trade fair</category></item><item><title>Precision Fair 2026</title><link>https://esp-engineering.com/en/events/precision-fair-2026/</link><guid isPermaLink="true">https://esp-engineering.com/en/events/precision-fair-2026/</guid><description>Trade fair for precision technology in the Netherlands. We are on site.</description><pubDate>Mon, 21 Sep 2026 12:35:33 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://esp-engineering.com/assets/img/fmc.jpg&quot; alt=&quot;Precision Fair 2026&quot; /&gt;&lt;/p&gt;&lt;p&gt;The Precision Fair brings together precision mechanics, optics, metrology and suppliers. It runs on 18 and 19 November 2026 in ’s-Hertogenbosch and is one of the densest meeting points in the field, well beyond the Netherlands.&lt;/p&gt;&lt;p&gt;We are there as visitors. Anyone arriving with a task where micrometres matter will find more people worth talking to in two days than in a usual month. Get in touch beforehand if we should meet.&lt;/p&gt;</content:encoded><category>Trade fair</category></item><item><title>How to Write a Spec for a Custom Machine</title><link>https://esp-engineering.com/en/insights/custom-machine-specification/</link><guid isPermaLink="true">https://esp-engineering.com/en/insights/custom-machine-specification/</guid><description>How to write a specification for a custom machine: a practical checklist covering goals, tolerances, accuracy versus repeatability, environment and acceptance.</description><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://esp-engineering.com/assets/showcases/duv-alignment-stations/hero.jpg&quot; alt=&quot;esp engineering alignment machine on its granite base in the assembly hall&quot; /&gt;&lt;/p&gt;&lt;p&gt;To write a good specification for a custom machine, describe the outcome you need in measurable terms: the process the machine performs, the positioning and process tolerances it must hold, the throughput at those tolerances, the environment it runs in, the interfaces it connects to, and the tests that decide whether it is accepted. A specification is not a wish list of features. It is the contract that lets a builder quote the right machine and lets you prove, on handover, that you got it.&lt;/p&gt;
&lt;p&gt;Most specifications we receive are strong on what the machine should &lt;em&gt;do&lt;/em&gt; and thin on how &lt;em&gt;well&lt;/em&gt; and &lt;em&gt;how it will be judged&lt;/em&gt;. That gap is where budgets and schedules go wrong. This checklist is the structure we wish every incoming enquiry followed, written from the side that has to build the machine and hit the numbers.&lt;/p&gt;
&lt;h2 id=&quot;start-with-the-outcome-not-the-machine&quot;&gt;Start with the outcome, not the machine&lt;/h2&gt;
&lt;p&gt;Begin with the job to be done, not a mechanism you already have in mind. State the part or product that goes in, what comes out, and the step the machine performs on it: align, dispense, press, measure, join, inspect. Give the builder the input variability too. A machine that handles one perfectly clean substrate is a different machine from one that must tolerate the batch-to-batch spread you actually see in production.&lt;/p&gt;
&lt;p&gt;Fixing the mechanism too early is the most expensive mistake in a spec. If you write “a six-axis robot places the lens,” you have quietly ruled out a simpler, stiffer, cheaper fixed-axis solution that might hold your tolerance better. Describe the requirement; let the concept phase find the mechanism. At esp we like to say we look for not the first solution, but the best one, and a spec that over-constrains the concept takes that choice away before it starts.&lt;/p&gt;
&lt;h2 id=&quot;separate-accuracy-repeatability-and-resolution&quot;&gt;Separate accuracy, repeatability and resolution&lt;/h2&gt;
&lt;p&gt;This is the single most common source of mismatched expectations, so it earns its own section. Accuracy, repeatability and resolution are three different things, and a machine can be excellent at one while poor at another.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accuracy&lt;/strong&gt; is how close the machine gets to the &lt;em&gt;true&lt;/em&gt; commanded position or value. It captures systematic error: a scale that reads slightly long, a stage that droops under load.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repeatability&lt;/strong&gt; is how tightly the machine returns to the &lt;em&gt;same&lt;/em&gt; position when you command it again and again. It captures random scatter, and it is usually far better than accuracy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolution&lt;/strong&gt; is the smallest increment the machine can command or detect. Fine resolution does not imply either accuracy or repeatability; it only sets the size of the step.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The classic target picture makes the difference concrete:&lt;/p&gt;
&lt;figure class=&quot;ard&quot;&gt; &lt;svg viewBox=&quot;0 0 560 176&quot; role=&quot;img&quot; aria-label=&quot;Accuracy versus repeatability, shown as shot groups on a target&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; class=&quot;ard__svg&quot;&gt; &lt;title&gt;Accuracy versus repeatability, shown as shot groups on a target&lt;/title&gt; &lt;g transform=&quot;translate(0, 0)&quot;&gt;  &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;46&quot; class=&quot;ard__ring&quot; fill=&quot;none&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt; &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;30&quot; class=&quot;ard__ring&quot; fill=&quot;none&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt; &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;14&quot; class=&quot;ard__ring ard__ring--bull&quot; fill=&quot;none&quot; stroke=&quot;#515d6e&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt;  &lt;line x1=&quot;60&quot; y1=&quot;8&quot; x2=&quot;60&quot; y2=&quot;112&quot; class=&quot;ard__cross&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1&quot; opacity=&quot;0.6&quot;&gt;&lt;/line&gt; &lt;line x1=&quot;8&quot; y1=&quot;60&quot; x2=&quot;112&quot; y2=&quot;60&quot; class=&quot;ard__cross&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1&quot; opacity=&quot;0.6&quot;&gt;&lt;/line&gt;  &lt;circle cx=&quot;38&quot; cy=&quot;46&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;78&quot; cy=&quot;40&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;52&quot; cy=&quot;76&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;84&quot; cy=&quot;70&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;42&quot; cy=&quot;82&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;66&quot; cy=&quot;58&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;58&quot; cy=&quot;34&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;  &lt;text x=&quot;60&quot; y=&quot;150&quot; text-anchor=&quot;middle&quot; class=&quot;ard__label&quot; fill=&quot;#142542&quot; font-family=&quot;sans-serif&quot; font-size=&quot;11&quot; font-weight=&quot;700&quot;&gt;Accurate, not repeatable&lt;/text&gt; &lt;text x=&quot;60&quot; y=&quot;166&quot; text-anchor=&quot;middle&quot; class=&quot;ard__sub&quot; fill=&quot;#515d6e&quot; font-family=&quot;sans-serif&quot; font-size=&quot;9.5&quot;&gt;centred on average, wide spread&lt;/text&gt; &lt;/g&gt;&lt;g transform=&quot;translate(200, 0)&quot;&gt;  &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;46&quot; class=&quot;ard__ring&quot; fill=&quot;none&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt; &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;30&quot; class=&quot;ard__ring&quot; fill=&quot;none&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt; &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;14&quot; class=&quot;ard__ring ard__ring--bull&quot; fill=&quot;none&quot; stroke=&quot;#515d6e&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt;  &lt;line x1=&quot;60&quot; y1=&quot;8&quot; x2=&quot;60&quot; y2=&quot;112&quot; class=&quot;ard__cross&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1&quot; opacity=&quot;0.6&quot;&gt;&lt;/line&gt; &lt;line x1=&quot;8&quot; y1=&quot;60&quot; x2=&quot;112&quot; y2=&quot;60&quot; class=&quot;ard__cross&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1&quot; opacity=&quot;0.6&quot;&gt;&lt;/line&gt;  &lt;circle cx=&quot;80&quot; cy=&quot;78&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;86&quot; cy=&quot;82&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;82&quot; cy=&quot;86&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;88&quot; cy=&quot;76&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;84&quot; cy=&quot;81&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;79&quot; cy=&quot;84&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;  &lt;text x=&quot;60&quot; y=&quot;150&quot; text-anchor=&quot;middle&quot; class=&quot;ard__label&quot; fill=&quot;#142542&quot; font-family=&quot;sans-serif&quot; font-size=&quot;11&quot; font-weight=&quot;700&quot;&gt;Repeatable, not accurate&lt;/text&gt; &lt;text x=&quot;60&quot; y=&quot;166&quot; text-anchor=&quot;middle&quot; class=&quot;ard__sub&quot; fill=&quot;#515d6e&quot; font-family=&quot;sans-serif&quot; font-size=&quot;9.5&quot;&gt;tight cluster, biased off target&lt;/text&gt; &lt;/g&gt;&lt;g transform=&quot;translate(400, 0)&quot;&gt;  &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;46&quot; class=&quot;ard__ring&quot; fill=&quot;none&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt; &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;30&quot; class=&quot;ard__ring&quot; fill=&quot;none&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt; &lt;circle cx=&quot;60&quot; cy=&quot;60&quot; r=&quot;14&quot; class=&quot;ard__ring ard__ring--bull&quot; fill=&quot;none&quot; stroke=&quot;#515d6e&quot; stroke-width=&quot;1.4&quot;&gt;&lt;/circle&gt;  &lt;line x1=&quot;60&quot; y1=&quot;8&quot; x2=&quot;60&quot; y2=&quot;112&quot; class=&quot;ard__cross&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1&quot; opacity=&quot;0.6&quot;&gt;&lt;/line&gt; &lt;line x1=&quot;8&quot; y1=&quot;60&quot; x2=&quot;112&quot; y2=&quot;60&quot; class=&quot;ard__cross&quot; stroke=&quot;#cad3e0&quot; stroke-width=&quot;1&quot; opacity=&quot;0.6&quot;&gt;&lt;/line&gt;  &lt;circle cx=&quot;57&quot; cy=&quot;58&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;62&quot; cy=&quot;63&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;60&quot; cy=&quot;56&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;58&quot; cy=&quot;62&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;63&quot; cy=&quot;60&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;61&quot; cy=&quot;64&quot; r=&quot;3.4&quot; class=&quot;ard__shot&quot; fill=&quot;#2464b0&quot; stroke=&quot;#ffffff&quot; stroke-width=&quot;1&quot;&gt;&lt;/circle&gt;  &lt;text x=&quot;60&quot; y=&quot;150&quot; text-anchor=&quot;middle&quot; class=&quot;ard__label&quot; fill=&quot;#142542&quot; font-family=&quot;sans-serif&quot; font-size=&quot;11&quot; font-weight=&quot;700&quot;&gt;Accurate and repeatable&lt;/text&gt; &lt;text x=&quot;60&quot; y=&quot;166&quot; text-anchor=&quot;middle&quot; class=&quot;ard__sub&quot; fill=&quot;#515d6e&quot; font-family=&quot;sans-serif&quot; font-size=&quot;9.5&quot;&gt;tight cluster on the target&lt;/text&gt; &lt;/g&gt; &lt;/svg&gt; &lt;/figure&gt; 
&lt;p&gt;Why does the distinction matter for your spec? Because it decides both cost and design. Many precision tasks are governed by repeatability, not absolute accuracy. If the machine measures a feature relative to a reference on the same part, or teaches a position once and returns to it, you need tight repeatability and can tolerate a modest systematic offset, which is cheaper to build. If the machine must hit a coordinate defined in an external CAD frame with no local reference, you need absolute accuracy, which usually means metrology-grade scales, error mapping and thermal control. Specify the one you actually need. Asking for absolute accuracy when repeatability would do can multiply the cost of a stage for no benefit.&lt;/p&gt;
&lt;p&gt;State each number with its conditions. “Repeatability 2 microns” is ambiguous; “bidirectional repeatability of 2 microns at the tool point, over the full 300 mm travel, at 22 degrees Celsius plus or minus 1” is a spec a builder can design to and measure against. Note the direction: bidirectional figures include the effect of mechanical backlash and are always looser than unidirectional ones. Where a recognised method exists, name it. Positioning accuracy and repeatability of numerically controlled axes are defined in ISO 230-2, and pose accuracy and repeatability of industrial robots in ISO 9283. Pointing at the standard removes argument later about how a number was measured.&lt;/p&gt;
&lt;h2 id=&quot;put-numbers-on-throughput-and-yield&quot;&gt;Put numbers on throughput and yield&lt;/h2&gt;
&lt;p&gt;A tolerance figure alone is only half a spec. The other half is how fast the machine must produce parts &lt;em&gt;while holding that tolerance&lt;/em&gt;, because the two trade against each other. State the required cycle time or units per hour at the specified precision, not at the machine’s fastest unconstrained speed. If throughput is only meaningful once yield is counted, say so: a stated good-parts-per-hour target, measured across a realistic run rather than a handful of ideal cycles, is far more honest than a raw cycle time.&lt;/p&gt;
&lt;p&gt;Be explicit about the duty cycle. A machine that runs a few hours a day for prototyping and one that runs three shifts have different bearings, drives, cooling and maintenance intervals, even at identical precision. Uptime and mean time between interventions belong here too, if availability matters to your line.&lt;/p&gt;
&lt;h2 id=&quot;describe-the-environment-and-the-interfaces&quot;&gt;Describe the environment and the interfaces&lt;/h2&gt;
&lt;p&gt;A precision machine is only as stable as the room around it, so the spec has to describe that room. Include the ranges the machine must work across, not just a nominal figure:&lt;/p&gt;
&lt;figure class=&quot;cmp&quot;&gt; &lt;div class=&quot;cmp__scroll&quot; tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Environment and interface items that belong in a machine specification&quot;&gt; &lt;table class=&quot;cmp__table&quot;&gt; &lt;caption class=&quot;cmp__caption&quot;&gt;Environment and interface items that belong in a machine specification&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Category&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Specify&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Why it drives the design&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;th scope=&quot;row&quot;&gt;Thermal&lt;/th&gt;&lt;td&gt;Ambient range and rate of change; any local gradients&lt;/td&gt;&lt;td&gt;Sets whether the structure needs athermal design, temperature control or error mapping&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;th scope=&quot;row&quot;&gt;Vibration&lt;/th&gt;&lt;td&gt;Floor vibration spectrum; nearby sources&lt;/td&gt;&lt;td&gt;Decides isolation, structural stiffness and achievable settling time&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;th scope=&quot;row&quot;&gt;Cleanliness&lt;/th&gt;&lt;td&gt;Cleanroom class or particle limit, if any&lt;/td&gt;&lt;td&gt;Constrains materials, lubricants, actuators and enclosure design&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;th scope=&quot;row&quot;&gt;Utilities&lt;/th&gt;&lt;td&gt;Power, compressed air, vacuum, cooling water, gases&lt;/td&gt;&lt;td&gt;Missing utility assumptions are a common site-acceptance surprise&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;th scope=&quot;row&quot;&gt;Footprint&lt;/th&gt;&lt;td&gt;Floor area, height, door and access constraints&lt;/td&gt;&lt;td&gt;Determines layout, service access and whether it ships in one piece&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;th scope=&quot;row&quot;&gt;Data &amp;amp; control&lt;/th&gt;&lt;td&gt;Required interfaces: PLC, MES, OPC UA, logging&lt;/td&gt;&lt;td&gt;Defines the control architecture and how the machine joins your line&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;th scope=&quot;row&quot;&gt;Safety &amp;amp; compliance&lt;/th&gt;&lt;td&gt;Target market, CE, emergency-stop concept&lt;/td&gt;&lt;td&gt;Shapes guarding, wiring and the risk-assessment scope from day one&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;/figure&gt; 
&lt;p&gt;Interfaces deserve the same care as tolerances. Name the fieldbus, the data model, the file formats and the handshake with upstream and downstream equipment. If the machine must report to a manufacturing execution system or log traceability data per part, that is a functional requirement with real design weight, not a detail to settle after build.&lt;/p&gt;
&lt;h2 id=&quot;write-acceptance-criteria-you-can-actually-run&quot;&gt;Write acceptance criteria you can actually run&lt;/h2&gt;
&lt;p&gt;The most valuable part of a specification is the section most often missing: how you will prove the machine meets it. For every headline requirement, write the test that confirms it, the conditions under which the test runs, the number of runs, and the pass criterion. “Repeatability shall be verified by 30 approaches to three positions across the travel, measured with a calibrated interferometer, at the specified ambient.” A requirement without an attached test is an opinion.&lt;/p&gt;
&lt;p&gt;Split acceptance into a factory acceptance test (FAT) at the builder’s site and a site acceptance test (SAT) at yours. The FAT proves function and performance where the machine was built, using agreed sample parts and instruments, before it ships. The SAT re-checks the things that only your environment and utilities can reveal after installation. For process-automation systems this split, and an optional integration test, is described in IEC 62381; you do not have to follow it formally, but its structure of FAT, SAT and site integration is a sound template. Agree the sample parts, the reference instruments, the environmental conditions and the sign-off responsibilities &lt;em&gt;in the spec&lt;/em&gt;, not on the day. Acceptance disputes almost always trace back to criteria that were never written down.&lt;/p&gt;
&lt;h2 id=&quot;a-specification-is-a-conversation-not-a-wall&quot;&gt;A specification is a conversation, not a wall&lt;/h2&gt;
&lt;p&gt;A tight spec is not one that dictates every screw. It is one that pins down the requirements that matter and leaves the engineering open. The best projects we run start from a spec that is measurable and honest about its constraints, then improve in the concept phase because the builder can see &lt;em&gt;why&lt;/em&gt; each number is there and can suggest a better way to hit it. Tell the builder what is fixed, what is a target, and what is negotiable. That single distinction saves more time than any template.&lt;/p&gt;
&lt;p&gt;If a requirement is uncertain, say so and mark it as a target to be confirmed, rather than inventing a number. A precision-machine builder would far rather see an honest range than a false decimal. When we quote, we would rather ask one more question than build to a guess.&lt;/p&gt;
&lt;p&gt;esp engineering builds custom precision machines for &lt;a href=&quot;https://esp-engineering.com/en/projects?sector=photonics&quot;&gt;photonics&lt;/a&gt;, &lt;a href=&quot;https://esp-engineering.com/en/projects?sector=semiconductors&quot;&gt;semiconductors&lt;/a&gt;, &lt;a href=&quot;https://esp-engineering.com/en/projects?sector=medical&quot;&gt;medical technology&lt;/a&gt; and &lt;a href=&quot;https://esp-engineering.com/en/projects?sector=sensing&quot;&gt;sensing&lt;/a&gt;, combining &lt;a href=&quot;https://esp-engineering.com/en/solutions&quot;&gt;mechanics, electronics and software&lt;/a&gt; under one roof, so a single team owns the tolerance, the throughput and the acceptance test together. You can see how that plays out across &lt;a href=&quot;https://esp-engineering.com/en/projects&quot;&gt;our projects&lt;/a&gt;. If you are drafting a specification and want a second pair of eyes before it goes out, &lt;a href=&quot;https://esp-engineering.com/en/contact&quot;&gt;tell us about your project&lt;/a&gt;; we will read it as the people who would have to build it.&lt;/p&gt;</content:encoded><category>Insight</category></item><item><title>20 years of esp engineering</title><link>https://esp-engineering.com/en/events/twenty-years-esp-engineering/</link><guid isPermaLink="true">https://esp-engineering.com/en/events/twenty-years-esp-engineering/</guid><description>Two decades, celebrated with customers, partners and companions: guided tours through workshop and lab in the afternoon, apéro, conversations and music in the evening.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://esp-engineering.com/assets/img/building.jpg&quot; alt=&quot;20 years of esp engineering&quot; /&gt;&lt;/p&gt;&lt;p&gt;For 20 years we have stood for innovation, competence and passion. On 12 June 2026 we celebrated that at our site at Strahlholz 13 in Gais, together with long-standing customers, partners and companions.&lt;/p&gt;&lt;p&gt;The invitation went to everyone who wanted to get to know our team, our working culture and our projects a little better.&lt;/p&gt;&lt;p&gt;What stayed with us is one thing above all: it is the people who make a company. Twenty years are a milestone, but for us they are mostly the drive to make the next twenty even better.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Guided tours in the afternoon&lt;/li&gt;&lt;li&gt;Drinks, conversations, surprises&lt;/li&gt;&lt;li&gt;A relaxed close with music in the evening&lt;/li&gt;&lt;/ul&gt;</content:encoded><category>Anniversary</category></item></channel></rss>