# US 9,110,653 B2 · Generating PLC code from CAD models

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,110,653 B2
- Document ID: US9110653B2
- Status: Granted
- Kind: B2
- Application number: 13/364,368
- Filed: 2012-02-02
- Published: 2013-02-28
- Granted: 2015-08-18
- Earliest claimed: 2011-08-26
- Assignees: Siemens Product Lifecycle Management Software Inc.
- Applicants: Arquimedes Martinez Canedo; Lingyun Lu
- Inventors: Arquimedes Martinez Canedo; Lingyun Lu
- Web page: https://patentgrep.com/patent/US9110653B2

## CPC

- G06F 8/30: Creation or generation of source code
- G05B 17/00: Systems involving the use of models or simulators of said systems (G05B13/00, G05B15/00, G05B19/00 take precedence)
- G05B 19/052: {Linking several PLC's}
- G05B 2219/34333: Multi threading
- Y02P 90/02: Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G05B: CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS (systems for controlling or regulating non-electric variables G05D; systems for regulating electric or magnetic variables G05F; control devices or systems insofar as characterised by mechanical features only G05G)
- Y02P: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS

## Abstract

Product data management systems, methods, and mediums. A method includes receiving a functional model, and identifying a plurality of elements of the functional model. Each element corresponds to one or more machine operations. The method includes identifying concurrencies between elements to determine at least one set of elements. The method includes creating an execution thread for each of the sets of elements. The method can include generating a rule-based programmable logic controller (PLC) program corresponding to the functional model, based on the execution threads.

## Claims

### Claim 1

A method performed by a product data management (PDM) data processing system, comprising:
receiving a functional model;
identifying a plurality of elements of the functional model, by the PDM data processing system, each element corresponding to one or more machine operations;
identifying concurrencies between elements, by the PDM data processing system, to determine a plurality of sets of elements, each set of elements including elements that are dependent on each other and each set being independent of each other set;
creating an execution thread for each of the sets of elements, by the PDM data processing system, based on the identified concurrencies; and
generating a programmable logic controller (PLC) program corresponding to the functional model, based on the execution threads.

### Claim 2 (depends on 1)

The method of claim 1, wherein the PDM data processing system applies rules from a rules database to select PLC code from a code repository.

### Claim 3 (depends on 2)

The method of claim 2, wherein the PLC program is synthesized from the selected PLC code.

### Claim 4 (depends on 1)

The method of claim 1, wherein the PDM data processing system also creates a symbol table that includes known and unknown variables.

### Claim 5 (depends on 1)

The method of claim 1, wherein the PDM data processing system also identifies cycles in each set of elements.

### Claim 6 (depends on 1)

The method of claim 1, wherein the PDM data processing system also produces a schedule for each element.

### Claim 7 (depends on 1)

The method of claim 1, wherein the PDM data processing system also identifies the context of the at least one set of elements.

### Claim 8

A product data management (PDM) data processing system, comprising:
at least one processor; and
an accessible memory, wherein the PDM data processing system is configured to:
receive a functional model;
identify a plurality of elements of the functional model, each element corresponding to one or more machine operations;
identify concurrencies between elements to determine a plurality of sets of elements, each set of elements including elements that are dependent on each other and each set being independent of each other set;
create an execution thread for each of the sets of elements; based on the identified concurrencies, and
generate a programmable logic controller (PLC) program corresponding to the functional model, based on the execution threads.

### Claim 9 (depends on 8)

The PDM data processing system of claim 8, wherein the PDM data processing system applies rules from a rules database to select PLC code from a code repository.

### Claim 10 (depends on 9)

The PDM data processing system of claim 9, wherein the PLC program is synthesized from the selected PLC code.

### Claim 11 (depends on 8)

The PDM data processing system of claim 8, wherein the PDM data processing system also creates a symbol table that includes known and unknown variables.

### Claim 12 (depends on 8)

The PDM data processing system of claim 8, wherein the PDM data processing system also identifies cycles in each set of elements.

### Claim 13 (depends on 8)

The PDM data processing system of claim 8, wherein the PDM data processing system also produces a schedule for each element.

### Claim 14 (depends on 8)

The PDM data processing system of claim 8, wherein the PDM data processing system also identifies the context of the at least one set of elements.

### Claim 15

A non-transitory computer-readable medium encoded with executable instructions that, when executed, cause a product data management (PDM) data processing system to:
receive a functional model;
identify a plurality of elements of the functional model, each element corresponding to one or more machine models;
identify concurrencies between elements to determine a plurality of sets of elements, each set of elements including elements that are dependent on each other and each set being independent of each other set;
create an execution thread for each of the sets of elements, based on the identified concurrencies; and
generate a programmable logic controller (PLC) program corresponding to the functional model, based on the execution threads.

### Claim 16 (depends on 15)

The computer-readable medium of claim 15, wherein the PDM data processing system applies rules from a rules database to select PLC code from a code repository.

### Claim 17 (depends on 16)

The computer-readable medium of claim 16, wherein the PLC program is synthesized from the selected PLC code.

### Claim 18 (depends on 15)

The computer-readable medium of claim 15, wherein the PDM data processing system also creates a symbol table that includes known and unknown variables.

### Claim 19

A product data management (PDM) data processing system, comprising:
means for receiving a functional model;
means for identifying a plurality of elements of the functional model, each element corresponding to one or more machine operations;
means for identifying concurrencies between elements to determine a plurality of sets of elements, each set of elements including elements that are dependent on each other and each set being independent of each other set;
means for creating an execution thread for each of the sets of elements, based on the identified concurrencies; and
means for generating a programmable logic controller (PLC) program corresponding to the functional model, based on the execution threads.

### Claim 20 (depends on 19)

The PDM data processing system of claim 19, wherein the PDM data processing system applies rules from a rules database to select PLC code from a code repository, and wherein the PLC program is synthesized from the selected PLC code.
