Hi there 馃憢

I’m Marcin Lukaszewski, and I’ve been building control systems on EPICS for over 10 years.

Here, I share tips and tricks to make life easier for control system engineers working with EPICS.

I hope you find something helpful. Feel free to reach out鈥擨’m always happy to connect!

Happy engineering! 馃槉

Device Integration

Device integration is hard. Every control system engineer knows this. If we鈥檙e lucky, the device we鈥檙e trying to run via EPICS is a mass-produced, off-the-shelf bit of kit that鈥檚 already been integrated. In this case, it鈥檚 relatively easy - there鈥檚 a high chance that the support exists somewhere in the popular repositories. It鈥檚 then 鈥渏ust" a matter of installing, testing, and we can call it a day. However, more often than not, the device we need to integrate comes from a small company that鈥檚 a leader in a very niche field of science or engineering....

September 20, 2024 路 3 min

Epics Database Override

Recently, I chatted with one of the engineers I work with about the problem of supporting several beamlines/projects with a slightly different version of the software for a given device. While this might sound like an easy task, it becomes a burden when the number of devices and projects grow. We discussed several strategies for accomplishing this at scale, but I would like to start with the simplest solution first to learn its pros and cons....

September 13, 2024 路 5 min

On Socat

Sometimes, a device does not respond as intended. This could be due to a firmware problem, incorrect protocol implementation on the device, wrong IOC configuration, inaccurate metadata, or everything in between. In such cases, it鈥檚 quite handy to know what exactly is being sent to the device to determine which side is wrong. The easiest way to check this is by using the IOC asynReport facility and enabling logging to monitor the data being sent....

August 30, 2024 路 2 min

Robust Automation with Busy record

Let鈥檚 consider a common scenario in control system development: You鈥檝e created an automation feature that orchestrates multiple devices via channel access. The sequence of actions is simple, but you must ensure that each step begins only after the previous one has completed successfully. How can you achieve this reliably? Here are three options: Execute a step and wait some time before executing the next one. Execute a step and poll the device to check if the step has been finished Use the native Channel Access feature - putNotify to do the job....

August 22, 2024 路 4 min