
Software Integration
Ignition
Ignition is a leading SCADA platform that can be used to support integration across multiple PLCs and IO devices. It also provides modules that add Historian, Reporting, Analytical and other functionality to a project. In many cases, Ignition is used primarily as a SCADA system; however, it also provides strong integration capability to bridge databases, online services and inter-device communication.
Node-RED
Node-RED is a low-code, highly versatile tool that is used to integrate between multiple platforms. For customers, this has provided a platform to link multiple IO devices into a centralised historian. Node-RED can also support custom transformations on the fly and also trigger events, such as automatic emails and messaging, based on the IO data in the field. In addition, Node-RED has the capability to host a web dashboard. This can be customised beyond the low-code solution using AngularJS to meet customer requirements.
Databases
SQL Server
SQL Server is the most common database type we encounter with customers. This database is ACID compliant, which means that each transaction either completes in full or is rolled back on failure, so the data is never left half-written. In addition, SQL Server allows for partitioning of tables, which becomes important as tables grow to tens of millions of rows. We have in the past developed an in-house Historian that utilised SQL Server to historise data in the field. This required a deep understanding of how to design the schema in such a way that the database does not fall over under large datasets and stays performant using appropriate partitions.
Systems Technologies
.NET
.NET is a framework used by us to develop services that add functionality to SCADA and integration systems. In previous systems, we have used the .NET Framework to write a service that tracked the runtimes of motors and pumps, then periodically pushed the data into a third-party maintenance system via the SOAP protocol. This unified the site data and the maintenance scheduling to provide accurate maintenance plans per device.
Rust
Rust is a modern language that has gained immense popularity for its focus on safety and performance. Its compiler guarantees memory safety and prevents data races in concurrent code, which removes whole classes of bugs before the software is deployed. Automation Mechatronics has used Rust in many projects, since this greater confidence in its reliability reduces the risk of deployment in production environments. These solutions often interface via a REST endpoint and run as a service in the background.
Python
Python is used primarily by us in the Ignition SCADA system; however, we have also developed services in Python to read data from the PLC and historise that data. Python code is highly adaptive and can be used to produce and adapt solutions effortlessly. This increases productivity and reduces development time.
RabbitMQ
RabbitMQ is a message broker that uses AMQP (and also supports MQTT) to manage the messages within a microservices architecture. We have developed numerous projects that have a microservices architecture and use RabbitMQ to handle the messages between each service. RabbitMQ preserves the order of messages within a queue, and messages are acknowledged on receipt. In addition, it has been used to relay messages downstream across boundaries in a parallel redundancy system architecture.
Web Technologies
Grafana
Grafana is an open-source solution for dashboard visualisation of data. Grafana has the ability to read data directly out of a database and present it in a format that is suitable for the customer. It is also able to use templates that can modify the query to the database. In addition, it can be further extended using React and a custom backend service to enable write functionality back into a database or IO device. Grafana has high appeal for its functionality and its self-serve dashboards.
Angular
Angular is an enterprise framework developed by Google to build Single Page Applications (SPAs). Angular is most suitable for large projects, since it provides enterprise-grade tooling for the whole project. In addition, it is opinionated about the layout of code, which in turn makes it consistent across developers. This consistency across developers is highly desirable, since it provides a long-term maintainable front-end solution. Automation Mechatronics has developed many SPAs to support the backend integration of the services we code.
React
React is a versatile JavaScript library and the most popular front-end library in use today. The main area where we use React is the development of plugins/modules in React-based environments like Grafana and Ignition. React makes it very easy and quick to produce solutions; however, it demands discipline in coding practices. AMI possesses the maturity of disciplined coding methods that is required.










