Method, apparatus, device and medium for upgrading industrial control device
By using binary files in a binary instruction format to install applications on industrial control devices and IoT modules, the method addresses the inefficiencies of firmware updates, allowing for dynamic functionality extension and reduced resource usage.
Patent Information
- Application Number
- PCT/CN2023/116361
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-08-31
- Publication Date
- 2025-03-06
AI Technical Summary
Industrial control devices and IoT modules require complex and costly firmware updates to extend functionalities, which is inefficient and resource-intensive.
A method that involves installing pre-built applications on industrial control devices and IoT modules using binary files in a binary instruction format, such as WebAssembly, rather than modifying the firmware, allowing for dynamic extension of functionalities without altering the existing firmware.
This approach enables the extension of use cases for client UI applications by dynamically loading IoT applications, reduces the storage requirements of IoT modules, and supports high-level programming languages, making it easier to develop new use cases.
Smart Images

Figure CN2023116361_06032025_PF_FP_ABST
Abstract
Description
METHOD, APPARATUS, DEVICE AND MEDIUM FOR UPGRADING INDUSTRIAL CONTROL DEVICEField
[0001] The present disclosure relates to Internet of Things (IoT) , and more specifically relates to a method, apparatus, device and medium for upgrading an industrial control device.Background
[0002] In an industry environment, industrial device providers or third-party service providers may want to update an industrial device associated with an Internet of Things (IoT) module to extend functionality for the certain application scenario. All functional extensions are implemented through firmware updates. For the industrial control device, its providers build a new firmware that contains the desired additional functionalities, connect the industrial control device to a computer using appropriate interfaces such as USB and serial, and load the new firmware into the industrial control device using a firmware update tool. The same procedure goes for IoT module when it’s independent of the industrial control device. Extended functionality takes effect only after the device is restarted.Summary
[0003] Implementations of the present disclosure provide a scheme for collecting the data of the industrial control device by installing pre-build applications instead of touching and burning the firmware of the IoT module and the industrial control device. The scheme may obtain, by a client device, a binary file in a binary instruction format for an IoT module and a client user interface (UI) application install file for the client device, where the binary file is generated by compiling high-level language codes. Then, the scheme may install a client UI application (also referred to as a first client application) on the client device using the client UI application install file, and transmit the binary file in the binary instruction format to the IoT module for installing an IoT application on the IoT module. In addition, the scheme may collect data of the industrial control device by the client device from the IoT module via the client UI application.
[0004] In a first aspect of the present disclosure, a method for collecting data of an industrial control device is provided. The method comprises obtaining, by a client device, a binary file in a binary instruction format for an Internet of Things (IoT) module and a client application install file for the client device. The method further comprises installing a client application on the client device based on the client application install file. The method further comprises transmitting, by the client device, the binary file to the IoT module for installation on the IoT module. The method further comprises collecting, by the client device, the data of the industrial control device from the IoT module via the client application.
[0005] In conjunction with the first aspect, in some implementations, the client application is a first client application, and the method further comprises loading the first client application into a second client application by loading the client application install file of the first application into a client application runtime environment in the client device, the first client application being represented as pages in the second client application.
[0006] In conjunction with the first aspect, in some implementations, the method further comprises receiving a package file, and obtaining the client application install file, the binary file in the binary instruction format, an IoT module binary file and a control device binary file by unpacking and decrypting the package file, wherein the IoT module binary file is used for updating a firmware of the IoT module, and the control device binary file is used for updating a firmware of the industrial control device.
[0007] In conjunction with the first aspect, in some implementations, a consistency relating to calls and interfaces between the binary file in the binary instruction format and the IoT module binary file is verified, and a consistency relating to request variable names between the binary file in the binary instruction format and the client application install file is verified.
[0008] In conjunction with the first aspect, in some implementations, the method further comprises receiving the package file from a cloud via the second client application.
[0009] In conjunction with the first aspect, in some implementations, the method further comprises subscribing an existing message associated with the industrial control device from the IoT module via the client application. The method further comprises receiving a message associated with the existing message from the IoT module via the client application, wherein the message includes the data of the industrial control device.
[0010] In conjunction with the first aspect, in some implementations, the method further comprises registering a new message to the IoT module via the client application. The method further comprises publishing the new message to the IoT module via the client application.
[0011] In conjunction with the first aspect, in some implementations, the binary file in the binary instruction format is a WebAssembly binary file.
[0012] In a second aspect of the present disclosure, a method for collecting data of an industrial control device is provided. The method comprises receiving, by an Internet of Things (IoT) module and from a client device, a binary file in a binary instruction format. The method further comprises installing an IoT application by loading the binary file into a runtime environment of a firmware of the IoT module. The method further comprises collecting, by the IoT module, the data of the industrial control device by using interfaces of the firmware. The method further comprises transmitting, by the IoT module, the data of the industrial control device to the client device via the IoT application, wherein the client device includes a client application for presenting the data.
[0013] In conjunction with the second aspect, in some implementations, the method further comprises receiving, by the IoT module and from the client device, an IoT module binary file and a control device binary file. The method further comprises storing the IoT module binary file and the control device binary file into a file system of the firmware of the IoT module.
[0014] In conjunction with the second aspect, in some implementations, the method further comprises storing the binary file in the binary instruction format into the file system of the firmware of the IoT module. The method further comprises loading the binary file in the binary instruction format from the file system of the firmware of the IoT module to the runtime environment of the firmware of the IoT module.
[0015] In conjunction with the second aspect, in some implementations, the method further comprises transmitting, by the IoT module, the control device binary file from the file system of the firmware of the IoT module to the industrial control device.
[0016] In conjunction with the second aspect, in some implementations, the firmware of the IoT module comprises a data exchange module, and the method further comprises subscribing, by the IoT application, an existing message associated with the industrial control device from the data exchange module. The method further comprises receiving, by the IoT application, a message associated with the existing message from the industrial control device, wherein the message includes the data of the industrial control device.
[0017] In some implementations, the firmware of the IoT module comprises a data exchange module, and the method further comprises registering, by the IoT application, a new message associated with the industrial control device from the data exchange module. The method further comprises publishing, by the IoT application, a first message associated with the industrial control device from the data exchange module. The method further comprises subscribing, by the IoT application, an existing message associated with the industrial control device from the data exchange module. Furthermore, the method further comprises receiving, by the IoT application, a second message associated with the existing message from the industrial control device, wherein the second message includes the data of the industrial control device.
[0018] In conjunction with the second aspect, in some implementations, the method further comprises transmitting, by the IoT application, the data of the industrial control device to the client device via the data exchange module.
[0019] In conjunction with the second aspect, in some implementations, the binary file in the binary instruction format is a WebAssembly binary file, and the IoT application is a WebAssembly application.
[0020] In a third aspect of the present disclosure, an apparatus for collecting data of an industrial control device is provided. The client device comprises an obtaining module, configured to obtain a binary file in a binary instruction format for an Internet of Things (IoT) module and a client application install file for the client device. The client device further comprises an installing module, configured to install a client application on the client device based on the client application install file. The client device further comprises a transmitting module, configured to transmit the binary file to the IoT module for installation on the IoT module. The client device further comprises a collecting module, configured to collect the data of the industrial control device from the IoT module via the client application.
[0021] In a fourth aspect of the present disclosure, an apparatus for collecting data of an industrial control device is provided. The IoT module comprises a receiving module, configured to receive a binary file in a binary instruction format from a client device. The IoT module further comprises an installing module, configured to install an IoT application by loading the binary file into a runtime environment of a firmware of the IoT module. The IoT module further comprises a collecting module, configured to collect the data of the industrial control device by using interfaces of the firmware. The IoT module further comprises a transmitting module, configured to transmit the data of the industrial control device to the client device via the IoT application, wherein the client device includes a client application for presenting the data.
[0022] In a fifth aspect of the present disclosure, an electric device is provided. The device comprises one or more processors. The device further comprises a memory storing computer-executable instructions, and the computer-executable instructions, when executed by the one or more processors, cause the device to implement the method according to the first aspect or the second aspect.
[0023] In a sixth aspect of the present disclosure, a computer readable storage medium is provided. The computer readable storage medium stores computer-executable instructions, and the computer-executable instructions, when executed by a processor, implement the method according to the first aspect or the second aspect.
[0024] The Summary is provided to introduce selection for concepts in a simplified form, and the concepts will be further described below in the Detailed Description. The Summary is not intended to identify key features or essential features of the present disclosure, nor is it intended to limit the scope of the present disclosure.Brief Description of the Drawings
[0025] Implementations of the present disclosure may be understood from the following Detailed Description when read with the accompanying figures. In accordance with the standard practice in the industry, various features are not drawn to scale. In fact, the dimensions of the various features may be arbitrarily increased or reduced for clarity of discussion. Some examples of the present disclosure are described with reference to the following figures.
[0026] FIG. 1 illustrates an example environment in which example implementations of the present disclosure may be implemented;
[0027] FIG. 2 is a schematic diagram illustrating an example platform for integrating WebAssembly applications with an IoT module according to the implementations of the present disclosure;
[0028] FIG. 3 is a schematic diagram illustrating an example artifact flow in a develop environment according to the implementations of the present disclosure;
[0029] FIG. 4 is a schematic diagram illustrating an example artifact flow in a client device according to the implementations of the present disclosure;
[0030] FIG. 5 is a schematic diagram illustrating an example process of interactions among components of a client device, an IoT module and an industrial control device according to the implementations of the present disclosure;
[0031] FIG. 6 is a schematic diagram illustrating an example structure including multiple client devices and a single IoT module according to the implementations of the present disclosure;
[0032] FIG. 7 is a schematic diagram illustrating an example simulation development environment according to the implementations of the present disclosure;
[0033] FIG. 8 is a flow chart illustrating a method performed by an apparatus for collecting data of an industrial control device according to implementations of the present disclosure;
[0034] FIG. 9 is a flow chart illustrating a method performed by an apparatus for collecting data of an industrial control device according to implementations of the present disclosure;
[0035] FIG. 10 is a diagram illustrating an example client device according to the implementations of the present disclosure
[0036] FIG. 11 is a diagram illustrating an example IoT module according to the implementations of the present disclosure; and
[0037] Fig. 12 is a schematic block diagram of an example device of an embodiment that may be used to implement the content of the present disclosure.
[0038] Reference numeral list: 102: client device 103: client base application install file 104: client UI application install files 104-1: client UI application install file 104-2: client UI application install file 104-N: client UI application install file 106: WebAssembly binary files 106-1: WebAssembly binary file 106-2: WebAssembly binary file 106-N: WebAssembly binary file 108: client base application 110: client UI application runtime 112: client UI application 114: unpacking tool 115: IoT module binary file 116: control device binary file 117: native UI applications 122: IoT module 124: firmware 126: WebAssembly runtime 128: WebAssembly application 130: data exchange module 142: control device 144: data 146: firmware 262: development environment 264: client SDK 266: WebAssembly SDK 268: firmware SDK 270: package tool 282: cloud 284: package server 320-1: package file 320-2: package file 320-N: package file 402: flash storage 404: file system 528-1: WebAssembly application 528-2: WebAssembly application 528-N: WebAssembly application 602: client device 608: client base application 612-1: client UI application 612-2: client UI application 612-N: client UI application 622: client device 628: client base application 632-1: client UI application 632-2: client UI application 632-N: client UI application 702: client device 708: client base application 712-1: client UI application 712-2: client UI application 712-N: client UI application 722: IoT module 726: WebAssembly runtime 728-1: WebAssembly application 728-2: WebAssembly application 728-N: WebAssembly application 764: firmware SDK 766: WebAssembly SDK 768: client SDK 770: WebAssembly runtime source 772: toolchain pool 774: WASI SDK 776: application development tools 802: obtain a binary file in a binary instruction format for an IoT module and a client application install file for the client device 804: install a client application on the client device based on the client application install file 806: transmit the WebAssembly binary file to the IoT module for installation on the IoT module 808: collect data of the industrial control device from the IoT module via the client application 902: receive a binary file in a binary instruction format from a client device 904: install an IoT application by loading the binary file into a runtime environment of a firmware of the IoT module 906: collect data of an industrial control device by using interfaces of the firmware 908: transmit the data of the industrial control device to the client device via the IoT application 1002: obtaining module 1004: installing module 1006: transmitting module 1008: collecting module 1010: registering module 1102: receiving module 1104: installing module 1106: collecting module 1108: transmitting module 1110: storing module 1112: second transmitting module 1201: CPU 1202: ROM 1203: RAM 1204: bus 1205: I / O interface 1206: input unit 1207: output unit 1208: storage unit 1209: communication unitDetailed Description
[0039] The principles of the present disclosure will be described below with reference to several example implementations illustrated in the accompanying drawings. Although the preferred implementations of the present disclosure are shown in the drawings, it should be understood that these implementations are only described to enable those skilled in the art to better understand and implement the present disclosure, but not to limit the scope of the present disclosure in any way.
[0040] The term “comprising” and its variants used herein represent open inclusion, i.e., “including but not limited to” . The term “or” means “and / or” unless otherwise stated. The term “based on” means “based at least in part on” . The terms “one example implementation” and “one implementation” mean “at least one example implementation. ” The term “another implementation” means “at least one further implementation” . Other definitions, both express and implied, may also be included below. Some example implementations of the present disclosure are described below with reference to FIGS. 1-12.
[0041] In an industry environment, many industrial devices include Internet of Things (IoT) modules and control devices. An IoT module may connect to Internet through wired networks or wireless networks, and interact with the industry environment via sensors or executors. The IoT module may also provide interfaces to control the industrial control devices or collect data from the industrial control devices, and the collected data may be transmitted to a client device for displaying. For example, a compressor may include an IoT module and a motor (i.e., an industrial control device) , and the IoT module may collect a speed and a calorie of the motor and transmit these two data to client device for displaying. Normally, the functionalities of collecting the speed and the calorie of the motor have been programmed into the firmware of the IoT module and the firmware of the motor when the compressor is produced.
[0042] However, because the storage size of the IoT module is limited, only a part of the functionalities can be built-in the IoT module when the industrial device is produced. When the industrial device providers, the third-party service providers or the customers want to extend new functionalities or use cases to the IoT module and the industrial control device, they need to update the industrial control device and the IoT module through a complex process. For the industrial control device, the providers may obtain a new firmware for the industrial control device that contains the desired additional functionalities, connect the industrial control device to a computer using appropriate interfaces such as USB and serial, and load the new firmware into the industrial control device using a firmware update tool. Similarly, for the IoT chip, the providers may obtain a new firmware for the IoT module, connect the IoT chip to a computer using appropriate interfaces, and burn the new firmware into the IoT chip. This process is complex and it is high cost for the field devices already sold.
[0043] Therefore, the implementations of the present disclosure provide a scheme for collecting the data of the industrial control device by installing pre-build applications instead of touching and burning the firmware of the IoT module and the industrial control device. The scheme may obtain, by a client device, a binary file in a binary instruction format for an IoT module and a client user interface (UI) application install file for the client device, where the binary file is generated by compiling high-level language codes. Then, the scheme may install a client UI application (also referred to as a first client application) on the client device using the client UI application install file, and transmit the binary file in the binary instruction format to the IoT module for installing an IoT application on the IoT module. In addition, the scheme may collect data of the industrial control device by the client device from the IoT module via the client UI application.
[0044] In this manner, the use cases of the client UI application can be extended by dynamic loading the IoT application instead of modifying the firmware of the IoT module. Furthermore, because the functionalities can be supported by dynamic loading the IoT application, the number of the functionalities provided by an initial version of the IoT module can be reduced, therefore the storage space can be saved. In addition, because the IoT application is installed using the binary file in the binary instruction format, various high-level programming language can be supported when the providers or the customers develop use cases, which causes the development of use cases becoming easier.
[0045] FIG. 1 illustrates an example environment 100 in which example implementations of the present disclosure may be implemented. As shown in FIG. 1, the environment 100 includes a client device 102, an IoT module 122 and an industrial control device 142. The client device 102 may include, but are not limited to, personal computers, server computers, handheld or laptop devices, mobile devices (such as mobile phones, personal digital assistants (PDAs) , media players, etc. ) , multiprocessor systems, consumer electronics, computer Wearable electronic devices, smart home devices, minicomputers, mainframe computers, edge computing devices, distributed computing environments including any of the above systems or devices, etc. The industrial control device 142 may include, but are not limited to, motors, inverters, drivers, electric valves, actuators, heaters, lasers, power supply modules, sensors (e.g., liquid level sensors, temperature sensors, pressure sensors, etc. ) , pumps, etc.
[0046] As shown in FIG. 1, in the environment 100, the IoT module 122 may collect the data 144 of the industrial control device 142, and the client device 102 may collect the data 144 through the IoT module 122. For example, the client device 102 may be a mobile phone of a user, the industrial control device 142 may be a motor in a compressor, and the data 144 may be a speed of the motor. In the environment 100, a client base application 108 (also referred to as a second client application) is installed in the client device 102, but the original functionalities of the client base application 108 do not support collecting the data 144 from the industrial control device and displaying the data 144 on the client device. In order to collect the data 144 of the industrial control device 142, developers may develop client UI applications 112 and WebAssembly applications 128, where the client UI applications 112 run on the client device 102, and the WebAssembly applications 128 run on the IoT module 122. The client UI applications 112 may be installed using the client UI application install files 104, and WebAssembly applications 128 may be installed using WebAssembly binary files 106. WebAssembly (also referred to as Wasm) is a binary instruction format for a stack-based virtual machine. It should be noted that the WebAssembly binary files 106 is exemplary binary files in a binary instruction format, and the binary files in a binary instruction format may be files generated using other techniques. The WebAssembly binary files 106 are in a binary instruction format and are generated by compiling high-level language codes into a binary file, and the WebAssembly binary files 106 can be loaded by a WebAssembly runtime 126 of the IoT module 122. The high-level language for example may be C / C++, Rust, Swift, Tiny Go, Grain, Java Script, etc. In the client UI applications 112, the user can view the data 144 of the industrial control device, and the WebAssembly binary files 106 (called WebAssembly application 128 when loaded in the WebAssembly runtime 126) can call interfaces provided by the firmware 124 for reading the data 144 from the IoT module 122.
[0047] As shown in FIG. 1, the client device 102 may obtain the client UI application install files 104 for the client UI applications 112 and the WebAssembly binary files 106 for the WebAssembly applications 128. Then the client device 102 may install the client UI applications 112 in the client UI application runtime 110 of the client base application 108 using the client UI application install files 104. Furthermore, the client device 102 may transmit the WebAssembly binary files 106 to the IoT module 122. In the environment 100, the IoT module 122 includes a firmware 124, and the firmware 124 includes -WebAssembly runtime 126 for running the WebAssembly applications. The IoT module 122 may receive the WebAssembly binary files 106 from the client device 102, and install the WebAssembly applications 128 in the WebAssembly runtime 126 of the firmware 124 using the WebAssembly binary files 106.
[0048] In this manner, the firmware 124 of the IoT module 122 may collect the data 144 of the industrial control device 142, and provide the data 144 to the client UI applications 112 on the client device 102 through the WebAssembly applications 128. Therefore, the user can view the data 144 of the industrial control device 142 in the client UI applications. Because the WebAssembly applications 128 is installed by dynamic loading the WebAssembly binary files 106 into the WebAssembly applications 128 of the IoT module 122, the use case of the IoT module 122 can be extended without modifying the firmware 124 of the IoT module 122.
[0049] FIG. 2 is a schematic diagram illustrating an example platform 200 for integrating WebAssembly applications with an IoT module according to the implementations of the present disclosure. As shown in FIG. 2, the platform 200 includes a development environment 262, a cloud 282, a client device 102, an IoT module 122 and an industrial control device 142. The development environment 262 includes a client software development kit (SDK) 264, a WebAssembly SDK 266 and a firmware SDK 268. The client SDK 264 is a set of tools and resources that developers may use to create the client base application 108 which executes on the client device 102. The client SDK 264 may also be used to generate the client UI applications 112 which may be loaded to the client UI application runtime 110 by the client base application 108. The client SDK 264 may provide interfaces and libraries to facilitate the integration of the functionalities of the industrial control device 142 into the client base application 108 and the client UI application 112. For example, if the industrial control device 142 is a motor, the client SDK 264 may allow developers to build the client UI application 112 that reads the data from or sends commands to the motor.
[0050] The WebAssembly SDK 266 may be used to create WebAssembly binary files (e.g., the WebAssembly binary files 106 in FIG. 1) , and may focus on enabling the use of WebAssembly technology in the IoT applications (e.g., WebAssembly applications 128 in FIG. 1) . The WebAssembly SDK 266 may be used to build applications that run efficiently and securely on industrial devices, offering features like real-time monitoring, remote control, or data visualization. The firmware SDK 268 may be a toolkit for creating the firmware 124 running on the IoT module 122 and a firmware for the industrial control device 142. The firmware SDK 268 may include interfaces for data collection, communication protocols, power management, and other device-specific features.
[0051] The package tool 270 may be used for encrypting and packaging a client base application install file, client UI application install files (e.g., the client UI application install files 104 in FIG. 1) , a WebAssembly binary files (e.g., the WebAssembly binary files 106 in FIG. 1) , an IoT module binary file, and a control device binary file. In some implementations, the package files may be sent from the development environment 262 to the client device 102 directly. In some implementations, the package files may be sent to a package storage server 284 on a cloud 282. The package storage server 284 may be used for responding uploading requests from the development environment 262, and responding downloading requests from the client device 102. In some implementations, the development environment 262 may be deployed on the cloud 282, therefore the client SDK 264, the WebAssembly SDK 266 and the firmware SDK 268 may be integrated into a same platform.
[0052] As shown in FIG. 2, the client base application 108 may be running on the client device 102. In some implementations, the client device 102 may be a smart phone, and the client base application 108 may be a mobile application running on the smart phone. In some implementations, the client device 102 may be a computer or an embedded device, and the client base application 108 may be an operating system running on the computer or the embedded device.
[0053] In the platform 200, the client base application 108 includes an unpacking tool 114 and a client UI application runtime 110. The unpacking tool 113 may be used for unpacking and decrypting the package files received from the cloud 282 or the development environment 262. Furthermore, the unpacking tool 113 may also be responsible for transmitting the client UI application install file for the client UI application to the client UI application runtime 110, transmitting the IoT module binary file for the firmware 124 of the IoT module 122 and the control device binary file for the firmware 146 of the industrial control device to the IoT module 122, and transmitting the WebAssembly binary file to the firmware 124 of the IoT module 122. The client UI application runtime 110 may be used for loading the client UI application install file to run the client UI application. In some implementations, the client UI application may be installed into the client base application, and the client UI application is represented as pages in the client base application. In other word, the client UI application may work like a multi-page application in the client base application. In this manner, the user of the client device 102 can only download a single client base application 108, and install a preferred client UI application within the client base application 108. Thus the user can manage the client base application and various client UI applications easily, and the user experience can be improved.
[0054] In the platform 200, the IoT module 122 includes the firmware 124. The firmware 124 may support real time operating system (RTOS) , micro-kernels, or other operating systems such as Linux, Windows or Mac OS. Furthermore, the IoT module may integrate a chip with an architecture supporting the WebAssembly applications 128, for example, ARM, Xtensa, X84, etc. The WebAssembly applications 128 may load the WebAssembly binary file stored in the file system of the firmware 124 to run the WebAssembly application. In the platform 200, the industrial control device 142 may be updated by the IoT module 122. In some implementations, the IoT module 122 and the industrial control device 142 may be integrated as a build-in module of an industrial device, and therefore they may be different tasks on a same chip running a certain operating system.
[0055] In this manner, the IoT module 122 may run a WebAssembly application which supports for collecting data from the industrial control device 142 by loading a WebAssembly binary file received from the client device 102 to the WebAssembly runtime 126. Thus the new client UI application may collect the data from the industrial control device 142 through the WebAssembly application without modifying the firmware 124 of the IoT module 122. Furthermore, because the WebAssembly application can be dynamic loaded, the number of the functionalities provided by an initial version of the IoT module can be reduced, and therefore the storage space can be saved. In addition, because the WebAssembly technique is designed as a portable compilation target for programming languages, various high-level programming language can be supported when the providers or the customers develop use cases, which causes the development of use cases becoming easier.
[0056] FIG. 3 is a schematic diagram illustrating an example artifact flow 300 in a develop environment according to the implementations of the present disclosure. As shown in the FIG. 3, the development environment 262 includes the client SDK 264, the WebAssembly SDK 266, and the firmware SDK 268. In the artifact flow 300, the client SDK 264 may create a client base application install file 103, and the client base application install file 103 may be installed as a client base application on the client device (e.g., the client device 102 in FIG. 2) . Furthermore, the client SDK 264 may also create client UI application install files 104-1, 104-2, …, 104-N (also collectively referred to as client UI application install files 104) . Each of the client UI application install files 104 corresponds to a client UI application, and the client UI applications may provide different functionalities. For example, the client UI application corresponding to the client UI application install file 104-1 may implement a functionality of displaying the speed of the motor, and the client UI application corresponding to the client UI application install file 104-2 may implement another functionality of displaying the power consumption of the motor.
[0057] In the artifact flow 300, the WebAssembly SDK may create WebAssembly binary files 106-1, 106-2, …, 106-N (also collectively referred to as WebAssembly binary files 106) . Each of the WebAssembly binary files 106 corresponds to a client UI application install file 104 and a WebAssembly application. The WebAssembly binary files 106 may call the interfaces exported by the firmware of the IoT module, and the current export function source files is visible to the WebAssembly SDK 266. In addition, the firmware SDK 268 may create an IoT module binary file 115 which is used for updating the firmware of the IoT module, and a control device binary file which is used for updating the firmware of the industrial control device.
[0058] In the artifact flow 300, the package tool 270 may generate package files 320-1, 320-2, …, 320-N (also collectively referred to as package files 320) based on the client base application install file 103, the client UI application install files 104, the WebAssembly binary files 106, the IoT module binary file 115 and the control device binary file 116. In some implementations, a consistency relating to calls and interfaces between the WebAssembly binary files 106 and the IoT module binary file 115 is verified to ensure that the interfaces called by the WebAssembly binary files 106 is provided in the IoT module binary file 115. In some implementations, a consistency relating to request variable names between the WebAssembly binary files 106 and the client UI application install file is verified to at least ensure a conformance of request variable name. Then, the package tool 270 may encrypt and package all these files, and transmit the package files 320 to the client device (e.g., the client device 102 in FIG. 2) or the cloud (e.g., the cloud 282 in FIG. 1) .
[0059] In this manner, the running errors of the client UI applications and the WebAssembly applications can be reduced, thus the stability of the platform can be improved. In addition, because the client SDK 264, the WebAssembly SDK 266 and the firmware SDK 268 are integrated in a single platform, the process of the development can be efficiency and the complexity of the development can be reduced.
[0060] FIG. 4 is a schematic diagram illustrating an example artifact flow 400 in a client device according to the implementations of the present disclosure. As shown in FIG. 4, in the artifact flow 400, the client device 102 receives the package files 320 from the development environment 262 or the cloud 282. As shown in FIG. 4, the client base application 108 may be running on the client device 102, and the client base application 108 includes an unpacking tool 114. The unpacking tool 114 may unpack and decrypt the package files 320 to obtain the client UI application install file 104, the WebAssembly binary files 106, the IoT module binary file 115 and the control device binary file 116.
[0061] In the artifact flow 400, the client UI application install files 104 may be loaded by the client UI application runtime 110. In some implementations, the client UI application install files 104 may be loaded as multi-page applets on the client base application 108, therefore the client UI applications may be represented as pages in the client base application 108.
[0062] When the customer wants to extend a functionality of collecting data from the industrial control device, for example, the customer wants to develop a client UI application for displaying the current of the motor. In some implementations, the firmware of the motor may do not have an interface of getting the current of the motor, and the firmware of the IoT module may also do not have an interface of getting the current from the motor, therefore both of the firmware of the IoT module and the firmware of the motor need to be updated. In these implementations, the IoT module binary file 115 and the control device binary file 116 may be transmitted by the client device 102 to the IoT module 122, and then the IoT module 122 may burn the IoT module binary file 115 into the flash storage 402 to update the firmware 124 of the IoT module, and store the control device binary file 116 in the file system 404. Then the control device binary file 116 may be transmitted by the IoT module 122 to the industrial control device 142 to update the firmware 146 of the industrial control device 142. In this manner, the firmware of the motor can provide the interface of getting the current of the motor, and the firmware of the IoT module can have the ability to collect the current from the motor and provide the interface of getting the current from the motor.
[0063] In some implementations, the firmware of the motor may already have the interface of getting the current of the motor. No matter the firmware of the IoT module have the interface of getting the current from the motor or not, both of the firmware of the IoT module and the firmware of the motor do not need to be updated. In FIG. 4, the firmware 124 of the IoT module 122 and the firmware 144 of the industrial control device 142 do not need to be updated.
[0064] In the artifact flow 400, the WebAssembly binary files 106 may be transmitted by the client device 102 to the IoT module 122, and these files may be stored in the file system 404 of the firmware 124. As shown in FIG. 4, the WebAssembly binary file 106-1 is transmitted by the client device 102 to the IoT module 122 and is stored in the file system 404 of the firmware 124. Then the WebAssembly binary file 106-1 may be dynamically loaded as an executable file by the WebAssembly runtime 126. In this manner, the WebAssembly application which is running in the WebAssembly runtime 126 can collect the data of the industrial control device 142 via the firmware 124 of the IoT module 122, and the WebAssembly application can also provide the data of the industrial control device 142 to the client UI application which is running in the client UI application runtime 110 for displaying.
[0065] In some implementations, in order to collect the data of the industrial control device from the IoT module via the client UI application, the client device may subscribe an existing message associated with the industrial control device from the IoT module via the client UI application. Furthermore, the client device may receive a message associated with the existing message from the IoT module via the client UI application, and the message includes the data of the industrial control device.
[0066] In some implementations, in order to receive the message from the industrial control device via the WebAssembly application, the IoT module may subscribe an existing message associated with the industrial control device from a data exchange module, and receive a message associated with the existing message from the industrial control device, and the message includes the data of the industrial control device. Furthermore, the IoT module may transmit the data of the industrial control device to the client device via the data exchange module.
[0067] FIG. 5 is a schematic diagram illustrating an example process 500 of interactions among components of a client device, an IoT module and an industrial control device according to the implementations of the present disclosure. As shown in FIG. 5, the client device 102 includes the client base application 108, and native UI applications 117 may be running in the client UI application runtime 112 of the client base application 108. The native UI applications 117 are build-in client UI applications provided with the client base application 108, and they may request the data exchange module 130 for data access. The native UI applications 117 may act as basic functions that an industrial device offers, for example, the basic functions may be parameter read and write, commissioning, diagnosis, etc.
[0068] In the process 500, the client UI applications 112 may be multi-page applets when the client UI application install files are loaded by the client UI application runtime 112. The client UI applications 112-1, 112-2, …, 112-N (also collectively referred to as the client UI applications 112) may internally register and publish new messages to the IoT module 122, and the client UI applications 112 may also subscribe existing messages from the IoT module 122. Furthermore, the client UI applications 112 may also access the firmware 124 of the IoT module 122 for limited data exchange. In some implementations, the data exchange method of the client UI applications 112 is different with the native UI applications 117. In some implementations, the client UI applications 112 may exchange data with the IoT module 122 based on a micro service, and the native UI applications 117 may exchange data with the IoT module 122 based on peer-to-peer client-server method.
[0069] In the process 500, on the side of the IoT module, when the WebAssembly binary files are loaded to the WebAssembly runtime 126, the WebAssembly applications 528-1, 528-2, …, 528-N (also collectively referred to as the WebAssembly applications 528) may call the native interfaces of the firmware 124 of the IoT module 122to get data exchanges with a data exchange module 130 in the firmware 124. Furthermore, the WebAssembly applications 528 may subscribe an existing message associated with the industrial control device from the data exchange module 130, and receive a message from the industrial control device by using native interfaces of the firmware 124, and the message includes the data of the industrial control device. Furthermore, the IoT module 122 may transmit the data of the industrial control device to the client device 102 via the data exchange module 130. In some implementations, the data exchange module 130 may publish the messages to all client devices connected to the same IoT module, and to all client UI applications installed in the same client base application and subscribed the messages. In some implementations, the data exchange module 130 may also periodically and randomly exchange data with the industrial control device.
[0070] In this manner, a message subscription mechanism between the client device 102, the IoT module 122 and the industrial control device 142 can be implemented by using the data exchange module 130. The message subscription mechanism enables real-time (but not hardware real-time) data transmission, allowing the client device 102 to promptly access the latest data from the IoT module 122 and the industrial control device 142, facilitating quick responses and instant communication. Furthermore, the message subscription mechanism can reduce direct interactions between the client device 102, the IoT module 122 and the industrial control device 142, which results in decreased dependencies, enhancing system flexibility and scalability.
[0071] In some implementations, multiple client devices may be connected to a single IoT module. For example, one client device is a smartphone while the other is human-machine interaction (HMI) screen. FIG. 6 is a schematic diagram illustrating an example structure 600 including multiple client devices and a single IoT module according to the implementations of the present disclosure. As shown in FIG. 6, the structure 600 includes two client devices, i.e., a client device 602 and 622. The structure 600 further includes an IoT module 122. The IoT module 122 includes a firmware 124, and the firmware 124 includes a WebAssembly applications 128 and a data exchange module 130, where the WebAssembly applications 528 may be running in the WebAssembly applications 128. The client device 602 includes a client base application 608, and the client UI applications 612-1, 612-2, …, 612-N (also collective referred to as the client UI applications 612) may be running in the client base application 608 as multi-page applets. The client device 622 includes a client base application 628, and the client UI applications 622-1, 622-2, …, 622-N (also collective referred to as the client UI applications 622) may be running in the client base application 608 as multi-page applets.
[0072] As shown in FIG. 6, in the structure 600, the client devices 602 and 622 may be connected to the IoT module 122, and the client device 602, client device 622 and the IoT module 122 may exchange data via the data exchange module 130 of the firmware 124 of the IoT module 122. In some implementations, the client UI applications 612 on the client device 602 and the client UI applications 632 on the client device 622 may register and publish message to the IoT module 122 via the data exchange module 130. Furthermore, the client UI applications 612 and 622 may also subscribe existing messages from the IoT module via the data exchange module 130. In some implementations, the WebAssembly applications 528 in the IoT module 122 may register, publish and subscribe messages from the data exchange module 130. Furthermore, the WebAssembly applications 528 may publish messages to all client devices connected to the IoT module 122 (i.e., the client devices 602 and 622) , and the WebAssembly applications 528 may publish messages to all client UI applications installed in the same client base application which is subscribing the messages (i.e., client UI applications 612 and 622 because the client base applications 608 and 628 are subscribing the messages) .
[0073] In this manner, the structure 600 accommodates dynamic addition or removal of subscribers, adapting data exchange scope and methods to meet varying scenarios and requirements. Furthermore, message subscription is compatible with distributed systems, supporting data exchange among devices located at different locations, which enables collaboration across multiple sites and devices.
[0074] In some implementations, in order to test and verify the developed client UI applications and the WebAssembly applications, they may be simulated in the development environment. FIG. 7 is a schematic diagram illustrating an example simulation development environment 700 according to the implementations of the present disclosure. As shown in FIG. 7, the environment 700 includes a client device 702, which is running a client base application 708 and client UI applications 712-1, 712-2, …, 712-N (also collectively referred to as client UI applications 712) . The environment 700 also includes an IoT module 722, which is running WebAssembly applications 728-1, 728-2, …, 728-N (also collectively referred to as WebAssembly applications 728) in the IoT runtime 726. In some implementations, the IoT module 722 may be a simulated IoT module and the client device 702 may be a real client device. In some implementations, the IoT module 722 may be a simulated IoT module and the client device 702 may be a simulated client device.
[0075] As shown in FIG. 7, the environment 700 also includes a firmware SDK 764, a WebAssembly SDK 766 and a client SDK 768. The firmware SDK 764 is constructed by using a WebAssembly runtime source 770 as a library file and a toolchain pool 772 for various chip architectures. The toolchain pool 772 may offer building tools for firmware, board support package (BSP) initial code and basic types that are unique to each chip architecture. Furthermore, the toolchain pool 772 may also declare basic types for the WebAssembly SDK 766. In the environment 700, the firmware SDK 764 may export native interfaces such that the WebAssembly SDK 766 may import these interfaces to build customized application binary files. The WebAssembly SDK 766 may further involve WebAssembly system interface SDK (WASI SDK) 774, which is a main build tool component, the native interfaces files from the firmware SDK 764, and the basic types from the toolchain pool 772 as source files. In the environment 700, the WebAssembly SDK may export message prototypes to the client SDK 768. The client SDK 768 may be constructed by application development tools 776 which may be web-based of desktop application development tools.
[0076] In this manner, the developers can swiftly build, debug, and test client UI applications 712 and the WebAssembly applications 728 in the simulation development environment 700 without waiting for actual hardware readiness, which accelerates development cycles and enhances efficiency. Furthermore, the simulation development environment 700 can provide an isolated development space for testing and experimentation without impacting real hardware, which helps prevent potential issues or errors from affecting actual devices.
[0077] FIG. 8 is a flow chart illustrating a method 800 performed by an apparatus for collecting data of an industrial control device according to implementations of the present disclosure, the method 800 may be performed by the client device 102 as shown in FIG. 1. As shown in FIG. 8, at block 802, the client device obtains a binary file in a binary instruction format for an IoT module and a client application install file for the client device. For example, in the environment 100 as shown in FIG. 1, the client device 102 obtains a client UI application install file 104 and a WebAssembly binary file 106, which is a binary file in a binary instruction format. The WebAssembly binary file 106 may be installed as the WebAssembly application 128 on the IoT module 122.
[0078] At block 804, the client device 102 installs a client application on the client device based on the client application install file. For example, in the environment 100, the client device 102 installs the client UI application 112 by loading the client UI application install file 104 into the client UI application runtime 110. The client UI application 112 may call interfaces of getting data 144 of the industrial control device 142, and the interfaces may be provided in the WebAssembly binary file 106.
[0079] At block 806, the client device 102 transmits the WebAssembly binary file to the IoT module for installation on the IoT module. For example, in the environment 100, the client device 102 transmits the WebAssembly binary file 106 to the IoT module 122. After receiving the WebAssembly binary file 106, the IoT module may install the WebAssembly application 128 by loading the WebAssembly binary file 106 into the WebAssembly runtime 126 in the firmware 125 of the IoT module 122. Once the WebAssembly application 128 is running in the WebAssembly runtime 126, it may provide the interfaces of getting data 144 from the industrial control device 142 to the client UI application 112 on the client device 102.
[0080] At block 810, the client device 102 collects data of the industrial control device from the IoT module via the client application. For example, in the environment 100, the client device 102 collects the data 144 of the industrial control device 142 from the IoT module 122 via the client UI application 112. In this example, at the beginning, the firmware of the industrial control device 142 may already provide interfaces of getting data 144 to the IoT module 122. However, the firmware 124 of the IoT module does not provide corresponding interfaces of getting the data 144 from the industrial control device 142 to the client device 102. After the WebAssembly application 128 is installed, it may provide the corresponding interfaces to the client device 102, therefore the client UI application 112 may collect the data 144 of the industrial control device 142 from the IoT module 122 and display the data 144 in the client UI application 112.
[0081] In this manner, the use cases of the client UI application 112 can be extended by dynamic loading the WebAssembly application 128 instead of modifying the firmware 124 of the IoT module 122. Furthermore, because the functionalities can be supported by dynamic loading the WebAssembly application 128, the number of the functionalities provided by an initial version of the IoT module 122 can be reduced, therefore the storage space can be saved. In addition, because the WebAssembly application 128 is installed using the WebAssembly binary file 106, various high-level programming language can be supported when the providers or the customers develop use cases, which causes the development of use cases becoming easier.
[0082] FIG. 9 is a flow chart illustrating a method 900 performed by an apparatus for collecting data of an industrial control device according to implementations of the present disclosure, the method 900 may be performed by the IoT module 122 as shown in FIG. 1. As shown in FIG. 9, at block 902, the IoT module receives a binary file in a binary instruction format from a client device. For example, in the environment 100 as shown in FIG. 1, the IoT module 122 receives the WebAssembly binary file 106 from the client device 102, the WebAssembly binary file 106 is a binary file in a binary instruction format.
[0083] At block 904, the IoT module installs an IoT application by loading the binary file into a runtime environment of a firmware of the IoT module. For example, in the environment 100, the IoT module 122 installs a WebAssembly application 128 by loading the WebAssembly binary file 106 received from the client device 102 into a WebAssembly runtime 126 in a firmware 124 of the IoT module 122. Once the WebAssembly application 128 is running in the WebAssembly runtime 126, it may provide the interfaces of getting data 144 from the industrial control device 142 to the client UI application 112 on the client device 102.
[0084] At block 906, the IoT module collects data of an industrial control device by using interfaces of the firmware. For example, in the environment 100, the IoT module 122 collects data 144 of the industrial control device 142. The firmware of the industrial control device 142 may provide interfaces of getting the data 144 to the IoT module 122, and the IoT module may call the interfaces to collect the data 144 from the industrial control device 142.
[0085] At block 908, the IoT module transmits the data of the industrial control device to the client device via the IoT application. For example, in the environment 100, the IoT module 122 transmits the data 144 of the industrial control device 142 to the client device 102 via the WebAssembly application 128. After getting the data 144 from the industrial control device 142, the firmware 124 of the IoT module 122 may provide interfaces of getting the data 144 to the WebAssembly application 128. Then the WebAssembly application 128 may call the interfaces provided by the firmware 124 to get the data 144, such that the data 144 may be transmitted to the client UI application 112 by using a message subscription mechanism.
[0086] In this manner, the IoT module 122 may transmit the data 144 of the industrial control device 142 to the client device 102 by dynamic loading the WebAssembly application 128 instead of modifying the firmware 124 of the IoT module 122. Furthermore, the storage space of the IoT module can be saved.
[0087] FIG. 10 is a diagram illustrating an example client device 1000 according to the implementations of the present disclosure. As shown in FIG. 10, the client device 1000 comprises an obtaining module 1002 configured to obtain a binary file in a binary instruction format for an Internet of Things (IoT) module and a client application install file for the client device. The client device 1000 further comprises an installing module 1004 configured to install a client application on the client device based on the client application install file. The client device 1000 further comprises a transmitting module 1006 configured to transmit the binary file to the IoT module for installation on the IoT module. In addition, the client device 1000 further comprises a collecting module 1008 configured to collect data of the industrial control device from the IoT module via the client application.
[0088] In some implementations, the client application is a first client application, and the installing module 1004 may be further configured to load the first client application into a second client application by loading the client application install file of the first application into a client application runtime environment in the client device, the first client application being represented as pages in the second client application.
[0089] In some implementations, the obtaining module 1002 may be further configured to receive a package file, and obtain the client application install file, the binary file in the binary instruction format, an IoT module binary file and a control device binary file by unpacking and decrypting the package file, wherein the IoT module binary file is used for updating a firmware of the IoT module, and the control device binary file is used for updating a firmware of the industrial control device
[0090] In some implementations, a consistency relating to calls and interfaces between the binary file in the binary instruction format and the IoT module binary file is verified, and a consistency relating to request variable names between the binary file in the binary instruction format and the client application install file is verified.
[0091] In some implementations, the obtaining module 1002 may be further configured to receive the package file from a cloud via the second client application.
[0092] In some implementations, the collecting module 1008 may be further configured to subscribe an existing message associated with the industrial control device from the IoT module via the client application. Furthermore, the collecting module 1008 may be further configured to receive a message associated with the existing message from the IoT module via the client application, wherein the message includes the data of the industrial control device.
[0093] In some implementations, the client device 1000 further comprises a registering module 1010 configured to register a new message to the IoT module via the client application. The registering module 1010 is further configured to publish the new message to the IoT module via the client application.
[0094] In some implementations, the binary file in the binary instruction format is a WebAssembly binary file.
[0095] According to the above implementations, the use cases of the client application can be extended by dynamic loading the binary file in a binary instruction format instead of modifying the firmware of the IoT module. Furthermore, the number of the functionalities provided by an initial version of the IoT module can be reduced, and therefore the storage space can be saved. In addition, various high-level programming language can be supported when the providers or the customers develop use cases, which causes the development of use cases becoming easier.
[0096] FIG. 11 is a diagram illustrating an example IoT module 1100 according to the implementations of the present disclosure. As shown in FIG. 11, the IoT module 1100 comprises a receiving module 1102, configured to receive a binary file in a binary instruction format from a client device. The IoT module 1100 further comprises an installing module 1104, configured to install an IoT application by loading the binary file into a runtime environment of a firmware of the IoT module. The IoT module 1100 further comprises a collecting module 1106, configured to collect data of an industrial control device by using interfaces of the firmware. The IoT module 1100 further comprises a transmitting module 1108, configured to transmit the data of the industrial control device to the client device via the IoT application, wherein the client device includes a client application for presenting the data.
[0097] In some implementations, the IoT module 1100 further comprises a storing module 1110 configured to receive an IoT module binary file and a control device binary file from the client device. Furthermore, the storing module 1110 may be further configured to store the IoT module binary file and the control device binary file into a file system of the firmware of the IoT module.
[0098] In some implementations, the installing module 1104 may be further configured to store the binary file in the binary instruction format into the file system of the firmware of the IoT module. Furthermore, the installing module 1104 may be further configure to load the binary file in the binary instruction format from the file system of the firmware of the IoT module to the runtime environment of the firmware of the IoT module.
[0099] In some implementations, the IoT module 1100 further comprises a second transmitting module 1112 configured to transmit the control device binary file from the file system of the firmware of the IoT module to the industrial control device.
[0100] In some implementations, the firmware of the IoT module comprises a data exchange module, and the receiving module 1102 may be further configured to register, by the IoT application, a new message associated with the industrial control device from the data exchange module. The receiving module 1102 may be further configured to publish, by the IoT application, a first message associated with the industrial control device from the data exchange module. The receiving module 1102 may be further configured to subscribe, by the IoT application, an existing message associated with the industrial control device from the data exchange module. Furthermore, the receiving module 1102 may be further configured to receive, by the IoT application, a second message associated with the existing message from the industrial control device, wherein the second message includes the data of the industrial control device.
[0101] In some implementations, the transmitting module 1108 may be further configured to transmit the data of the industrial control device to the client device via the data exchange module.
[0102] In some implementations, the binary file in the binary instruction format is a WebAssembly binary file, and the IoT application is a WebAssembly application.
[0103] According to the above implementations, the IoT module may transmit the data of the industrial control device to the client device by dynamic loading the IoT application instead of modifying the firmware of the IoT module. Furthermore, the storage space of the IoT module can be saved.
[0104] Fig. 12 shows a schematic block diagram of an example device 1200 of an embodiment that may be used to implement the content of the present disclosure. For example, a computing device 1210 according to the embodiment of the present disclosure may be implemented by the device 1200. As shown in the figure, the device 1200 includes a central processing unit (CPU) or graphics processing unit (GPU) 1201, which may execute various appropriate actions and processing according to computer program instructions stored in a read-only memory (ROM) 1202 or computer program instructions that are loaded from a storage unit 1208 into a random access memory (RAM) 1203. In the RAM 1203, various programs and data necessary for the operations of the device 1200 may also be stored. The CPU / GPU 1201, the ROM 1202 and the RAM 1203 are connected to each other by means of a bus 1204. An input / output (I / O) interface 1205 is also connected to the bus 1204.
[0105] A plurality of components in the device 1200 are connected to the I / O interface 1205, including: an input unit 1206, such as a keyboard and a mouse; an output unit 1207, such as various types of displays and loudspeakers; a storage unit 1208, such as a magnetic disk and an optical disk; and a communication unit 1209, such as a network card, a modem and a wireless communication transceiver. The communication unit 1209 allows the device 1200 to exchange information / data with other devices by means of a computer network such as the Internet and / or various telecommunication networks.
[0106] The various processes and processing described above, for example, the processes 200 and / or 900, may be executed by the processing unit 1201. For example, in some embodiments, the method processes 200 and / or 900 may be implemented as computer software programs, which are tangibly embodied in a machine-readable medium, such as the storage unit 1208. In some embodiments, part or all of the computer programs may be loaded and / or installed on the device 1200 via the ROM 1202 and / or the communication unit 1209. When the computer programs are loaded into the RAM 1203 and executed by the CPU / GPU 1201, one or more actions of the processes 200 and / or 900 described above may be executed.
[0107] The present disclosure may be a method, an apparatus, a system and / or a computer program product. The computer program product may include a computer-readable storage medium having computer-readable program instructions loaded thereon for executing various aspects of the present disclosure.
[0108] The computer-readable storage medium may be a tangible device that may hold and store instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but is not limited to, an electrical storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing devices. More specific examples (non-exhaustive list) of the computer-readable storage medium include: a portable computer disk, a hard disk, a random access memory (RAM) , a read-only memory (ROM) , an erasable programmable read-only memory (EPROM) or flash memory) , a static random access memory (SRAM) , a portable compact disk read-only memory (CD-ROM) , a digital versatile disk (DVD) , a memory stick, a floppy disk, a mechanical encoding device, such as protrusion structures in punched cards or grooves with instructions stored thereon, and any suitable combinations thereof. The computer-readable storage medium, as used herein, is not to be interpreted as a transient signal per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating via waveguides or other transmission media (e.g., light pulses propagating via optical fiber cables) , or electrical signals transmitted via electrical wires.
[0109] Further, while operations are depicted in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order or that all illustrated operations be performed to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Certain features that are described in the context of separate implementations may also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation may also be implemented in multiple implementations separately or in any suitable sub-combination.
[0110] In the foregoing Detailed Description of the present disclosure, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration how examples of the disclosure may be practiced. These examples are described in sufficient detail to enable those of ordinary skill in the art to practice the examples of this disclosure, and it is to be understood that other examples may be utilized and that process, electrical, and / or structural changes may be made without departing from the scope of the present disclosure. Independent of the grammatical term usage, individuals with male, female or other gender identifies are included within the term.
[0111] Independent of the grammatical term usage, individuals with male, female or other gender identities are included within the term.
Claims
1.A method (800) for collecting data of an industrial control device comprising:obtaining (802) , by a client device, a binary file in a binary instruction format for an Internet of Things (IoT) module and a client application install file for the client device;installing (804) a client application on the client device based on the client application install file;transmitting (806) , by the client device, the binary file to the IoT module for installation on the IoT module; andcollecting (808) , by the client device, the data of the industrial control device from the IoT module via the client application.2.The method (800) of claim 1, wherein the client application is a first client application, and installing the client application on the client device comprises:loading the first client application into a second client application by loading the client application install file of the first application into a client application runtime environment in the client device, wherein the first client application is represented as pages in the second client application.3.The method (800) of claim 1, wherein obtaining the binary file comprises:receiving a package file; andobtaining the client application install file, the binary file in the binary instruction format, an IoT module binary file and a control device binary file by unpacking and decrypting the package file, wherein the IoT module binary file is used for updating a firmware of the IoT module, and the control device binary file is used for updating a firmware of the industrial control device.4.The method (800) of claim 3, wherein before the package file is received:a consistency relating to calls and interfaces between the binary file in the binary instruction format and the IoT module binary file is verified; anda consistency relating to request variable names between the binary file in the binary instruction format and the client application install file is verified.5.The method (800) of claim 3, wherein receiving the package file comprises:receiving the package file from a cloud via the second client application.6.The method (800) of claim 1, wherein collecting the data of the industrial control device from the IoT module via the client application comprises:subscribing an existing message associated with the industrial control device from the IoT module via the client application; andreceiving a message from the IoT module via the client application, wherein the message includes the data of the industrial control device.7.The method (800) of claim 1, further comprising:registering a new message to the IoT module via the client application; andpublishing the new message to the IoT module via the client application.8.The method (800) of claim 1, wherein the binary file in the binary instruction format is a WebAssembly binary file.9.A method (900) for collecting data of an industrial control device comprising:receiving (902) , by an Internet of Things (IoT) module and from a client device, a binary file in a binary instruction format;installing (904) an IoT application by loading the binary file into a runtime environment of a firmware of the IoT module;collecting (906) , by the IoT module, the data of the industrial control device by using an interface of the firmware; andtransmitting (908) , by the IoT module, the data of the industrial control device to the client device via the IoT application, wherein the client device includes a client application for presenting the transmitted data.10.The method (900) of claim 9, further comprising:receiving, by the IoT module and from the client device, an IoT module binary file and a control device binary file; andstoring the IoT module binary file and the control device binary file into a file system of the firmware of the IoT module.11.The method (900) of claim 10, wherein installing the IoT application by loading the binary file in the binary instruction format into the runtime environment of the firmware of the IoT module comprises:storing the binary file in the binary instruction format into the file system of the firmware of the IoT module; andloading the binary file in the binary instruction format from the file system of the firmware of the IoT module to the runtime environment of the firmware of the IoT module.12.The method (900) of claim 9, further comprising:transmitting, by the IoT module, the control device binary file from the file system of the firmware of the IoT module to the industrial control device.13.The method (900) of claim 9, wherein the firmware of the IoT module comprises a data exchange module, and receiving the message from the industrial control device via the IoT application comprises at least one of:registering, by the IoT application, a new message associated with the industrial control device from the data exchange module;publishing, by the IoT application, a first message associated with the industrial control device from the data exchange module;subscribing, by the IoT application, an existing message associated with the industrial control device from the data exchange module; andreceiving, by the IoT application, a second message associated with the existing message from the industrial control device, wherein the second message includes the data of the industrial control device.14.The method (900) of claim 10, wherein transmitting the data of the industrial control device to the client device comprises:transmitting, by the IoT application, the data of the industrial control device to the client device via the data exchange module.15.The method (900) of claim 9, wherein the binary file in the binary instruction format is a WebAssembly binary file, and the IoT application is a WebAssembly application.16.An apparatus (1000) for collecting data of an industrial control device comprising:an obtaining module (1002) , configured to obtain a binary file in a binary instruction format for an Internet of Things (IoT) module and a client application install file for the client device;an installing module (1004) , configured to install a client application on the client device based on the client application install file;a transmitting module (1006) , configured to transmit the binary file to the IoT module for installation on the IoT module; anda collecting module (1008) , configured to collect the data of the industrial control device from the IoT module via the client application.17.An apparatus (1100) for collecting data of an industrial control device comprising:a receiving module (1102) , configured to receive a binary file in a binary instruction format from a client device;an installing module (1104) , configured to install an IoT application by loading the binary file into a runtime environment of a firmware of the IoT module;a collecting module (1106) , configured to collect the data of the industrial control device by using an interface of the firmware; anda transmitting module (1108) , configured to transmit the data of the industrial control device to the client device via the IoT application, wherein the client device includes a client application for presenting the data.18.An electric device (1200) comprising:one or more processors (1201) ; anda memory storing computer-executable instructions, the computer-executable instructions when executed by the one or more processors (1201) , cause the device (1200) to implement the method according to any of claims 1-8 or 9-15.19.A computer readable storage medium (1203) , the computer readable storage medium (1203) stores computer-executable instructions, the computer-executable instructions when executed by a processor (1201) , implement the method according to any of claims 1-8 or 9-15.20.A computer program product tangibly stored on a non-transitory computer-readable medium (1203) and comprising computer-executable instructions that, when executed, cause a processor (1201) to implement the method according to any of claims 1-8 or 9-15.
Citation Information
Patent Citations
Secure IoT device update
CN110073646A
Application program running method and device
CN116414401A
Update of mac security settings in autonomous industrial control devices
EP3511858A1
Dynamic capsule generation and recovery in computing environments
US20170286086A1
Information processing device, information processing program, and information processing method
US20170308418A1