Aspects of the disclosure are related to the field of industrial automation, and in particular, to software, hardware systems, and methods for remote enablement of software and hardware for industrial control systems, devices, and equipment.
Industrial automation environments can include various machine systems, industrial automation devices and software, and industrial processes, such as those found in factories, milling operations, manufacturing facilities, and the like. These machine systems and industrial automation devices typically include an operation or process implemented by a mechanical or electrical device. Specific examples of these devices and systems can include various functions of machinery associated with industrial automation including manufacturing equipment, assembly equipment, milling equipment, process equipment, and packaging equipment, or other machine systems.
Prior to installation and active service of many of these industrial automation devices and systems, companies may design, program, and build the machine at a remote location from the industrial site where the system is to be installed and operate. The controls may be programmed and acceptance tested at the remote location prior to installation.
After installation the industrial control system may need to be modified or serviced. The industrial site may not have the capability to change the programming (configuration and/or application code) of the industrial control system. Furthermore, the industrial site may not have an Internet or wireless connection at or near the equipment or the industrial device within the facility or the facility may be located in a remote geographic region that does not have internet connection.
Systems, methods, and software for enabling software for industrial automation systems and equipment are provided herein. This includes the configuration and design software and runtime software. In one example, a non-transitory computer readable medium having stored thereon program instructions executable by a computing device is presented. When executed by the computing device, the program instructions direct the computing device to receive a request for enabling use of software for an industrial control device, identify a code capable of enabling the software or hardware functionality based at least in part on the request, and communicate the code to a user to use to enable the software for the industrial control device. The code can be generated based at least in part on the characteristics of the computer systems and/or a combination of the computer system and the control system associated.
In another example, a method of enabling software for use with an industrial automation system is presented. The method includes receiving a request for enabling use of software for an industrial control device, identifying an enablement/activation code capable of activating the software or hardware based at least in part on the request, and communicating the enablement/activation code to a user to use to enable the software for the industrial control device.
In another example, a non-transitory computer readable medium having stored thereon program instructions executable by a computing device is presented. When executed by the computing device, the program instructions direct the computing device to connect to an industrial control device, receive an enablement code related to enabling software for the industrial control device, authenticate the enablement code by the computer; and enable software for use with the industrial control device based at least in part on the authentication of the enablement code.
Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views. While several embodiments are described in connection with these drawings, the disclosure is not limited to the embodiments disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents.
Industrial device 141 is controlled by ICS 140. ICS 140 may include hardware, computers, software, and/or programming specially designed to control industrial device 141. Industrial device 141 may be installed in an industrial plant or facility. The construction, design, and programming of ICS 140 and industrial device 141 may have been accomplished in another facility away from the industrial site where the equipment is installed, such as an integration site.
Long after the industrial device 141 and ICS 140 are installed and operational, changes may need to be made to the programming of ICS 140. This may be difficult to accomplish as the personnel at the industrial site may not have the software activated, means to be able to use the software, or an Internet connection to accomplish the needed changes.
Programming software may be installed but dormant, on ICS 140 and/or programming system 130, which may be capable of changing the programming of ICS 140 and/or programming system 130. A request and/or code 108 may be sent to licensing system 110 requesting an activation code to enable the dormant software. Request 108 may be generated by the ICS 140 and/or programming system 130 and transmitted via Internet, or other means, including device 120.
Request 108 may also include other information about the system including type and number of ICSs 140, type and number of industrial devices 141, customer, application, integrator, original manufacturer, original programmer, system characteristics, hardware component IDs, a code which includes information regarding the above, etc. Licensing system 110 may then identify, or create a code which, when entered in programming system 130 and/or ICS 140, will enable the dormant software, and communicate the code 115 to other device 120.
In this example, licensing and/or activation system 110 and programming system 130 may not be communicatively linked, such as by the Internet or other system. However, licensing system 110 and device 120 may be communicatively linked via the Internet or other communication system. The code may be communicated to other device 120 via email, text message, short message service, extended message service, multimedia message service, enhanced message service, test message service, and/or via a mobile or other telephone, and/or any other method or system, and/or combinations thereof.
The activation code may then be entered or otherwise transferred 125 to programming system 130 and/or ICS 140. The activation code may then be authenticated at programming system 130 and/or ICS 140, and based on a positive authentication, the dormant software may be enable to allow programming or other changes to ICS 140.
In an example, ICS 140 and industrial device 141 may be an automated industrial system. ICS 140 and industrial device 141 may have been manufactured, programmed, and assembled at an integrator/manufacturer, then shipped to the industrial site and installed and started up. Typically the installed system is debugged and put into operation. Some time later, the process or programming may need to be changed. The industrial site may not have Internet or other communication access at the industrial device 141, or may not have the required software for programming the system.
Personnel at the industrial site may then generate a request code for an activation code from the licensing system 110 to allow the use of the dormant programming software installed on the programming system and/or the ICS 140. The licensing system 110 may then provide an activation code to enable the use of the software for a period of time, or number of uses, limited functionality, etc. to allow the site personnel to use the software on a limited basis.
In this example, licensing system 110, programming or configuration system 130 and other device 120 may include a computing device, such as a personal computer, laptop, tablet computing device, mobile smartphone, server, industrial control device, or other computing device which can receive input and communicate codes. These systems can also include hardware, firmware, and software to accomplish the methods described herein.
Different applications and industries employ industrial device 141 under different operating and environmental conditions, as indicated above. The industry typically indicates the general realm of use for the industrial automation equipment. Example industries include material handling, mining/cement, rubber/plastics, food/beverage, consumer goods, textiles, water/waste water, automotive, oil and gas, and pulp/paper, among other industries, including combinations thereof. The application typically indicates the specific type of function or process used by the industrial automation equipment. Example applications include belt conveyors, chain conveyors, diverters, palletizers, centrifugal fans/pumps, cooling/baking conveyors, positive displacement compressors, hoists, cranes, auger conveyors, ball mills, rotary kilns, induced draft fans, beater type mixers, crushers/pulverizers, extruders, blown film, injection molding, blow molding, screw compressors, center driven winders, sugar centrifuges, punch presses, textile machines, engine/transmission test stands, recirculation fans, compressors, chippers, mixers, flow/pumps, converting, and web handling, including combinations thereof.
Many industrial automation systems include programmable logic controllers (PLCs) to control various devices and processes. In this example, ICS 140 provides control logic for controlling industrial device 141. Industrial device 141 can include an operation or process implemented by a mechanical or electrical device.
Examples of industrial device 141 include various functions of machinery associated with industrial automation including manufacturing equipment, assembly equipment, packaging equipment, milling equipment, presses, hydraulic equipment, industrial vehicles, vats, batch process equipment, tanks, fillers, sorters, scanning equipment, or other machine systems, including combinations thereof. Further examples of industrial device 141 include machine control systems, such as motor power controls, motor control centers, pump power controls, lathe machine speed controls, roller mechanism engagement systems, on/off functions of a manufacturing device, a lift function for a forklift, robotic arms, among other examples. Examples ICS 140 include Rockwell Automation or other industrial automation and information products including operator interfaces, drives, variable frequency drives, motors, I/O modules, programmable controllers, circuit breakers, contactors, motor protectors, energy and power monitors, PowerFlex® drives, servo drives, servo motors, push buttons, signaling devices, relays, timers, switches, or safety devices.
The request and code may originate, and may be created and sent in different manners. As shown in the example in
The code and request may originate and be sent from the programming or runtime computer 230 to the licensing computer 210. The code may originate at the programming or runtime computer 230 and be manually entered into the other device 120, combined with a request, and sent from the other device 120 to the licensing computer 210.
The licensing system then identifies or creates an activation code which enables the software on programming computer and/or ICS 140. There may be many different ways to identify or generate and track codes used by the system and/or the customer. The codes may be included with the software when installed at the industrial site, or at another time or place. The licensing computer 210 may keep track of which codes are used, how many codes are used, etc.
Once identified, the activation code may be communicated to device 120. In this example, device 120 is a cellular telephone capable of communicating via the Internet to the licensing computer 210. However, device 120 is typically not capable of programming the ICS 140, or communicating with programming computer 230.
The activation code may get to the remote system in many ways, including those shown in the example of
The activation code may be entered into programming computer 230. Once the code is authenticated, the software may be activated, enabled, or otherwise made useable. The programming computer 230 may then be able to program ICS 140. Alternatively, the activation code may be passed on to the ICS 140 for authentication either by the user or the programming computer 230, and software on ICS 140 may be authenticated and enabled.
Request may also be accompanied by a system code created at the ICS 140. The request and/or code may also include other information about the system including type and number of ICSs 140, type and number of industrial devices 141, customer, application, integrator, original manufacturer, original programmer, system characteristics, hardware component IDs, a code which includes information regarding the above, etc.
Licensing system 110 identifies or creates (420) an activation code (if any) capable of enabling the software. The identification or creation may be based on information received with the request, such as customer name, integrator name, serial number from the ICS, system or hardware characteristics, a combination of some of them or other information. The identification or creation may be validated versus the availability of licenses or activations for the particular user, location, company or such.
Once the activation code is identified or created, it may be communicated (430) to a user or device by the system. The code may then be used to enable the software.
Communication (430) can happen via email, text message, short message service, extended message service, multimedia message service, enhanced message service, test message service, and/or via a mobile or other telephone, and/or any other method or system, and/or combinations thereof.
Referring back to
Processing system 312 may be implemented within a single processing device but may also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing system 312 include general purpose central processing units, microprocessors, application specific processors, industrial control devices, and/or logic devices, as well as any other type of processing device.
Memory 313 may comprise any storage media readable by processing system 312 and capable of storing software. Memory 313 may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Memory 313 may be implemented as a single storage device but may also be implemented across multiple storage devices or sub-systems.
Memory 313 may comprise additional elements, such as a controller, capable of communicating with processing system 312. Examples of storage media include random access memory, read only memory, and flash memory, as well as any combination or variation thereof, or any other type of storage media. In some implementations, the storage media may be a non-transitory storage media. In some implementations, at least a portion of the storage media may be transitory. It should be understood that in no case is the storage media a propagated signal.
Software stored on or in memory 313 may comprise computer program instructions, firmware, or some other form of machine-readable processing instructions having processes that when executed by processing system 312 direct remote software enabling system 300 to operate as described herein.
The software may also include user software applications. The software may be implemented as a single application or as multiple applications. In general, the software may, when loaded into processing system 312 and executed, transform processing system 312 from a general-purpose device into a special-purpose device customized as described herein.
User interface 314 may have input devices such as a keyboard, a mouse, a voice input device, arrow up/down buttons, and/or a touch input device, and comparable input devices. Output devices such as a display, speakers, printer, and other types of output devices may also be included with user interface 314. User interface 314 may include a graphical user interface. User interface 314 may also be considered to be an integration of remote software enabling system 300 with software elements, such as operating system and application software.
Graphical user interface can include graphical and text-based user input elements, such as forms, slider bars, text boxes, buttons, radio buttons, check boxes, windows, icons, and pull-down menus, among other input elements, including combinations or variations thereof. Graphical user interface can be presented in a spreadsheet, interactive web page, discrete application, mobile phone app, tablet device app, windowing environment, or other graphical environments.
Example industrial automation systems and devices can include an operation or process implemented by a mechanical or electrical device. Examples of industrial automation devices include various functions of machinery associated with industrial automation including manufacturing equipment, assembly equipment, packaging equipment, milling equipment, or other machine systems, including combinations thereof.
The method may also include generating a request code based on hardware or software characteristics of the industrial control system, or a combination thereof. This code may be sent along with the request to a licensing computer or system. The licensing system may then generate an activation code and communicate it back.
Programming system 130 is capable of receiving an activation code (520). Enablement code may then be authenticated (530). Authentication may include matching a code stored in the software and/or device, among other methods and systems for authenticating the code.
Once the code is authenticated, the software may be enabled/activated (540). The software may then be used to modify ICS 140. Alternatively the software may be authenticated and enabled on ICS 130, and the software may be used via a user interface of ICS 130.
The included descriptions and figures depict specific embodiments to teach those skilled in the art how to make and use the best mode. For the purpose of teaching inventive principles, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these embodiments that fall within the scope of this disclosure. Those skilled in the art will also appreciate that the features described above can be combined in various ways to form multiple embodiments. As a result, the invention is not limited to the specific embodiments described above, but only by the claims and their equivalents.