SlideShare a Scribd company logo
1 of 39
Download to read offline
© Integrated Computer Solutions, Inc. All Rights Reserved
QtSerialBus: Using Modbus
and CAN bus with Qt
Jeff Tranter <jtranter@ics.com>
Integrated Computer Solutions, Inc.
© Integrated Computer Solutions, Inc. All Rights Reserved
Agenda
• What is CAN bus?
• What is Modbus?
• The QtSerialBus Module
• What Hardware and Platforms are Supported?
• Qt APIs
• Code Examples
• Demonstration
• Areas of Possible Future Work
• Summary
• References
© Integrated Computer Solutions, Inc. All Rights Reserved
What is CAN bus?
• Controller Area Network bus.
• Bus standard that allows microcontrollers and devices to communicate
with each other in applications without a host computer.
• Multi-master serial bus where all nodes are connected to each other
through a two wire bus.
• Message-based protocol.
• Originally designed for multiplexed electrical wiring within automobiles,
but also used in many other contexts.
© Integrated Computer Solutions, Inc. All Rights Reserved
What is CAN bus?
© Integrated Computer Solutions, Inc. All Rights Reserved
What is CAN bus?
© Integrated Computer Solutions, Inc. All Rights Reserved
What is CAN bus?
© Integrated Computer Solutions, Inc. All Rights Reserved
What is CAN bus?
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Modbus?
• Serial communications protocol commonly used
for connecting industrial electronic devices.
• Allows communication among multiple devices
connected to the same network, often to connect
a supervisory computer with a remote terminal
unit in Supervisory Control and Data Acquisition
(SCADA) systems.
• Originally developed by Modicon in 1979 for use
with its programmable logic controllers (PLCs).
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Modbus?
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Modbus?
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Modbus?
© Integrated Computer Solutions, Inc. All Rights Reserved
The QtSerialBus Module
• New module introduced as technical preview in Qt 5.6.0.
• Supports CAN bus and Modbus.
• May support other serial protocols in the future.
• Licensed like most Qt modules (LGPLv3, GPLv2, GPLv3 or commercial).
• git repo: http://code.qt.io/cgit/qt/qtserialbus.git
• Main developers and maintainers are Alex Blasche (CAN bus) and Karsten
Heimrich (Modbus) of The Qt Company.
© Integrated Computer Solutions, Inc. All Rights Reserved
What Hardware and Platforms are Supported?
For CAN bus, currently supports the following back ends:
• SocketCAN, which uses Linux sockets and open source drivers.
• Peak CAN, which supports PCAN adaptors from PEAK-System Technik
GmbH.
• TinyCAN, with support for Tiny-CAN adapters from MHS Elektronik.
• VectorCAN, supporting Vector Informatik CAN adapters.
© Integrated Computer Solutions, Inc. All Rights Reserved
What Hardware and Platforms are Supported?
For Modbus:
• One implementation (not a plugin) which doesn't depend on any external
libraries.
• Uses Qt's QtSerialPort and networking APIs.
• Supports RTU (serial) and TCP (Ethernet) communications.
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt APIs
• C++ only, no QML
• To add to qmake projects: QT += serialbus
• Module include file: #include <QtSerialBus>
• logging categories:
• qt.modbus (standard)
• qt.modbus.lowlevel (low-level packets)
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt APIs - CAN bus
Six classes:
QcanBus - Handles registration and creation of bus backends
QcanBusDevice::Filter - Defines a filter for CAN bus messages
QcanBusDevice - The interface class for CAN bus
QcanBusFactory - Factory class used as the plugin interface
QcanBusFrame - Container class representing a single CAN frame
QcanBusFrame::TimeStamp - Timestamp information with µsec precision
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt APIs - Modbus
14 classes:
QModbusClient - The interface to send Modbus requests
QmodbusDataUnit - Container class representing entries in Modbus
register
QmodbusDevice - base class for QModbusServer and QModbusClient
QmodbusDeviceIdentification - Container class representing the physical
and functional description of a Modbus server
QmodbusExceptionResponse - Container class containing the function and
error code inside a Modbus ADU
QmodbusPdu - Abstract container class containing the function code and
payload that is stored inside a Modbus ADU
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt APIs – Modbus (cont'd)
QmodbusRequest - Container class containing the function code and
payload that is stored inside a Modbus ADU
QmodbusResponse - Container class containing the function code and
payload that is stored inside a Modbus ADU
QmodbusReply - Contains the data for a request sent with a
QModbusClient derived class
QmodbusRtuSerialMaster - Represents a Modbus client that uses a serial
bus for its communication with the Modbus server
QmodbusRtuSerialSlave - Represents a Modbus server that uses a serial
port for its communication with the Modbus client
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt APIs – Modbus (cont'd)
QmodbusServer - The interface to receive and process Modbus requests
QmodbusTcpClient - The interface class for Modbus TCP client device
QmodbusTcpServer - Represents a Modbus server that uses a TCP server
for its communication with the Modbus client
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - CAN bus
Basic Steps:
1. Create a device, specifying plugin and device name.
2. Connect.
3. Create data frames.
4. Send data frames.
5. Disconnect when done.
QCanBusDevice emits signals: errorOccurred, framesReceived, framesWritten,
stateChanged. To receive frames, connect to signal framesReceived.
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - CAN bus
// Create device.
QCanBusDevice *device = QCanBus::instance()->createDevice("socketcan", "vcan0");
if (device != nullptr) {
qDebug() << "Created device, state is:" << device->state();
} else {
qFatal("Unable to create CAN device.");
}
// Connect.
if (device->connectDevice()) {
qDebug() << "Connected, state is:" << device->state();
} else {
qDebug() << "Connect failed, error is:" << device->errorString();
}
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - CAN bus (cont'd)
// Create a data frame.
QCanBusFrame frame(QCanBusFrame::DataFrame, "12345");
// Send it.
if (device->writeFrame(frame)) {
qDebug() << "Wrote frame, state is:" << device->state();
} else {
qDebug() << "Write failed, error is:" << device->errorString();
}
// Disconnect.
device->disconnectDevice();
qDebug() << "Disconnected, state is:" << device->state();
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - CAN bus
On Linux there is a virtual CAN driver for testing purposes which can be
loaded and created as below:
sudo modprobe can
sudo modprobe can_raw
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
ip link show vcan0
3: vcan0: <NOARP,UP,LOWER_UP> mtu 16 qdisc noqueue state UNKNOWN
link/can
© Integrated Computer Solutions, Inc. All Rights Reserved
More Complete Example – CAN bus
© Integrated Computer Solutions, Inc. All Rights Reserved
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - Modbus
• Unlike CAN bus which is peer to peer, Modbus is client/server.
• Client sends request and gets response from server.
• Master/Slave arrangement where the Master is a Client and the Slave is a
Server.
• Confusing terminology: there is a single Modbus client (master) and
multiple Modbus servers (slaves).
• Support for serial devices and TCP network devices.
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - Modbus
QObject
QModbusDevice
QModbusClient QModbusServer
QModbusSerialMaster QModbusTcpClient QModbusRtuSerialSlave QModbusTcpServer
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - Modbus
Basic steps for a TCP client (others are similar):
1. Create a QModbusTcpClient()
2. Set connection parameters with setConnectionParameter()
3. Connect using connectDevice()
4. Call as needed:
sendRawRequest()
sendReadRequest()
sendReadWriteRequest()
sendWriteRequest()
4. When done, call disconnectDevice()
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples - Modbus
// Create device.
QModbusTcpClient *device = new QModbusTcpClient();
if (device != nullptr) {
qDebug() << "Created device, state is:" << device->state();
} else {
qFatal("Unable to create Modbus TCP client device.");
}
// Set connection parameters. Defaults to local host port 502.
// Instead use TCP port 1502 as it is non-privileged.
device->setConnectionParameter(QModbusDevice::NetworkPortParameter, 1502);
// Connect.
if (device->connectDevice()) {
qDebug() << "Connected, state is:" << device->state();
} else {
qDebug() << "Connect failed, error is:" << device->errorString();
}
© Integrated Computer Solutions, Inc. All Rights Reserved
Code Examples – Modbus (cont'd)
// Create ADU.
QVector<quint16> data(4);
QModbusDataUnit adu(QModbusDataUnit::Coils, 1, data);
// Send read request to a server at address 1.
QModbusReply *reply = device->sendReadRequest(adu, 1);
if (reply != nullptr) {
qDebug() << "Sent read request, state is:" << device->state();
qDebug() << reply;
} else {
qDebug() << "Send of read request failed, error is:" << device->errorString();
}
// Disconnect.
device->disconnectDevice();
qDebug() << "Disconnected, state is:" << device->state();
© Integrated Computer Solutions, Inc. All Rights Reserved
More Complete Example - Modbus
© Integrated Computer Solutions, Inc. All Rights Reserved
© Integrated Computer Solutions, Inc. All Rights Reserved
Documentation
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt Code Examples
© Integrated Computer Solutions, Inc. All Rights Reserved
Areas of Possible Future Work
• APIs final in Qt 5.8.0
• Support/plugins for more hardware back ends
• Higher level protocols?
© Integrated Computer Solutions, Inc. All Rights Reserved
Summary
© Integrated Computer Solutions, Inc. All Rights Reserved
References
1. https://en.wikipedia.org/wiki/CAN_bus
2. https://en.wikipedia.org/wiki/Modbus
3. https://doc-snapshots.qt.io/qt5-dev/qtserialbus-index.html
4. http://code.qt.io/cgit/qt/qtserialbus.git/
5. http://www.modbus.org
6. http://opengarages.org
7. ftp://ftp.ics.com/pub/pickup/qtserialbusexamples.zip
© Integrated Computer Solutions, Inc. All Rights Reserved
Questions?
© Integrated Computer Solutions, Inc. All Rights Reserved
QtSerialBus: Using Modbus
and CAN bus with Qt
Jeff Tranter <jtranter@ics.com>
Integrated Computer Solutions, Inc.

More Related Content

What's hot

Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIICS
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4ICS
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVICS
 
Basics of Model/View Qt programming
Basics of Model/View Qt programmingBasics of Model/View Qt programming
Basics of Model/View Qt programmingICS
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IICS
 
Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6ICS
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicICS
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickICS
 
Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4ICS
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Applicationaccount inactive
 
Qt test framework
Qt test frameworkQt test framework
Qt test frameworkICS
 
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentQVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentICS
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Pasi Kellokoski
 
Android Booting Sequence
Android Booting SequenceAndroid Booting Sequence
Android Booting SequenceJayanta Ghoshal
 

What's hot (20)

Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
 
Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1
 
Basics of Model/View Qt programming
Basics of Model/View Qt programmingBasics of Model/View Qt programming
Basics of Model/View Qt programming
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 
Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6
 
02 - Basics of Qt
02 - Basics of Qt02 - Basics of Qt
02 - Basics of Qt
 
Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business Logic
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4
 
UI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QMLUI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QML
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 
Qt test framework
Qt test frameworkQt test framework
Qt test framework
 
Advanced C - Part 2
Advanced C - Part 2Advanced C - Part 2
Advanced C - Part 2
 
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentQVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI development
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
 
Android Booting Sequence
Android Booting SequenceAndroid Booting Sequence
Android Booting Sequence
 

Viewers also liked

[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded FrameworkICS
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the expertsICS
 
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google MockICS
 
Industrial Automation training
Industrial Automation trainingIndustrial Automation training
Industrial Automation trainingLalita Rayane
 
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёруДенис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёруYandex
 
Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...
Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...
Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...Elena Kotina
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgetsICS
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing moreICS
 
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt ProjectICS
 
[Webinar] Software: The Lifeblood of any Medical Device
[Webinar] Software: The Lifeblood of any Medical Device[Webinar] Software: The Lifeblood of any Medical Device
[Webinar] Software: The Lifeblood of any Medical DeviceICS
 
Modbus TCP/IP implementation in Siemens S7-300 PLC
Modbus TCP/IP implementation in Siemens S7-300 PLC Modbus TCP/IP implementation in Siemens S7-300 PLC
Modbus TCP/IP implementation in Siemens S7-300 PLC ITER-India, IPR
 
Automation Training With ITS PLC
Automation Training With ITS PLCAutomation Training With ITS PLC
Automation Training With ITS PLCLuis Correia
 
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest
 
Modbus Data Communication Systems
Modbus Data Communication SystemsModbus Data Communication Systems
Modbus Data Communication SystemsLiving Online
 
PLC-SCADA and automation
PLC-SCADA and automationPLC-SCADA and automation
PLC-SCADA and automationGaurav Sharma
 

Viewers also liked (17)

[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the experts
 
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
 
Industrial Automation training
Industrial Automation trainingIndustrial Automation training
Industrial Automation training
 
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёруДенис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
Денис Кормалев — Qt. Как выжить на минном поле. Советы сапёру
 
Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...
Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...
Возможности, применение и монетизация социальных API Mail.Ru на мобильных пла...
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgets
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
K NX system DDIS
K NX system DDIS K NX system DDIS
K NX system DDIS
 
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
 
[Webinar] Software: The Lifeblood of any Medical Device
[Webinar] Software: The Lifeblood of any Medical Device[Webinar] Software: The Lifeblood of any Medical Device
[Webinar] Software: The Lifeblood of any Medical Device
 
Modbus TCP/IP implementation in Siemens S7-300 PLC
Modbus TCP/IP implementation in Siemens S7-300 PLC Modbus TCP/IP implementation in Siemens S7-300 PLC
Modbus TCP/IP implementation in Siemens S7-300 PLC
 
Automation Training With ITS PLC
Automation Training With ITS PLCAutomation Training With ITS PLC
Automation Training With ITS PLC
 
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
 
Modbus Data Communication Systems
Modbus Data Communication SystemsModbus Data Communication Systems
Modbus Data Communication Systems
 
SIEMENS PLC S7-300&WINCC COURSE
SIEMENS PLC S7-300&WINCC COURSESIEMENS PLC S7-300&WINCC COURSE
SIEMENS PLC S7-300&WINCC COURSE
 
PLC-SCADA and automation
PLC-SCADA and automationPLC-SCADA and automation
PLC-SCADA and automation
 

Similar to [Webinar] QtSerialBus: Using Modbus and CAN bus with Qt

“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...
“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...
“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...Edge AI and Vision Alliance
 
Pushing Data from S7-1200 to Cloud
Pushing Data from S7-1200 to CloudPushing Data from S7-1200 to Cloud
Pushing Data from S7-1200 to CloudDMC, Inc.
 
MQTT enabling the smallest things
MQTT enabling the smallest thingsMQTT enabling the smallest things
MQTT enabling the smallest thingsIan Craggs
 
Hexagonal Architecture: The Standard for Qt Embedded Applications
Hexagonal Architecture: The Standard for Qt Embedded ApplicationsHexagonal Architecture: The Standard for Qt Embedded Applications
Hexagonal Architecture: The Standard for Qt Embedded ApplicationsBurkhard Stubert
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt UsersICS
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWSGrant Ellis
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWSGrant Ellis
 
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Jeffrey Holden
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationAmir Zmora
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarJanel Heilbrunn
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarICS
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt CommunicationAndreas Jakl
 
Is your MQTT broker IoT ready?
Is your MQTT broker IoT ready?Is your MQTT broker IoT ready?
Is your MQTT broker IoT ready?Eurotech
 
Future Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E A
Future Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E AFuture Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E A
Future Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E AGlobalLogic Croatia
 
F5 OpenShift Workshop
F5 OpenShift WorkshopF5 OpenShift Workshop
F5 OpenShift WorkshopTyler Hatton
 
KSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptxKSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptxNashet Ali
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)QAware GmbH
 
JDO 2019: What you should be aware of before setting up kubernetes on premise...
JDO 2019: What you should be aware of before setting up kubernetes on premise...JDO 2019: What you should be aware of before setting up kubernetes on premise...
JDO 2019: What you should be aware of before setting up kubernetes on premise...PROIDEA
 
Network-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQNetwork-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQICS
 

Similar to [Webinar] QtSerialBus: Using Modbus and CAN bus with Qt (20)

“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...
“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...
“Parallelizing Machine Learning Applications in the Cloud with Kubernetes: A ...
 
Pushing Data from S7-1200 to Cloud
Pushing Data from S7-1200 to CloudPushing Data from S7-1200 to Cloud
Pushing Data from S7-1200 to Cloud
 
MQTT enabling the smallest things
MQTT enabling the smallest thingsMQTT enabling the smallest things
MQTT enabling the smallest things
 
Hexagonal Architecture: The Standard for Qt Embedded Applications
Hexagonal Architecture: The Standard for Qt Embedded ApplicationsHexagonal Architecture: The Standard for Qt Embedded Applications
Hexagonal Architecture: The Standard for Qt Embedded Applications
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt Users
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWS
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWS
 
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
Is your MQTT broker IoT ready?
Is your MQTT broker IoT ready?Is your MQTT broker IoT ready?
Is your MQTT broker IoT ready?
 
Future Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E A
Future Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E AFuture Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E A
Future Intelligent Mobility with Adaptive AUTOSAR - Transforming Vehicle E/E A
 
F5 OpenShift Workshop
F5 OpenShift WorkshopF5 OpenShift Workshop
F5 OpenShift Workshop
 
KSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptxKSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptx
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
JDO 2019: What you should be aware of before setting up kubernetes on premise...
JDO 2019: What you should be aware of before setting up kubernetes on premise...JDO 2019: What you should be aware of before setting up kubernetes on premise...
JDO 2019: What you should be aware of before setting up kubernetes on premise...
 
my_resume(eng)
my_resume(eng)my_resume(eng)
my_resume(eng)
 
Network-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQNetwork-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQ
 

More from ICS

Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfICS
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...ICS
 
Overcoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarOvercoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarICS
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfICS
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfDesigning and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfICS
 
Quality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfQuality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfICS
 
Creating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfCreating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfICS
 
Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up ICS
 
Cybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfCybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfICS
 
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesMDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesICS
 
How to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionHow to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionICS
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsICS
 
IoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureIoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureICS
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...ICS
 
Qt Installer Framework
Qt Installer FrameworkQt Installer Framework
Qt Installer FrameworkICS
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsICS
 
Overcome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyOvercome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyICS
 
User Experience Design for IoT
User Experience Design for IoTUser Experience Design for IoT
User Experience Design for IoTICS
 
Software Bill of Materials - Accelerating Your Secure Embedded Development.pdf
Software Bill of Materials - Accelerating Your Secure Embedded Development.pdfSoftware Bill of Materials - Accelerating Your Secure Embedded Development.pdf
Software Bill of Materials - Accelerating Your Secure Embedded Development.pdfICS
 
5 Key Considerations at the Start of SaMD Development
5 Key Considerations at the Start of SaMD Development5 Key Considerations at the Start of SaMD Development
5 Key Considerations at the Start of SaMD DevelopmentICS
 

More from ICS (20)

Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdf
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
 
Overcoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarOvercoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues Webinar
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfDesigning and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
 
Quality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfQuality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdf
 
Creating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfCreating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdf
 
Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up
 
Cybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfCybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdf
 
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesMDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
 
How to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionHow to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management Solution
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
IoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureIoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with Azure
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
 
Qt Installer Framework
Qt Installer FrameworkQt Installer Framework
Qt Installer Framework
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
Overcome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyOvercome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case Study
 
User Experience Design for IoT
User Experience Design for IoTUser Experience Design for IoT
User Experience Design for IoT
 
Software Bill of Materials - Accelerating Your Secure Embedded Development.pdf
Software Bill of Materials - Accelerating Your Secure Embedded Development.pdfSoftware Bill of Materials - Accelerating Your Secure Embedded Development.pdf
Software Bill of Materials - Accelerating Your Secure Embedded Development.pdf
 
5 Key Considerations at the Start of SaMD Development
5 Key Considerations at the Start of SaMD Development5 Key Considerations at the Start of SaMD Development
5 Key Considerations at the Start of SaMD Development
 

Recently uploaded

Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxRTS corp
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxSasikiranMarri
 
What is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxWhat is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxTechnogeeks
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxAS Design & AST.
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flinkconfluent
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Key Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapKey Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapIshara Amarasekera
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive ReviewRevolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Reviewjw364beach
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024OpenMetadata
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
full course of software engineering mid term.pdf
full course of software engineering mid term.pdffull course of software engineering mid term.pdf
full course of software engineering mid term.pdfAbdul salam
 

Recently uploaded (20)

Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptx
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
 
What is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxWhat is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docx
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptx
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Key Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapKey Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery Roadmap
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive ReviewRevolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
full course of software engineering mid term.pdf
full course of software engineering mid term.pdffull course of software engineering mid term.pdf
full course of software engineering mid term.pdf
 

[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt

  • 1. © Integrated Computer Solutions, Inc. All Rights Reserved QtSerialBus: Using Modbus and CAN bus with Qt Jeff Tranter <jtranter@ics.com> Integrated Computer Solutions, Inc.
  • 2. © Integrated Computer Solutions, Inc. All Rights Reserved Agenda • What is CAN bus? • What is Modbus? • The QtSerialBus Module • What Hardware and Platforms are Supported? • Qt APIs • Code Examples • Demonstration • Areas of Possible Future Work • Summary • References
  • 3. © Integrated Computer Solutions, Inc. All Rights Reserved What is CAN bus? • Controller Area Network bus. • Bus standard that allows microcontrollers and devices to communicate with each other in applications without a host computer. • Multi-master serial bus where all nodes are connected to each other through a two wire bus. • Message-based protocol. • Originally designed for multiplexed electrical wiring within automobiles, but also used in many other contexts.
  • 4. © Integrated Computer Solutions, Inc. All Rights Reserved What is CAN bus?
  • 5. © Integrated Computer Solutions, Inc. All Rights Reserved What is CAN bus?
  • 6. © Integrated Computer Solutions, Inc. All Rights Reserved What is CAN bus?
  • 7. © Integrated Computer Solutions, Inc. All Rights Reserved What is CAN bus?
  • 8. © Integrated Computer Solutions, Inc. All Rights Reserved What is Modbus? • Serial communications protocol commonly used for connecting industrial electronic devices. • Allows communication among multiple devices connected to the same network, often to connect a supervisory computer with a remote terminal unit in Supervisory Control and Data Acquisition (SCADA) systems. • Originally developed by Modicon in 1979 for use with its programmable logic controllers (PLCs).
  • 9. © Integrated Computer Solutions, Inc. All Rights Reserved What is Modbus?
  • 10. © Integrated Computer Solutions, Inc. All Rights Reserved What is Modbus?
  • 11. © Integrated Computer Solutions, Inc. All Rights Reserved What is Modbus?
  • 12. © Integrated Computer Solutions, Inc. All Rights Reserved The QtSerialBus Module • New module introduced as technical preview in Qt 5.6.0. • Supports CAN bus and Modbus. • May support other serial protocols in the future. • Licensed like most Qt modules (LGPLv3, GPLv2, GPLv3 or commercial). • git repo: http://code.qt.io/cgit/qt/qtserialbus.git • Main developers and maintainers are Alex Blasche (CAN bus) and Karsten Heimrich (Modbus) of The Qt Company.
  • 13. © Integrated Computer Solutions, Inc. All Rights Reserved What Hardware and Platforms are Supported? For CAN bus, currently supports the following back ends: • SocketCAN, which uses Linux sockets and open source drivers. • Peak CAN, which supports PCAN adaptors from PEAK-System Technik GmbH. • TinyCAN, with support for Tiny-CAN adapters from MHS Elektronik. • VectorCAN, supporting Vector Informatik CAN adapters.
  • 14. © Integrated Computer Solutions, Inc. All Rights Reserved What Hardware and Platforms are Supported? For Modbus: • One implementation (not a plugin) which doesn't depend on any external libraries. • Uses Qt's QtSerialPort and networking APIs. • Supports RTU (serial) and TCP (Ethernet) communications.
  • 15. © Integrated Computer Solutions, Inc. All Rights Reserved Qt APIs • C++ only, no QML • To add to qmake projects: QT += serialbus • Module include file: #include <QtSerialBus> • logging categories: • qt.modbus (standard) • qt.modbus.lowlevel (low-level packets)
  • 16. © Integrated Computer Solutions, Inc. All Rights Reserved Qt APIs - CAN bus Six classes: QcanBus - Handles registration and creation of bus backends QcanBusDevice::Filter - Defines a filter for CAN bus messages QcanBusDevice - The interface class for CAN bus QcanBusFactory - Factory class used as the plugin interface QcanBusFrame - Container class representing a single CAN frame QcanBusFrame::TimeStamp - Timestamp information with µsec precision
  • 17. © Integrated Computer Solutions, Inc. All Rights Reserved Qt APIs - Modbus 14 classes: QModbusClient - The interface to send Modbus requests QmodbusDataUnit - Container class representing entries in Modbus register QmodbusDevice - base class for QModbusServer and QModbusClient QmodbusDeviceIdentification - Container class representing the physical and functional description of a Modbus server QmodbusExceptionResponse - Container class containing the function and error code inside a Modbus ADU QmodbusPdu - Abstract container class containing the function code and payload that is stored inside a Modbus ADU
  • 18. © Integrated Computer Solutions, Inc. All Rights Reserved Qt APIs – Modbus (cont'd) QmodbusRequest - Container class containing the function code and payload that is stored inside a Modbus ADU QmodbusResponse - Container class containing the function code and payload that is stored inside a Modbus ADU QmodbusReply - Contains the data for a request sent with a QModbusClient derived class QmodbusRtuSerialMaster - Represents a Modbus client that uses a serial bus for its communication with the Modbus server QmodbusRtuSerialSlave - Represents a Modbus server that uses a serial port for its communication with the Modbus client
  • 19. © Integrated Computer Solutions, Inc. All Rights Reserved Qt APIs – Modbus (cont'd) QmodbusServer - The interface to receive and process Modbus requests QmodbusTcpClient - The interface class for Modbus TCP client device QmodbusTcpServer - Represents a Modbus server that uses a TCP server for its communication with the Modbus client
  • 20. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - CAN bus Basic Steps: 1. Create a device, specifying plugin and device name. 2. Connect. 3. Create data frames. 4. Send data frames. 5. Disconnect when done. QCanBusDevice emits signals: errorOccurred, framesReceived, framesWritten, stateChanged. To receive frames, connect to signal framesReceived.
  • 21. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - CAN bus // Create device. QCanBusDevice *device = QCanBus::instance()->createDevice("socketcan", "vcan0"); if (device != nullptr) { qDebug() << "Created device, state is:" << device->state(); } else { qFatal("Unable to create CAN device."); } // Connect. if (device->connectDevice()) { qDebug() << "Connected, state is:" << device->state(); } else { qDebug() << "Connect failed, error is:" << device->errorString(); }
  • 22. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - CAN bus (cont'd) // Create a data frame. QCanBusFrame frame(QCanBusFrame::DataFrame, "12345"); // Send it. if (device->writeFrame(frame)) { qDebug() << "Wrote frame, state is:" << device->state(); } else { qDebug() << "Write failed, error is:" << device->errorString(); } // Disconnect. device->disconnectDevice(); qDebug() << "Disconnected, state is:" << device->state();
  • 23. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - CAN bus On Linux there is a virtual CAN driver for testing purposes which can be loaded and created as below: sudo modprobe can sudo modprobe can_raw sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 ip link show vcan0 3: vcan0: <NOARP,UP,LOWER_UP> mtu 16 qdisc noqueue state UNKNOWN link/can
  • 24. © Integrated Computer Solutions, Inc. All Rights Reserved More Complete Example – CAN bus
  • 25. © Integrated Computer Solutions, Inc. All Rights Reserved
  • 26. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - Modbus • Unlike CAN bus which is peer to peer, Modbus is client/server. • Client sends request and gets response from server. • Master/Slave arrangement where the Master is a Client and the Slave is a Server. • Confusing terminology: there is a single Modbus client (master) and multiple Modbus servers (slaves). • Support for serial devices and TCP network devices.
  • 27. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - Modbus QObject QModbusDevice QModbusClient QModbusServer QModbusSerialMaster QModbusTcpClient QModbusRtuSerialSlave QModbusTcpServer
  • 28. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - Modbus Basic steps for a TCP client (others are similar): 1. Create a QModbusTcpClient() 2. Set connection parameters with setConnectionParameter() 3. Connect using connectDevice() 4. Call as needed: sendRawRequest() sendReadRequest() sendReadWriteRequest() sendWriteRequest() 4. When done, call disconnectDevice()
  • 29. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples - Modbus // Create device. QModbusTcpClient *device = new QModbusTcpClient(); if (device != nullptr) { qDebug() << "Created device, state is:" << device->state(); } else { qFatal("Unable to create Modbus TCP client device."); } // Set connection parameters. Defaults to local host port 502. // Instead use TCP port 1502 as it is non-privileged. device->setConnectionParameter(QModbusDevice::NetworkPortParameter, 1502); // Connect. if (device->connectDevice()) { qDebug() << "Connected, state is:" << device->state(); } else { qDebug() << "Connect failed, error is:" << device->errorString(); }
  • 30. © Integrated Computer Solutions, Inc. All Rights Reserved Code Examples – Modbus (cont'd) // Create ADU. QVector<quint16> data(4); QModbusDataUnit adu(QModbusDataUnit::Coils, 1, data); // Send read request to a server at address 1. QModbusReply *reply = device->sendReadRequest(adu, 1); if (reply != nullptr) { qDebug() << "Sent read request, state is:" << device->state(); qDebug() << reply; } else { qDebug() << "Send of read request failed, error is:" << device->errorString(); } // Disconnect. device->disconnectDevice(); qDebug() << "Disconnected, state is:" << device->state();
  • 31. © Integrated Computer Solutions, Inc. All Rights Reserved More Complete Example - Modbus
  • 32. © Integrated Computer Solutions, Inc. All Rights Reserved
  • 33. © Integrated Computer Solutions, Inc. All Rights Reserved Documentation
  • 34. © Integrated Computer Solutions, Inc. All Rights Reserved Qt Code Examples
  • 35. © Integrated Computer Solutions, Inc. All Rights Reserved Areas of Possible Future Work • APIs final in Qt 5.8.0 • Support/plugins for more hardware back ends • Higher level protocols?
  • 36. © Integrated Computer Solutions, Inc. All Rights Reserved Summary
  • 37. © Integrated Computer Solutions, Inc. All Rights Reserved References 1. https://en.wikipedia.org/wiki/CAN_bus 2. https://en.wikipedia.org/wiki/Modbus 3. https://doc-snapshots.qt.io/qt5-dev/qtserialbus-index.html 4. http://code.qt.io/cgit/qt/qtserialbus.git/ 5. http://www.modbus.org 6. http://opengarages.org 7. ftp://ftp.ics.com/pub/pickup/qtserialbusexamples.zip
  • 38. © Integrated Computer Solutions, Inc. All Rights Reserved Questions?
  • 39. © Integrated Computer Solutions, Inc. All Rights Reserved QtSerialBus: Using Modbus and CAN bus with Qt Jeff Tranter <jtranter@ics.com> Integrated Computer Solutions, Inc.