AUTOMATED SOLAR COLLECTOR INSTALLATION DESIGN INCLUDING VERSION MANAGEMENT
Embodiments may include systems and methods to create and edit a representation of a worksite, to create various data objects, to classify such objects as various types of pre-defined “features” with attendant properties and layout constraints. As part of or in addition to classification, an embodiment may include systems and methods to create, associate, and edit intrinsic and extrinsic properties to these objects. A design engine may apply of design rules to the features described above to generate one or more solar collectors installation design alternatives, including generation of on-screen and/or paper representations of the physical layout or arrangement of the one or more design alternatives. Some embodiments may provide viewing, creating, and manipulating of multiple versions of a solar collector layout design for a particular installation worksite. The use of versions may allow analysis of alternative layouts, alternative feature classifications, and cost and performance data corresponding to alternative design choices. Version summary information providing a representative comparison between versions across a number of dimensions may be provided.
Latest SUNPOWER CORPORATION Patents:
This application claims the benefit of priority under 35 U.S.C. §119(e) of U.S. Provisional Application No. 61/154,344, filed on Feb. 20, 2009, and entitled “AUTOMATED SOLAR COLLECTOR INSTALLATION DESIGN INCLUDING VERSION MANAGEMENT”, which is hereby incorporated herein by reference in its entirety.
STATEMENT OF GOVERNMENT SUPPORTThe invention described herein was made with governmental support under contract number DE-FC36-07GO17043 awarded by the United States Department of Energy. The United States Government may have certain rights in the invention.
BACKGROUND OF THE INVENTIONIn recent years, solar power has become an increasingly important source of energy. Solar energy may be collected and harnessed in numerous ways, including through the use of solar collectors such as photovoltaic (PV) modules and solar-thermal heat and power collectors and converters. The size of these projects may vary tremendously—from single-family residential rooftops to sites exceeding one million PV modules.
The cost, useful lifetime, energy generation and economic value of solar power plants is highly dependent on many complex and interrelated parameters including but not limited to: i) location, ii) weather, iii) physical obstructions that interfere with layout, such as a skylight, iv) non-physical site features such as property line set-backs or utility right-of-ways, v) physical obstructions that may cast shade on the system, vi) local building codes that set weight limits and fire safety protection, vii) environmental conditions such as design wind speed tolerance, viii) available mounting surface, such as the ground, a roof-top or a framework above a parking lot, ix) local, state and federal law, x) utility electrical interconnection requirements, xi) existing electrical equipment at a customer's worksite and xii) the customer's cost of electricity or energy. The task of designing and analyzing an efficient system that comports with these requirements can be complex, time consuming, and error prone, and may constitute a major cost of solar energy project development.
SUMMARY OF THE INVENTIONA computer-based user interface for designing a solar collector installation is disclosed and may include a representation of an installation worksite that contains feature properties corresponding to physical features of the worksite and a solar collector installation layout including solar collectors arranged on at least one surface feature of the worksite, that may be stored in computer storage. The interface may further include a representation of a plurality of differing versions of project state information. Each version of project state information may contain a unique set of user-defined design preferences, feature properties, and/or project properties, etc. Each of the versions may correspond to an alternative solar collector installation layout, and the alternative solar collector installation layout for each version may result from the differences between the unique sets of user-defined design preferences, feature properties, and/or project properties, etc. Each of the differing versions may share at least some of the project state information. The interface may provide a control operable to allow a user to select at least a part of one of the differing versions of project state information for display as at least a part of the solar collector installation layout.
A solar collector installation project data structure is disclosed for use in generating a solar collector design for a worksite. The data structure may include at least two alternative versions of the solar collector design. Each version may include an alternative set of independent project state information and/or a single set of shared project state information. The shared project state information may include at least some information about one or more of the worksite and physical features contained within the worksite. The shared project state information and a first one of the alternative sets of independent project state information may in combination specify at least a part of a first solar collector installation design. The shared project state information and a second one of the alternative sets of independent project state information may be used in combination to specify a second solar collector installation design. The second solar collector installation design may be distinct from the first solar collector installation designer.
Computer aided design systems (CAD) have been in commercial use for many decades. CAD systems provide efficient methods to automate the creation, editing, presentation, and retrieval of design information. The power of CAD systems has been enhanced through the use of “knowledge-based” programming techniques whereby engineering and/or design rules can be formalized, encoded and executed to automate portions of the design process or to detect potential design errors. A common example of a knowledge-based system is the grammar checking function found in most commercial word processors whereby many rules of English grammar have been encoded and are automatically applied to text documents to highlight potential errors and suggest corrective action.
The systems and methods described herein involve the application of knowledge-based CAD techniques for the automatic layout, evaluation, and optimization of solar energy system designs consistent with a large number of design constraints, such as the local site conditions, engineering rules, and building codes. A preferred embodiment is implemented as an integrated set of software customizations to an existing CAD system, such as AutoCAD®. Alternatively, the systems and methods described herein may be implemented as completely new standalone software program(s).
A preferred embodiment of the invention described herein provides a system and method for designing solar collector layouts suitable for installation at a given worksite. The embodiment may include systems and methods to create and edit various data “objects” and to classify such objects as various types of pre-defined “features” with attendant properties and layout constraints. The classes or categories of features may include (i) physical worksite features such as walls, roofs and exhaust fans; (ii) intangible, non-physical worksite features such property boundaries, zoning boundaries, utility right-of-ways, flood plains, environmentally-sensitive areas, special seismic zones, and utility easements; and (iii) solar energy system components and arrangements. As part of or in addition to classification, the embodiment may include systems and methods to create, assign, and edit intrinsic and extrinsic properties to these objects. Intrinsic feature properties include those that are inherent to the object itself, such as height, weight and cost. Extrinsic properties include definitions of how objects interact with other objects. An example of an extrinsic property includes a “setback” provision that establishes the minimum distance (setback) between an object and any adjacent objects.
For example, in a particular legal jurisdiction, it may be impermissible for a structure to be placed within 30 feet of a property boundary. Using a system according to an embodiment, a user may first create a “Property Boundary” feature type as follows: The user may (i) create a new type of feature class named “Property Boundary,” (ii) set the visual representation of the Property Boundary feature class to be a dashed black line; (iii) define a property called “Set Back” and assign it to the “Property Boundary” feature class, (iv) assign a default value, such as 30 feet, to this feature type; and (v) store this feature class definition within a feature class database for use in a particular design or for general use in any project design.
Subsequently, a designer may use the pre-defined feature type “Property Boundary” as follows: The designer may (i) create or import a representation of an installation worksite into an embodiment, (ii) assign the pre-defined type “Property Boundary” to one or more geometric elements in the worksite representation (such as a line), (iii) subsequently change the value of the object's “Set Back” property as necessary, e.g., to 20 feet, and (iv) command the embodiment to generate a solar system design, including a layout of solar collectors, that complies with the setback provisions of the objects marked as “Property Boundaries.”
As part of the process of generating a solar collector layout, a preferred embodiment of the invention may provide methods and systems for the (i) creation of design rules, (ii) application of these design rules to the objects described above to generate one or more solar energy system design alternatives, (iii) generation of on-screen and/or paper representations of the physical layout or arrangement of the one or more design alternatives, (iv) generation of summaries of one or more versions of one or more designs, such as part count, capacity, cost and energy production, (v) tracking of exceptions to software-encoded design rules for user compliance or the manual modification or override of such design rules as a mechanism to provide both flexibility to the user and assurance that customer, engineering, legal, and manufacturer requirements are addressed, and (vi) generation of visual information for the designer to enable them to assess, in real-time, the relative benefit of design alternatives and design modifications to assist in design optimization.
A method of operation according to a preferred embodiment includes: (i) importing information describing the worksite into the knowledge-based solar CAD system or the creation of this geometric description using the CAD system; (ii) associating, as by classifying or categorizing, each of the relevant graphical elements that describe the worksite as one or more instances of pre-defined data object types and adjusting their respective properties; (iii) designating “work areas,” e.g., areas of the worksite where project layout may be intended; (iv) choosing design preferences, such as solar collector type and installation size; (v) automatic design generation according to the feature classifications defined in the data representation of the worksite and their attendant properties; (vi) evaluation of the design according to one or more metrics; (vii) generation and comparison of design alternatives; (viii) optimization of a design through design modification and selection of alternatives; and (ix) generation of a list of design exceptions, such as contractual exclusions.
Association may be performed by classifying particular geometric object(s) in a representation of a worksite as an instance of a type of feature, such as “roof” or “exhaust fan.” Such classifications may operate to associate the geometric objects with specific properties and layout constraints used to perform the automatic solar energy system design. Additional design rules and properties relating to worksite properties and layout constraints, design preferences, module properties and constraints, performance targets, and so forth, may also be defined. All of this encoded information may be used by the tool to automatically generate a design for the solar module installation that is consistent with designer preferences, project constraints, engineering practice, building codes, etc., and to produce associated information, such as wiring schema, bills of material, presentations, contracts, summaries, auditing reports, other deliverables or outputs according to Table I, etc.
As mentioned above, a tool may also provide control over layout generation by providing a designer with the ability to define one or more particular boundaries for layout generation. Users may define one or more work areas that may correspond to boundaries within which solar collectors may be placed (consistent with other properties and rules, e.g., the properties of classified objects). In this way, a user may use a work area, e.g., to limit solar collector module layout to a portion of the worksite, such as the south facing portion of a roof. Users may also define one or more layout apertures, each of which may correspond to boundaries in which layouts should comply with a distinct set of user-defined design preferences. The use of apertures with distinct design preferences may allow a user, e.g., to place one type of module in one region of a roof and another type of module in another region of a roof.
In some embodiments, as a designer goes through the process of classifying features, generating layouts, and then modifying those layouts, as discussed above, metadata about the design process may be generated. This metadata may take many forms, and may include information about actions the designer has taken, actions the designer should take, and design information that may be useful to supervisors, co-designers, and downstream users and recipients of the design.
In some embodiments, a user interface may be provided such that some or all of this metadata may be presented to the designer in the form of exceptions to encoded rules in the software. Such rules may originate from customer requirements, governmental laws and regulations, engineering constraints, solar collector manufacturer guidelines, etc. Exceptions can include the failure to provide properties, such as a project work area location. The designer may interact with these exceptions in a variety of ways, such as by complying with rules to remove an item from the exceptions list or overriding the application of the rules. Some or all of the metadata may be associated with the design, such as by common storage or reference. Thereafter, downstream users and processors of the design, including automated systems, may access the information. The information may also be summarized, exported, translated, or otherwise operated upon by the system. The list of exceptions may serve as a “To Do” list (and may be named as such in a user interface) for the user, affording the user flexibility in the manner and sequence in which the software rules are addressed while at the same time providing assurances that they do get addressed. The exceptions and how they were handled can also be maintained in a history for later review, and can aid in ensuring that contract documents reflect unusual or non-standard choices.
Some embodiments may provide a system and user interface for viewing, creating, and manipulating multiple versions of a solar collector layout design for a particular installation worksite. The use of versions may allow, for example, a designer to quickly and easily change inputs (e.g., design preferences and/or feature or project properties) and view the resultant outputs (e.g., alternative layouts, cost and performance data) that correspond to the alternative design choices (e.g., the cost impact of using various types of PV modules) for the same project. These versions may provide the designer with the ability to rapidly model different layouts based on changes in user inputs and evaluate the results. Some embodiments may allow the designer to quickly move from one version to another, while others may allow a designer to affect multiple versions with one action. Versions may share one or more sets of elements, properties, or design rules, such that changes made to one version apply to related versions. For example, generic changes to a worksite, such as the addition of a newly discovered site feature, may affect multiple design versions. The versions may share information, by, for example, being located in a single, e.g., composite, file.
1. INTRODUCTIONConcepts described herein are applicable to solar energy collector installations generally. Various types of solar energy collectors, such as panels, absorbers and reflectors, and other energy conversion technologies, such as photovoltaic (PV) modules, solar-thermal absorbers, and concentrating solar power (CSP) solar systems, may be used. Solar collectors may be self-mounted or placed on mounting systems of various types, including tilted, fixed, and tracking systems. Systems may be designed for on-grid connection to public utilities and/or for off-grid systems. Solar collectors and mounting systems may be attached to or located on variously the ground, rooftops, walls, parking structures, and so forth. For ease of exposition, embodiments are herein largely discussed in connection with PV module installations. It will be understood, however, the embodiments are applicable to solar collectors generally and as described above.
The task of designing a PV installation typically includes several non-trivial and co-dependent processes. These processes include, for example, (1) selection of particular PV modules based on, e.g., availability, cost, efficiency, power requirements, etc.; (2) generation of a placement (layout) of PV modules at an installation worksite; (3) generation of a wiring (routing) scheme for the placed PV modules; (4) estimation of project outputs, including power production, power conversion efficiency, etc., based upon complex and project-specific inputs; (5) generation of downstream documents, such as project bills of material (BOMs), contracts, etc. Of course, all of the foregoing must be done in compliance with local regulations, national regulations, etc. A sequence of typical steps performed in a large-scale solar project is provided in Table II.
As the size of an installation increases, as measured, e.g., by module count, the difficulty of performing the above processes increases. Even ostensibly trivial changes, such as adding a module in a given a row, can have far-reaching impacts on wiring topology and/or the placement of other modules, and, therefore on the resultant system design and outputs of the system (such as power output). Moreover, because of such complexity, the optimization or modification of layouts, including re-arranging, adding, or removing modules, can be difficult and, especially for large projects, can begin to resemble a process of trial-and-error. By the time a project is designed, which can often take ten to twenty weeks, or a contract finalized, which may take many more months, the originally-contemplated components used in the layout might not be available and significant redesign may be required.
Some of the tedium and complexity of creating a design for a worksite can be reduced through the use of automated tools. In particular, software or otherwise computer-implemented tools are described herein that may automatically generate a design for a worksite based upon encoded information corresponding to engineering practice, designer preference, and worksite conditions. Some such tools will use as a starting point a CAD representation of an installation worksite, e.g., an AutoCAD .DWG file. This file may include a vector or bitmap representation of a worksite, which may typically be represented as a collection of geometric objects, such as lines, polylines, curves, squares, rectangles, splines, symbols, polygons, other 2D or 3D shapes, surfaces, solids, image data, etc. This representation may typically not have much or any semantic information attached to the geometric objects; in particular, the information in this representation may be limited to shapes and dimensions corresponding to features of the physical worksite. So, for example, a 2D plan view representation of a roof with an exhaust fan might consist of a set of four lines forming a large rectangle (the roof) and another set of four lines forming a smaller square (the exhaust fan) where the smaller square is contained within the large rectangle. Conventional tools for CAD, as well as some embodiments, may provide the ability for the user to create this initial representation of geometric objects. Alternatively, the user may import it from a storage location, such as a computer file.
Some embodiments may provide a mechanism by which objects in the representation may be classified (e.g., categorized or tagged) so as to associate the object with semantic information relevant to generating a module layout, such as feature type. For example, a set of lines may be classified by a user as an instance of the pre-existing feature class of “roof”. The system may use this classification to associate the objects with a set of semantic information corresponding to the relationship between a roof and a module layout. This information may be related to the intrinsic physical properties of a roof, such as “pitch=17 degrees” and “height=30.0 feet,” and/or extrinsic properties of a roof (such as “edge setback=1.0 foot”). Such properties typically may be editable by the user and may vary across different instances of the same general type and by legal jurisdiction (zoning laws, etc.). An example list of feature classes is provided in Table III; an example list of feature properties is shown in Table IV.
Similarly, another object (or set of objects) in the worksite representation may be classified by the user as an instance of the feature type “exhaust fan.” The system may thereafter associate the object with feature properties corresponding to a exhaust fan, such as “height=3 feet.” In some embodiments, a virtually unlimited number of objects may be classified as different types of features with different properties. For some of these various features, feature properties may be categorically pre-determined (and thus applicable and invariant to each instance of a particular class or type) while other feature properties may merely have default, instance-specific values. Many feature properties, such as height, may be adjusted by a user as necessary and/or expedient, while other types of feature properties, such as those that are relevant to the entire feature class, may or may not be editable by a user. As such, each classified object may have feature properties shared with and/or distinct from those of other classified objects.
The semantic information associated with a particular object may also correspond to generalized design rules that may typically be invariant for all instances of the particular feature class. For example, objects classified as roofs may generally be associated by the system with appropriate feature layout constraints, such as “collector layout allowable=yes,” and other design rules relating to how modules may be placed on or around a roof. As discussed below, in some embodiments, design rules may be overridden at least during initial use of the software, but a list of exceptions maintained to track any variances from the rules' requirements.
In this way, through the classification actions of the user, the original, simple geometric representations of objects may be assigned additional, e.g., higher-level, feature information to be used by the automatic design system. In addition, the system may provide a mechanism by which objects are automatically classified as instances of features and by which values are assigned to feature properties and design properties. A shape-recognition algorithm, learning algorithm, or other expert system may be used to classify objects and assign values. In addition, geometric objects may be modified, e.g., repaired, as by a pre-processing stage, to place the objects in a better condition or position for classification, feature assignment, or layout processing. A repair engine may also use input from a designer, e.g., an attempted classification, as a basis for repairing objects. For example, if a designer attempts to classify four lines as a “roof,” but the lines do not form a fully-closed shape, a software repair engine may attempt to repair the objects, as by making the appropriate lines co-terminal.
Some embodiments may provide a layout component, such as a layout engine software module, that uses the classified objects, their classifications and encoded information, e.g., the set of feature properties, and possibly other information as described below, to create a module installation design. So, for example, because an object classified as a “roof” may be associated with the layout rule of “layout allowable=yes,” a layout engine may know that it may consider placing solar collectors in the bounded area between the classified objects marked as forming a “roof” Similarly, the layout engine may know not to allow placement modules in the area corresponding to objects marked as “exhaust fan,” because exhaust fans, as a class or as a particular instance, may be associated with the layout rule of “layout allowable=no.” As such, objects that potentially allow placement of modules within them, such as roofs, may be referred to as creating implicit “work areas” in which modules may be placed (consistent with other layout rules), such that separate user definitions of a work area may not be needed.
A user may also be provided with mechanisms to assert even greater control over the layout process. For example, a user may be allowed to refine the boundaries of acceptable module placement by, e.g., explicitly defining one or more user-created work areas. A user-created work area may be a geometric object created by the user and associated with a particular set of layout rules, including, for example, “layout allowable=yes.” A layout engine software module thus may be configured to consider placing solar collectors only in locations that are contained within an explicit, e.g., user-created, work area, an implicit work area, either, or both. This may be useful, for example, if a designer wished to limit solar collector layout to only a portion of a roof, which could be accomplished by creating a work area over only the desired portion of the roof.
A user may also be allowed to specify different design preferences, such as module type or orientation for the solar collector layout, and, moreover, different choices can be made to apply to different areas of the representation. Table V provides an illustrative list of sample design preferences. So, for example, a user may be allowed to define a boundary wherein a particular set of design preferences is applied e.g., by defining one or more apertures. An aperture may be a boundary or frame represented by a geometric object created by the user. The system may associate the aperture with a set of design preferences, including, for example “PV module=SD305” and/or “tilt=45 degrees.” A layout engine may be configured to place solar collectors, e.g., PV modules, within the boundaries of a given aperture consistently with the aperture's assigned design preferences and the relevant feature properties, layout rules, and other applicable properties and design rules. In some cases, a user may define more than one aperture, and, thus, the layout engine may use varying sets of design preferences for layouts in different areas of the worksite. Distinct apertures may be useful, for example, if a designer wished to place one type of module, e.g., SD305s oriented north-south, in one area of a roof and another module, e.g., SP225s oriented east-west, in another area of the roof. As another example, multiple apertures may provide heterogeneous layouts for the purpose of defining different spacings between rows of modules in different regions of a work area. According to some embodiments, a layout of solar collectors may be generated in any allowable solar collector installation region within (e.g., only within) a work area and within a layout aperture according to the aperture's design preferences regarding placement of solar collectors and the properties of any objects and features, and the layout rules or constraints associated therewith. The layout may take into account collector modules and other objects and features that are outside a work area or aperture if, for example, the design preferences and properties of the objects are such that setbacks call for it. For example, an object such as an exhaust vent may be wholly or partially outside an aperture, but if the application of design preferences restricts the layout of modules within a meter of the vent, and the exhaust vent is sufficiently proximate to the aperture or work area, then that exhaust vent may be taken into account.
In some cases, apertures as defined by the user might overlap or otherwise interrelate with each other. In such a case, aperture conflict resolution rules may be utilized. For example, a conflict resolution rule may define Aperture 1 as taking priority over Aperture 2. A layout engine may thus give modules placed in accordance with Aperture 1 priority over those placed in accordance with Aperture 2. This may be useful, for example, if the designer defines apertures with overlapping boundaries, or if a designer wished to place solar collectors, e.g., PV modules, on both sections of a concave roof (i.e., the facing walls of an inverted or “V”-shaped roof). Because collectors and their mounting structures may have significant height, there may be a conflict in module placement at the intersection of the two roof section (i.e., the bottom of the V). If one roof section receives more sunlight than the other, the designer may wish to define an aperture for the sunny section, and an aperture for the shady section. The user may be allowed to assign priorities to the two apertures, such that, in the event of conflict, the layout engine will place modules according to the design preferences of the sunny aperture over the design preferences of the shady aperture. This may result in a net increase in the average per-module power generation for the installation. A default priority may be assigned to apertures, for example, in accordance with the sequence in which the user defines the apertures or an explicit priority.
The results of a design, including layout, may be displayed, saved, printed, transmitted, or otherwise utilized. Additional information pertaining to the layout, such as bill of materials, a rendering, a financial analysis, a contract, a contract term, an energy projection, a cost analysis, a parts list, a simulation, a project schedule, an avoided cost analysis, a presentation, a term sheet, and so forth, may be generated based on the encoded information and generated layout.
Software controls to perform the foregoing actions may be included as part of CAD software. Alternatively or additionally, a specialized engine, library, or plugin may be loaded into the CAD software at startup or on demand. Alternatively, a specialized or new software program may be written dedicated to the implementation of embodiments of the invention. Many mechanisms for creating, selecting, and operating upon objects in a CAD software environment are well-known in the art; such mechanisms include, for example, click-select, drag-select, shift-select, clicking and right-clicking on icons, toolbars, popups, objects, and so forth. Joe Sutphin's “AutoCAD 2006 VBA: A Programmer's Reference,” 101 Productions (2005), ISBN 9781590595794, which discloses many such methods, is hereby incorporated by reference in its entirety.
2. SYSTEM OPERATION AND USER INTERFACEThe features of a roof may also determine the relative performance of PV modules placed on the roof 101. For example, presuming that the roof 101 is most typically exposed to sunlight from the South (indicated as 105), a PV module placed at a location A is likely to generate more power, on average, than a PV module placed at location B (which is at least partially obscured by a large HVAC appliance 104).
At this point, the representation of the worksite in the CAD software may have very little semantic information attached to it. For example, other than mere geometry, the four line segments that form each of the bounded areas 202 may not be associated semantically with, or otherwise have meaning in relation to, the corresponding exhaust fan features 102. Characteristics of an exhaust fan feature relevant to PV module design, such as typical setback or the shadows it may cast (e.g., is expected to cast) at different times of day or year, might not be incorporated in the representation. Similarly, the lines 201 corresponding to the outline of the roof might not be associated semantically in the CAD software with the roof 101 of the worksite. Rather, from the perspective of the CAD software, the visual representation may simply be a collection of geometric objects with dimension information only, removed from semantic relation to each other, the external worksite, or solar collector installation design. Alternatively, the representation may have some semantic information attached to objects, such as, for example GPS data. This data may be used in subsequent steps in the process.
So, for example, polyline 201 may be associated with a type of feature, such as “roof” This classification may implicate layout rules relating to the placement of PV modules on roofs. These rules, when invoked by a layout engine, may operate on feature properties of the particular roof (e.g., a vertical height off the ground and roof pitch). The properties associated with an object may be determined by correspondence or interrelation with other object properties. So, for example the height of an exhaust fan relative to a roof (which may be useful for calculating the shadow cast by the exhaust fan on the roof) may be determined from feature properties describing the absolute maximal altitude of the exhaust fan and the absolute height of the roof at the point of the exhaust fan (which itself may be determinable by the roofs properties of height and pitch). In this way, the encoded information, including object classifications and feature properties, may form (or be associated with) a complete or partial specification of the characteristics of the physical features of the installation worksite as they relate to PV module layout design. In particular, the characteristics of the physical feature related to solar collector layout design may include or form at least a partial set of information for the automatic placement of solar collectors within or around that physical feature. Pre-defined feature classifications and classes may include physical features and non-physical features, such as a property boundary, a real-estate parcel boundary, a zoning designation, a utility right-of-way, a flood plain, an environmentally-sensitive area, or a special seismic zone.
In particular, some geometric objects may be classified as instances of features types that provide allowance for placement of PV modules, e.g., a geometric object classified as a roof may be associated with a layout rule that generally allows placement of PV modules on its surface. As such, the classification of an object as a “roof” may cause that object to be treated as an implicit work area. Similarly, some geometric objects may be classified as features that prohibit, or otherwise do not generally allow, placement of PV modules, e.g., a geometric object classified as a pond or an air conditioning unit may be associated with a layout rule that generally does not allow placement of PV modules on the obstruction or within a prescribed boundary, e.g., distance, of the obstruction. Other layout rules to be imposed on the placement of PV modules may be defined, including constraints embodying the application of construction regulations and codes, wind conditions, temperature conditions, power and heat generation limitations to module placement on or nearby a given feature.
The form and content of the feature properties associated with a given type of feature may precede or pre-exist the creation of a corresponding object. Classes of physical features, and the encoded information corresponding thereto, may be predefined. So, for example, the set of properties and default values corresponding to a roof or other surface, and the design rules that apply to them, may be stored in a database and/or as part of a class definition. (See Tables III-IV.) When a particular object is classified as a roof, the class definition may be instantiated and associated with the particular object. Of course, the software may provide a mechanism whereby additional types of features may be defined by the designer and used for classification. Similarly, the default or pre-existing encoded information, including default values for properties and layout constraints, for a given type of object may be modified by designers or administrators. Modification of the encoded information may take place before generation of a layout and/or after generation of a layout. Modification of certain encoded information, such as feature properties, after generation of a layout may trigger automatic regeneration of the layout based upon the new set of data. Some implementations may allow the creation or modification of feature classes at the time of categorization. For example, the user interface may present the above-described capabilities integrated into or accessible from the classification interface components.
The mechanisms or user interface controls by which objects are classified, modified, or otherwise associated with properties may vary. For example, as shown in
Mechanisms for automatically repairing invalid or deficient worksite geometry may be employed. For example, suppose that, in one embodiment, the design rules require that a “roof” be represented by a closed polygon. Suppose further that the geometric information corresponding to a roof in a worksite representation is composed of four line segments whose common endpoints are in close proximity but are not coincident (i.e., not forming a closed shape). This geometrical representation may cause a processing error or produce incorrect results if the line endpoints are left non-coincident. In one embodiment, a mechanism may be provided to pre-process geometric elements during classification, for instance, to transform line segments with non-coincidental endpoints that are within a specified degree of closeness to each other into line segments with shared end-points. Geometric algorithms for repair of non-semantic geometric data exist.
The software may also provide controls to allow a user to see and/or modify some or all of the encoded information, such as editable properties, associated with a given object. So, for example, the user interface may include a properties roll-up, toolbar, or palette 311 that shows representations of some or all of the feature properties associated with that object. Some feature properties, such as vertical height 312 for a roof, may be adjusted by the user. Other feature properties, such as the resulting area, e.g., in square meters, of the roof that may be used to place PV modules may be calculated by the software, e.g., dictated by the interaction of layout constraints, feature properties, and so forth. Other information, such as an indication of the layout rules applicable to a given object, e.g. a indication that a particular object is suitable for placement of PV modules, might not be displayed or visible to the user. Many types of controls for modifying the properties of objects in a user interface exist.
Some embodiments may include a hierarchy of feature classes. For example, features may be divided into three main categories: placeable surfaces, solid obstructions, and linear obstructions. Each category may include several types of feature. For example, placeable surfaces may include roofs, fields, walls, etc. Solid obstructions may include exhaust fans, poles, HVAC units, depressions, trees, roof hatches, antennas, satellites, stairs, drains, penthouses, roof shot, skylights, sleepers, survey points, vents, valves, etc. Linear-type obstructions include walkways, equipment, expansion joints, walls, conduits, pipes, etc. Each type of feature may also contain subtypes, e.g., an antenna obstruction may be sub-typed as an outline antenna, a point antenna, etc., and a conduit may be sub-typed as an electrical, water, support, vertical, etc. conduit. Some obstructions may be classified as either solid or linear, depending on the specific geometry (e.g., a set of stairs).
Similarly,
Not all properties need be associated with a particular feature or geometric object in the representation. For example, the software may allow the use and setting of global project properties, such as worksite location (zip code), orientation of the worksite (north arrow), drawing scale, units of measure, country location, customer information (customer name, address, etc.). Project properties may include customer properties, including contact information, legal status, financial condition, utility information, utility rate, and energy consumption, and may be pre-defined. Other project properties may include soil type, weather conditions, design temperature, design seismic load, operating characteristics, load limits, and electrical interconnection requirements, and so forth. This information may be input manually by the designer or may be accessed through a link to an external data source such as a Customer Relationship Management (“CRM”) system used to hold the customer account information. Table VI provides an exemplary list of project properties. Similarly, some design rules, such as project design rules, e.g., global layout rules, may operate independently of any particular feature, such as electric power interconnection standards that regulate the interconnection of any PV system to a public utility. Pre-defined project design rules may form a specification of an electrical code regulation, a property setback requirement, a safety requirement, a interconnection requirement, an engineering rule or best practice, a fusing requirement, etc. Such regulatory rules may be adapted to produce a layout that may be connected to a public utility grid, a private electrical grid, or another specification.
The type(s) of module used in a design may also affect how the layout engine operates, because module types may be associated with particular module-specific information, such as module properties, e.g., inter-module spacing, voltage, wiring requirements, weight, etc. Some module-specific information may be associated with particular types of modules, mounting systems, inverter types, and so forth. Different module design rules may operate on a per-module, per-module-string, and/or per-module-sub-array basis. So, for example, a particular module may require a minimum inter-module spacing and operating temperature or a particular wiring configuration, such as the number of modules per string as a function of temperature. Table VII provides an example list of module properties.
As shown in
As shown in
Under one such algorithm, as illustrated by the flowchart of
At 620, PV modules may first be tiled across one or more work areas, e.g., objects that are known to be “allowable” for placement, such as rooftop surfaces, without regard to obstructions or other interfering features (like exhaust fans). This may be operationalized, for instance, by placing PV modules across implicit work areas, e.g., across objects classified as features that support PV modules. The tiling may be performed by creating a grid or array in the defined space according to the relevant module design rules and properties. The tiling may be parametrically varied to include spacing between rows, or the amount of offset between adjacent rows or along regular or irregular edges such as a curving road or a property line. Additionally, the tiling may correspond to individual modules (with various individually-specified lengths or widths) or may represent collections of modules in arbitrary arrangements (e.g. as modules connected to the same mounting structure or tracking mechanism). Additionally, periodic interruption of tiling to accommodate service roads, mandatory fire access, or other types of design rules may be specified. In some embodiments, geometric objects corresponding to the module objects of the layout may be actually created and placed in the visual representation, as shown in
Returning to
Some module placements may be illegal regardless of relationship with any other modules, such as where a module is placed too close to an exhaust fan. However, some illegal configurations may only be apparent relative to other modules and may therefore be identified recursively. For example, most grid-connected PV installations call for a pre-determined number of modules to be wired in electrical series. For example, when SunPower™ 305 modules are used in Northern California and connected to a 600 VDC inverter, exactly 12 modules must be connected in each series string.
As such, after eliminating “strictly” illegal modules, the system may perform additional “passes” of the remaining modules to perform a recursive or regressive check for additional modules that may fail design rules, such as inter-module connection rules. Such modules may be grayed out as in
Returning to
Controls may be provided to include the ability to change rules or categorizations and re-do the automatic layout. A modification component of a system may provide a user interface, or other mechanism, that allows replacement of a tile that had been placed but subsequently removed (e.g., according to a rule violation). Similarly, a mechanism may be provided to allow a placed module to be removed from a layout.
As shown at 635, user modification of the layout may cause the modified layout to be in an inconsistent state with respect to the relevant design rules and properties, or to otherwise have conflicts. For example, manual addition of a module by a user at a particular point may violate a design rule regarding setback. As such, modifications of a layout, such as addition, replacement, or removal, may cause re-calculation of a layout, recalculation of the routing/wiring scheme for a layout, etc. Modifications of the layout, or any inconsistencies with layout rules, may be noted on an exceptions list as discussed below in more detail. Some implementations may allow a user to disable any automatic re-calculation, and some implementations may allow re-calculation to be invoked by a user.
At 640, user interface controls may be provided so as to allow a user to perform additional actions with or upon a generated layout. For example, a layout may be saved, printed, and/or transmitted. Additionally, layout information, as well as rules and categorizations of objects, may be used to generate additional materials. For example, the performance, e.g., power output, of a particular module layout may be simulated using encoded information related to features in the representation, e.g., the efficiency of the user-selected model of solar collector and an energy-predication simulation rule relating to the amount of sunlight received by a roof area, such as latitude and/or height. Such results, e.g., simulation results, may be displayed or otherwise made available to a designer. As another example, the number and cost of modules and associated components (such as wiring and electrical inverters) may be tallied and used to generate a bill of material, cost estimates, invoices, etc. Multiple types of documents or deliverables, such as those noted in connection with typical layout design processes, may be automatically generated by some embodiments as a downstream output.
3. USER-DEFINED WORK AREASThe systems as described thus far have largely provided for layout of solar collectors, and particularly PV modules, over allowable surfaces or objects, such as roofs, through the use of implicit work areas defined by feature classifications. Additionally or alternatively, a system may provide a user interface to allow more fine-grained control over the layout process by giving the user explicit control over the definition and use of work areas as regions in which modules are allowed to be placed (notwithstanding violations of other design rules).
In particular, as illustrated in
In some cases, a layout engine may be configured to place PV modules only in the intersection between an implicit work area, such as a roof or field and an explicit work area. In other cases, an explicit work area may define allowable placement areas without regard to (or in addition to) other placeable objects or implicit work areas. Explicit work areas may be used to override default placement rules for objects. This allows a designer to have greater control over where to place modules, such as whether to place modules on only a portion of a roof. For example, as shown in
One algorithm for implementing explicit work areas in the context of a layout engine is as follows: With reference to
Work areas may be modified by the user, such as by moving or otherwise adjusting a boundary of the work area. Modification of a work area may or may not cause automatic recalculation or regeneration of a previously generated layout.
4. APERTURESIn addition or alternatively to work areas, a system may provide a user with the ability to define one or more boundaries for application of one or more localized sets of design preferences, e.g. layout apertures. Apertures allow a designer to create heterogeneous zones for the desired layout and may be used to provide another layer of control to the layout process. A layout engine as previously described may use a single set of design preferences (e.g., module type, orientation, start point, etc.) for laying out modules. Alternatively, a user interface may be provided with controls to allow a user to define one or more apertures, each of which may include a boundary. Multiple apertures may be associated with independent and heterogeneous sets of design preferences. Different apertures may have different extents; layout of PV modules within the boundary of an aperture may typically (with exceptions) be determined at least in part by the user-defined design preferences associated with the aperture.
As such, and as shown in
In some cases, the arrangement of modules placed in an intersection or overlap between an aperture and a work area will depend on the aperture's design preferences. So, for example, with reference to
Apertures may be useful, for example, because they may allow a designer to specify one set of design preferences and properties for a first portion of a work area or object, such as a roof, and a second set of design preferences and properties for a second portion of the same work area or object, as shown in
Because apertures may provide differing sets of design preferences for module placement, overlapping or adjacent apertures may cause conflicts in placement. This overlap may be substantial. Aperture conflict resolution rules may be used to resolve inconsistencies in module placement. One simple form of conflict resolution rule is to rank apertures in creation-order, with either first- or last-created aperture having highest priority. Lexicographic order may also be used. A user may be provided with a control to explicitly change the aperture priority order. One method of doing this is to associate each aperture with a user-editable design preference defining its priority, e.g., “priority=2.” A default aperture, if any, may have the lowest priority.
Numerous methods may be used to create modules layouts in accordance with the aperture conflict resolution rules. As an example, apertures may be given a priority as described above, and, in the case of a conflict in placement, priority is given to placement according to the higher-priority aperture.
For example, independent, partial layouts may be generated for all defined apertures, regardless of priority, according to the methods described above as applied primarily to objects and features falling at least partially within each aperture boundary. This computation may be performed in parallel. If no apertures overlap, the union of the two partial layouts may be taken as the ‘final’ layout and may be saved, stored, or rendered on an output device. If there is overlap, however, the conflicts between placed modules may be reconciled based on conflict resolution rules. In some cases, of the conflicting modules, those from the lower-priority aperture may be removed, thus modifying or adjusting the partial installation layout corresponding to the lower-priority aperture. As shown in
Another method of accomplishing this is to analyze each aperture in order of priority, from highest to lowest, and place modules as possible (according to the above) in that aperture, provided such placement is not inconsistent with modules that have already been placed as part of higher-priority apertures. Placement of PV modules will typically take place within the boundaries of a given aperture according to the design preferences of that aperture as applied to the features that intersect (or contain or are contained) within that aperture (as well as those that are outside that aperture but have, for example, setback rules), feature properties, module properties, and project properties. This method produces a set of successive installation layouts, where each successive layout is consistent with the design preferences of the present and all higher-priority apertures. Each of the successive installation layouts may be rendered or stored on a device or medium.
At 932, modules may be placed according to the rules of the first aperture, where “first” may be determined by relative priority rules described above. Modules may be placed only within the boundaries of the first aperture and a work area, whether implicit or explicit. If explicit work areas are defined, modules may be placed only in the intersection(s) between an aperture, a placeable surface, and an explicit work area. If explicit work areas are not defined or not used, modules may be placed in the intersection of an aperture and a work area defined by a placeable object, such as a roof. At 933, modules that conflict with one or more design rules, such as violating setback requirements for exhaust fans, are marked illegal, and thereafter removed or otherwise taken out of the active layout.
At 934, the steps 932 and 933 may be repeated for a second-highest-priority aperture (if any). However, in some cases, in addition to the usual requirements of intersection with a work area, modules may only be placed in the second aperture if they do not conflict with modules already placed in the first aperture. This may be accomplished in the equivalent to the placement stage (932), e.g., never placing modules that conflict with the first aperture. Alternatively, modules may be placed across the second aperture without regard to the first aperture's modules or design preferences, and subsequently removed (during the equivalent of step 933) if found to be conflicting with the modules placed in the first aperture (or the design preferences pertaining thereto).
At 935, steps 932 and 933 may be repeated for a third-highest-priority aperture (if any). Modules may be placed in the third aperture, and according to the rules of the third aperture, but only if they do not conflict with modules placed in the first or second apertures or design preferences thereof. This process can be repeated optionally, as shown at 936, for all remaining apertures in turn. At 937, or at an earlier time, a user may be allowed to modify module placement, which may lead to regeneration of all or part of a layout, based upon the steps described above. As noted above, additional intervening steps may be taken, and any of the above steps repeated as desired before the process ends at 938. The final layout may be displayed on a computing device or otherwise rendered or stored.
5. PROJECT HIERARCHY AND STORAGEA solar installation project design, including a representation of a project worksite, features and their classifications, and a layout of solar collectors, may be characterized by project state information. Project state information includes, generally speaking, the information that can be used to re-create, without more, a particular solar collector installation design. So, for example a typical use of project state information is to allow a design to be saved in a non-volatile memory. Invoking a “save” function or control on a particular design may cause project state information to be written to a hard disk. The software program may then be terminated (clearing all of its working memory) and restarted. A user may then select an “open” function or control and point the software to the saved project state information. The software may then load and operate upon the project state information to re-create the solar installation project.
In some cases, the entire contents of the software's working memory when displaying a particular design can be recognized as “project state information,” since such is enough to fully specify a particular design. However, one advantage of using project state information is that one may use only a subset of the working memory (or even other data), thus reducing both the size and the complexity of the project state information. For example, a given design may include a layout of one million collectors, all of which are of the T10 module type, and laid out in a 1000×1000 sub-array. One way of storing such a design is, e.g., to allocate and store one million “collector” data structures, each with their own copies of relevant properties (such as “Module Type=T10,” location, orientation, etc.) Alternatively, a system might simply store state information along the lines of “1000×1000 sub-array of T10 modules, oriented 0 degrees.” This more compact representation of project state information may be more convenient to store and easier to modify. For example, if a designer were to change the module type for all the modules from T10 to something else, performing that change may call for a scan and change to one million data structures under the first example. Under the second, however, only a single change to the state information may accomplish the modification.
In some embodiments, project state information for a given design will include all of the design inputs, e.g., the data used to regenerate the design. So, for example, project state information may include input information such as the representation of a worksite including geometric objects, classifications of these geometric objects as features, feature properties for each of the classified objects, design preferences, work area definitions, aperture definitions and attendant design preferences, project properties, etc. Project state information may also include other types of inputs, such as user modifications to generated layout information. For example, when a user manually adds a module to a generated layout, such as when the user changes the status of a particular module from “illegal” to “legal,” that module's status may be reflected in project state information.
Project state information may also include output information, such as generated layouts, performance and cost characteristics of same, etc. For example, a bill of materials for a particular design is an output of the design, since it is a function of the inputs of the design, e.g., design preferences. This may allow, for example, caching of output information to reduce computational demands.
Efficient management of project state information can be difficult. In particular, in some embodiments, project state information may provide for “conflicting” information, such as when a user places a PowerGuard module within an aperture boundary designated as T10. If the system is to give effect to both of these actions by the user, it may be useful to have an efficient and powerful representation of project state information.
Accordingly, in some embodiments, the project state information may be recognized as an arrangement of hierarchical elements, which may be represented in a data structure. In some situations, the hierarchy may approach a tree-like structure, in which sub-elements are assigned a unique parent object. In other cases, the hierarchy may be an instance of a more general graph, such as when a particular object has more than one parent object in the hierarchy.
A worksite representation may also include work areas 1005, such as the two work areas illustrated in
As discussed above, according to some embodiments, solar collectors will be placed in the intersections between aperture 1010 and work area 1005. As such, each aperture or work area-aperture intersection may include one or more sub-arrays 1015 of collectors within the apertures 1010. The number and composition of sub-arrays 1015 in a given aperture 1010 may be a function of multiple variables, including obstruction features located within or around (in the proximity of) the boundaries of the apertures. For example, a linear obstruction (such as a wall) that bisects an aperture may cause the layout of collectors within the aperture 1010 to be divided between two sub-arrays 1015, one on each side of the wall. Some embodiments may cause sub-arrays 1015 to have rectangular shapes, other embodiments may create a sub-array 1015 out of each contiguous group of collectors in an aperture 1010, regardless of shape. Still other embodiments may utilize other rules 1004, such as wiring or output requirements, to form sub-arrays 1015.
A given sub-array 1015 may be further divided into strings 1020 of collectors 1025. In some situations, as may be the case with PV modules and as discussed above, depending on the selected model, a given number of collectors may need to be wired together in a particular fashion, e.g., in series, in order to produce a required output voltage. So, for example, if the required output voltage of a given sub-array is 150V at peak power, and if the particular modules being used to form the sub-array each put out 15V at peak, then the modules may be grouped into strings of 10 modules each for installation. The collectors of each string may be wired in series, and each string of a sub-array may be wired in parallel to the other strings of the sub-array. Accordingly, a given sub-array 1010 may be composed of multiple strings 1020. Each of these strings 1020 may be composed of collectors 1025.
As shown in
Each of the elements at each level of the hierarchy may be associated with a set of properties. For example, the properties of a given string may include module count, string location, etc. Some of the possible properties that may be associated with particular work areas, apertures, projects, and features have been illustrated above. The properties of an element may be represented absolutely or with reference to another set of properties. For example, default values for properties may be inherited from parent elements in a data structure representing the hierarchy, and those default values may be overridden by values for properties stored with a given child.
Like properties, design rules such as feature layout rules employed by the layout engine may be associated with the respective elements in the hierarchy. Design rules that are not specific to particular instances of features may be associated with the project or worksite generally, as shown in
In some embodiments, the data structure used by the software to represent project state information, for example, to use for storing and retrieving projects, may be represented as a hierarchical relationship among a collection of elements, the properties, and the design rules associated therewith. For example, project state information may be represented in an XML-type format, wherein a top-level worksite node may contain a listing of features and their classifications. The worksite node may also contain a number of work area nodes, which may, in turn, contain a number of aperture nodes. Each aperture mode may contain sub-array nodes, and so forth. A project hierarchy data structure may represent the state of a design project, in the sense that sufficient information to regenerate a layout may be contained within the data structure.
6. PROJECT EXCEPTIONSIn some embodiments, as a designer goes through the process of classifying features, generating layouts, and then modifying those layouts, as discussed above, metadata about the design process may be generated. Metadata may be determined from the rules that are applied to project state information, such as feature properties, design preferences, version information, etc. This metadata may take many forms, and may include information about actions the designer has taken, actions the designer should take, and design information that may be useful to supervisors, co-designers, and downstream users and recipients of the design. The metadata, and other data, may be used by a system to generate a list of “exceptions” that may encode one or more exceptional conditions in the metadata, e.g., a violation of a rule by the project state information per se, the project state information as reflected in a design output, or some other condition. Exceptional conditions, and corresponding exceptions, may be related to omissions by the user, violations of regulations, violations of solar collector manufacturer specifications, violations of client requirements, violations of engineering principles, violations of physical space constraints, violations of company engineering policy, etc.
Such a list may allow a designer to have more flexibility in the sequence of actions to perform when generating an installation design while still ensuring that the proper actions will be performed eventually and that exceptional conditions, such as design flaws, are not overlooked. In particular, rather than being forced to perform workflow in a certain order, an exceptions list may allow a designer to perform actions in an order of his or her choosing. The exceptions list may be presented to a user without requiring the user to address any of the exceptions (or exceptional conditions) before performing another action. An exceptions list may also provide the ability for a designer to decide whether (or not) to address a particular exception An exceptions list may also provide a simple interface to important information about a design, such as questionable module placement, etc. Thus, a user is allowed to effectively ignore (at least temporarily) an exception, to be dealt with at the user's schedule as part of a “To Do” list. An embodiment may provide an option to a user to ignore a given exception by, for example, making the exception or exception list non-blocking in the user interface. The user is also given the options to comply with the software's expectations for the exceptional condition, such as by providing missing information or removing illegal modules from a generated or user-modified layout. Metadata and exceptions may also be useful for maintaining and generating downstream documents, such as contract exclusions.
In some embodiments, some or all of this metadata, including exceptions, may be associated with the design, such as by common storage or reference with the data structure hierarchy discussed above. Thereafter, downstream users and processors of the design, including automated systems, may use the metadata. The metadata may also be summarized, exported, translated, or otherwise operated upon by the system. Metadata, and exceptions generated therefrom, may include, among other things, information about contractual exclusions, warnings to the designer, and errors in the worksite representation or layout.
As illustrated in
Alternatively, the system may allow the designer to perform some non-related actions while an exception exists, but may require that the designer address the exception before a particular action, such as layout generation, simulation, or downstream document generation is allowed. For example, the designer may be allowed to continue classifying objects before entering a zip code, but may be precluded from generating a layout. As another example, other metadata may indicate fatal conditions, in that continuation with the design is not an option. For example, if a designer places a module over an exhaust fan, the system may generate an error exception 1115. The designer may address the exception 1115 before a finalized design may be created. If the user has not addressed an exception (i.e., ignored it), it may remain in the exceptions list 1105 for supervisor review. Some types of addressing by the user, e.g., compliance with the requested or change, can remove the item from the exceptions list. Other types of addressing by the user, e.g., overriding or otherwise explicit refusal to comply with the requested information or change, results in modification of the exception and maintenance of the exception and the user override input in an exceptions history, which will be useful for future modification, supervisor review, contract generations, etc. Other types of exceptions are discussed below.
A designer may interact with exceptions that call for designer action in a variety of ways. For example, the designer may choose to address the zip code exception 1110 by entering a zip code for the worksite. This may be done in several ways, including through the mechanisms described above for entering project properties. Alternatively, the exception 1110 itself may be associated with a mechanism for addressing it. For example, a zip code exception 1110 may include a field into which a zip code may be entered and thereby associated with the project. When the user addresses an exception, it may cause the system to recalculate or regenerate information. For example, when the user enters a value into the zip code exception, the system may validate the zip code and may, for example, regenerate a layout with the new location information. In response to an exception, a user may provide compliance information sufficient to remedy the exceptional condition or rule violation, which information may include, for example, a project property, a customer property, a feature property, a design preference, a work area boundary, or an aperture boundary. Some embodiments may recognize the compliance information and use the information to modify project sate information or other design information. After receiving the compliance information, the system may remove the corresponding exception
A system may include also exceptions that reflect information or metadata about a design that may be useful for downstream users and processes. For example, if a designer places a module in a configuration that overlaps with a feature classified as an “illegal wind zone” (as may have been determined by an on-site inspector), an exclusion exception 1120 may be generated. These exclusion exceptions may be presented to the designer, as discussed above, and the designer may operate upon a control to comply with, e.g., remove or ameliorate, the exception (by, for example, removing the particular module in question). Alternatively or additionally, some exceptions, including some exclusion exceptions, may be maintained with or associated with the design and, thereby, made available to subsequent processes that use the design. For example, another software program may use the exclusion exception information to generate a list of contractual exceptions that may be listed as part of the terms of a contract between a designer and a client. So, for example, the exception 1120 corresponding to the module placed in the leaky roof region may be used by a downstream process to generate a specific term for a contract that limits the designer's warranty for the module placed in the leaky roof region or disclaims liability for certain ensuing damage. Exceptions may also trigger the inclusion of terms relating to price, as exemplified by an exception that may be raised when the total cost of the project exceeds the budgeted cost and a term to that effect is added to the contract. Exceptions may also trigger the inclusion of terms relating to the scope of work, as when modules are laid out on or in proximity to an obstruction and the response to the exception is to indicate that the customer is responsible for removing or modifying the source of the obstruction so as to make the design acceptable.
Some exceptions may also be designed to require review and additional authorization from a person or authority other than the designer. For example, an exception 1125 related to having a roof loaded to 95% of its maximum designed weight capacity may require approval of a designer's supervisor. The exception may require approval by the supervisor or other second user before the designer may continue, at least with respect to certain designated actions. Alternatively, the system may produce a listing corresponding to all such approval-entailing exceptions, and such a listing may be used as part of the downstream process for the design, thus allowing the user to proceed with at least some tasks despite the exception. Later compliance, overriding, or authorization of overriding of the exception (e.g., by a supervisor) may regenerate an associated solar collector layout, such that the intervening work by the user is not wasted.
Some embodiments may implement some or all of a combination of the above exceptions and actions. For example, depending on the exception, legitimate actions made available to the designer by the system may include variations on “ignore exception,” “automatically fix layout,” “override exception,” “delete collector(s),” “regenerate layout,” “enter value and recalculate,” “flag for supervisor,” “comply with exception,” and so forth. For example, a user may issue a command, as by software control, for a system to takes steps to automatically attempt to rectify an exceptional condition, as by modifying project state information or a design in accordance with removing the exception condition.
Some embodiments may make a record of user actions, including those taken as part of addressing an exception, including user authorizations. Records of actions may be associated with exceptions, stored with a given project, exported to a downstream user, and so forth. Other embodiments may be configured to re-evaluate the presence of exceptional conditions, with or without user input or impetus; as such, if an exceptional condition is no longer present, the system may remove the exception.
The input-validation loop 1205-10 may continue until the user causes a layout to be generated, as at 1215. This may cause the system to enter a layout-validate-modify loop 1215-20-25-30. As shown at 1220, the resulting layout may be analyzed and validated for conformance to the design preferences, feature and project properties, layout rules, desired outputs, and other encoded information criteria. Any variations or deviations arising from the generated layout may again be noted as exceptions and placed on an exceptions list, at 1222. At 1225, the user may be presented with the ability to modify the layout as discussed above. This may include changing properties or preferences, addressing exceptions (which may cause a change in properties or in the layout), adding or deleting modules, and so forth.
As shown at 1230, the user's actions may be validated by the validation engine. At 1232, exceptions caused by the user's actions may again be added to a list of exceptions. In some cases, changes made by the user may trigger regeneration of the layout. For example, if the user increases a setback property, the layout may be regenerated to be consistent with that increased setback. Depending on the type of exception, the 1225-30 loop (where user entries are validated and exceptions generated without a regeneration of a layout) or the 1215-20-25-30 loop (where user entries cause a regeneration of the layout) may be repeated as necessary or desired by the designer.
At 1235, some or all of the metadata generated through this process, including exceptions and the actions taken to address them, if any, may be stored or otherwise made available for downstream users. For example, a list of contract terms may be generated from all of the contract exclusion exceptions and a list of all of the approval-required exceptions may be generated and forwarded to the appropriate approval entity. A user interface may provide a list of contract exceptions corresponding to exceptional conditions related to violation of a design rule by the solar collector installation design, where the contract exceptions or conditions provide information sufficient to identify a term for inclusion in a contract. In general, any metadata, exception, or action by the user may be included as part of the project state information.
7. PROJECT VERSIONSSome embodiments may provide a system and user interface for viewing, creating, and manipulating multiple versions of a solar collector layout design for a particular installation worksite. The use of versions may allow, for example, a designer to view layouts and other outputs from selecting alternative modules, alternative feature classifications, alternative work area and/or aperture boundaries, and other types of alternative inputs or design preferences quickly and easily. These versions provide the designer with the ability to view output changes from various input changes interactively. Some embodiments may allow the designer to quickly move from one version to another, while others may allow a designer to affect multiple versions with one action. A given version may include user-defined project state information that provides a unique set of user-defined design preferences, feature properties, and project properties. Different versions with different sets of this input information may correspond to alternative solar collector installation layouts, where the alternative layout for each version results from differences between the unique sets of data. The unique sets of data may also include work area state information, aperture state information, geometric object information, etc.
In some embodiments, different versions of a given installation project will share worksite and/or feature information, including properties. Such versions may define possibly-differing work areas, apertures, and layouts. In other embodiments, versions might not share all feature information and, therefore, differing versions may have different features, classifications, or feature properties. Versions may share input project state information of various types, including geometric objects, object classifications, and feature properties, project properties, among others. Versions may share data by maintaining coherency between separate data sets. This may be accomplished by having multiple versions reference the same copy of shared project state information, as by referencing the same location in memory, as by a pointer. Each type of input data, such as design preferences, feature properties, project properties, etc., may be bifurcated, where one or more of the individual data are shared and/or one or more are not shared.
Related versions may share information at one or more levels of the hierarchy described above in connection with
In some embodiments the branch point among versions may be at the work area level. For example,
In this way, a project data structure may include alternative versions of the design, where each alternative version includes independent (non-shared) project state information and shared project state information as described above. The (non-shared) independent project state information differs for each version. As such, when taken in combination with shared project state information, the state information may define an installation design that differs among the differing versions.
Some embodiments may allow branching between versions at higher or lower levels of a hierarchy. For instance, versions may branch at the highest level of the hierarchy, whereby versions do not share any common features, including feature classifications. Alternatively, versions may branch at a low level, e.g., at the string level for a particular sub-array, e.g., if one version has modules grouped in strings in north-south rows, while the alternative version has modules grouped primarily into east-west rows. In such a case, the two versions may share elements above the branch points (such as general aperture design preferences), such that a change in the aperture settings of one version will affect the other version.
As shown in
When a version is activated, the contents of the version may be displayed in a visual representation. For example, when a version is activated, the aperture, work area, features properties, module layout, exceptions, and so forth corresponding to that version may be displayed. Activation of a version may cause the layout engine to recalculate the layout corresponding to the version (consistent with the version's properties). Activation may also cause information about the version, such as summary information, to be displayed, such as in a status line or field. As worksite features are created and classified, and as layouts, exceptions, and so forth are generated, those properties and exceptions may be associated with the presently activated version.
When a change is made to the activated version, if that change is made to an element that is shared with other versions, that change may be reflected in the other versions as well. So, for example, if two versions share feature classification information as described above, then re-classification of a given feature of the worksite or modification of its properties may impact both versions. A change that is reflected in a non-activated version may cause recalculation of a layout associated with that version. For information that is not shared between versions, changes made to an activated version may not affect other versions.
A mechanism, such as a new version toolbox control 1455, may be provided whereby a new version may be created. A new version may be created from scratch (and subsequently filled with worksite properties). This may the case when an initial version is created by default as the first (and, at that point, only) version of a new project. Alternatively or additionally, a new version may inherit some solar installation project properties, such as project properties and feature classifications (if any exist) from a previous version. So, for example, if a set of features have been defined and classified, a newly-created version may inherit these features and classifications
A mechanism, such as a version-copy toolbox control 1460, may also be provided whereby a version may be copied or duplicated. A new version may be created by being copied (e.g., branched off or duplicated) from a pre-existing layout or version. The currently-activated version may be used as the version from which the new version will be branched off. The new-copied version may start with all or most of the properties of its sibling version, e.g. same worksite properties, apertures and aperture properties, exceptions, and so forth, as when the duplicate version is initially populated with at least some of the same state information as the original version. Subsequent modifications to the newly-copied version may or may not be reflected in the original version, depending (as shown in
A mechanism, such as a version-delete toolbox control 1465, may be provided whereby a version may be deleted, e.g., removed from the display and, potentially, removed from storage associated with the version. A similar mechanism, e.g., version-rename toolbox control 1470, may be provided to rename versions.
Mechanisms may be provided to generate information particular to a version, or otherwise operate upon a version, such as parts-summary toolbox control 1475 to generate a parts summary (as in a .CSV file) of a version; a version-export toolbox control 1479 to save version information to another format, such as a database record or set of records; a version-simulate toolbox control 1485 to perform and/or generate simulation data regarding a version; a version-simulation-export toolbox control 1490 to store or export version simulation information, such as in a .CSV file; and so forth. Each of the foregoing may be applied to a currently activated version, a selected version or set of versions, or to all versions.
A control 1477 may also be used to generate a summary of the various versions of a project. This version summary may include a variety of types of comparative information about each of the versions, including layout information, such as solar collector count, cost, weight, etc.; simulation data, such as expected performance, peak power, cost per kilowatt-hr generated, minimum energy productions, etc.; and other types of information, such as exception count and types, etc. Information about illegal and deficient or otherwise poorly-placed modules in a version may be noted in a version summary. Version summary information may also be generated about information for each version such as projected performance, simulation information, electrical power, power efficiency, cost, materials, physical size, part count, and exceptions. This information may also be generated and displayed for sub-elements of a particular version, such as work area, apertures, sub-array, modules, strings, and so forth.
The various versions of an installation project may be stored in multiple files, or advantageously, in a single file. As with the single-version installation projects discussed above, a project with multiple versions may be represented in an XML-type format, wherein a top-level worksite node may contain a listing of features and their classifications. The worksite node may also contain a number of version nodes, which may, in turn, contain a number of work area and aperture nodes. Each aperture mode may contain sub-array nodes, and so forth. Data associated with a version, such as version summary information, name, and so forth, may be stored with the version. In particular, design output information that may vary from version to version, such as solar collector layout information, version summary information, simulation data, contract information, bill of material information, exception information, etc., may be cached or stored or co-located with a version.
In some embodiments, an “undo” control, such as toolbar icon or keyboard shortcut, may be provided to allow a designer to undo one or more changes to a project and/or to a version. In some embodiments, when a designer makes a change to a version, whether it be a modification of a layout, a classification of an object, etc., that change may be recorded by the embodiment. A control may then allow the user to “undo” the change by reversing its effect. In some embodiments, the change may be recorded by taking a snapshot of the state of the project or version. The embodiment may undo the change by reverting back to the snapshot. Alternatively, an embodiment may record the state transition embodied by a change (or its inverse). Performing an “undo” may then be accomplished by reversing the state transition. In this way, multiple levels of undo may be maintained, as by the use of a snapshot or transition stack. Similarly, a redo function may be implemented, wherein an “undo” action causes a snapshot or transition for the inverse (“redo”) action, such as by pushing the inverse of the “undo” onto a redo stack.
8. ILLUSTRATIVE EXAMPLESAs illustrated in
Those of skill in the art will recognize that the foregoing descriptions of categorization and rules are merely indicative of some methods of practicing the inventions as defined by the appended claims. Other methods of laying out PV modules within and around geometric objects based on layout requirements associated with a worksite may be used to accomplish similar ends, such as tables, scripts, data structures, etc. Rules may be explicit and/or comprise declarative statements, as described above or as used in a rule-centric language, such as LISP; alternatively, one or more “rules” may be expressed implicitly in data structures, imperative statements, program flow, program constructs, placement and arrangement algorithms, etc. Rules are used herein as one way of illustrating the general method by which a tool may use information associated with arbitrary objects to create a PV module layout. A particular rule, such as a layout constraint, may be explicitly associated with a particular object or feature and/or a particular type or class of feature; such a rule may be defined as part of a layout engine and implicitly linked to objects or classes.
The systems, methods, and techniques described here may be implemented in computer hardware, firmware, software, or in combinations of them. A system embodying these techniques may include appropriate input and output components, a computer processor, and a computer program product tangibly embodied in a machine-readable storage component or medium for execution by a programmable processor. A process embodying these techniques may be performed by a programmable processor executing a program of instructions to perform desired functions by operating on input data and generating appropriate output. The techniques may advantageously be implemented in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input component, and at least one output component. Each computer program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language may be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Storage components suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory components, such as Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory components; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and Compact Disc Read-Only Memory (CD-ROM disks). Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits). A representation of each of the various data structures and steps of methods described herein may be advantageously rendered, e.g., displayed or printed, on a device, e.g., a screen, monitor, or printer.
Although this disclosure describes certain embodiments and applications, other embodiments and applications that are apparent to those of ordinary skill in the art, including embodiments and applications which do not provide all of the features and advantages set forth herein, are also within the scope of the disclosure. Moreover, all lists and descriptions of options and alternatives are to be construed as exemplary and not limiting; lists have been used to aid explanation and are not an attempt to name all possible alternatives. The scope of the present invention is intended to be defined only by reference to the claims.
Claims
1. A computer-based user interface for designing a solar collector installation, comprising:
- a representation of an installation worksite, the representation comprising feature properties corresponding to physical features of the worksite and a solar collector installation layout including solar collectors arranged on at least one surface feature of the worksite, stored in computer storage;
- a representation of a plurality of differing versions of project state information, wherein each version of project state information is comprised of a unique set of user-defined design preferences, feature properties, and project properties, wherein each of the versions correspond to an alternative solar collector installation layout, the alternative solar collector installation layout for each version resulting from the differences between the unique sets of user-defined design preferences, feature properties, and project properties, wherein each of the differing versions share at least some of the project state information; and
- a control operable to allow a user to select at least a part of one of the differing versions of project state information for display as at least a part of the solar collector installation layout.
2. The user interface of claim 1, wherein each of the differing versions reference the same copy of the shared project state information.
3. The user interface of claim 1, wherein the shared project state information comprises classifications of at least some geometric objects as instances of a feature type.
4. The user interface of claim 1, wherein the shared project state information comprises feature properties applicable to all of the differing versions.
5. The user interface of claim 1, wherein the shared project state information comprises project properties applicable to all of the differing versions.
6. The user interface of claim 1, wherein the user-defined design preferences of a first version differs from the user-defined design preferences of at least one other version.
7. The user interface of claim 1, wherein the user-defined design preferences of each version comprise work area state information for a work area of the worksite in which are permitted to be placed.
8. The user interface of claim 1, wherein the user-defined design preferences of each version comprise aperture state information for an aperture in which to apply sets of design preferences.
9. The user interface of claim 1, wherein the user-defined feature properties of each version comprise geometric object information.
10. The user interface of claim 1, wherein each version of project state information further comprises feature classification information.
11. The user interface of claim 1, wherein each of the differing versions of project state information comprises work area state information for a work area of the worksite in which to place solar collectors, the work area state information of a first version differing from the work area state information of at least one other version.
12. The user interface of claim 1, wherein each of the differing versions of project state information comprises aperture state information for apertures in which to apply sets of design preferences, the aperture state information of a first version differing from the aperture state information of a second version.
13. The user interface of claim 1, further comprising a control operable to allow a user to simultaneously modify a plurality of the differing versions of the project state information.
14. The user interface of claim 1, further comprising a control operable to create a new version of project state information.
15. The user interface of claim 14, wherein the user may make changes to the unique set of user-defined design preferences and feature properties corresponding to the new version that are not reflected in the unique set of user-defined design preferences and feature properties corresponding to any version created before the new version.
16. The user interface of claim 1, further comprising a control operable to create a duplicate version of project state information from an original version of project state information, wherein the duplicate version is initially populated with at least some of the same state information as the original version.
17. The user interface of claim 16, wherein the user may make changes to the unique set of user-defined design preferences and feature properties corresponding to the duplicate version that are not reflected in the unique set of design preferences corresponding to the original version.
18. The user interface of claim 1, further comprising a control operable to delete a version of the project state information.
19. The user interface of claim 1, further comprising a control operable to rename a version of the project state information.
20. The user interface of claim 1, further comprising a comparative representation of the different versions of project state information.
21. The user interface of claim 20, wherein the comparative representation includes information selected from at least one of the group of projected performance, simulation information, electrical power, power efficiency, cost, materials, physical size, part count, and exceptions.
22. The user interface of claim 21, wherein the user may select which information from among at least two of projected performance, simulation information, electrical power, power efficiency, cost, materials, physical size, part count, and exceptions to include in the comparative representation.
23. The user interface of claim 1, further comprising a control operable to undo a change to one or more of the differing versions of project state information, thereby reverting at least one state element of the one or more differing versions of project state information to a previous value.
24. The user interface of claim 23, wherein the control operable to undo a change is operable to undo any change to one or more of the differing versions of project state information.
25. The user interface of claim 23, further comprising a control operable to redo an undone change to one or more of the differing versions of project state information.
26. The user interface of claim 1, wherein all of the differing versions of project state information are stored in a single computer file.
27. The user interface of claim 1, wherein at least two versions each include design output information, and wherein the design output information of a first version differs from the design output information of at least one other version.
28. The user interface of claim 27, wherein the design output information comprises solar collector layout information, and wherein the solar collector layout information of a first version differs from the solar collector layout information of at least one other version.
29. The user interface of claim 27, wherein the design output information comprises version summary information, and wherein the version summary information of a first version differs from the version summary information of at least one other version.
30. The user interface of claim 27, wherein the design output information comprises simulation data, and wherein the simulation data of a first version differs from the simulation data of at least one other version.
31. The user interface of claim 27, wherein the design output information comprises contract term information, and wherein the contract term information of a first version differs from the contract term information of at least one other version.
32. The user interface of claim 27, wherein the design output information comprises bill of material information, and wherein the bill of material information of a first version differs from the bill of material information of at least one other version.
33. The user interface of claim 27, wherein the design output information comprises exception information, and wherein the exception information of a first version differs from the exception information of at least one other version.
34. A solar collector installation project data structure adapted for use in generating a solar collector design for a worksite, comprising at least two alternative versions of the solar collector design, wherein each version comprises an alternative set of independent project state information and a single set of shared project state information; wherein the shared project state information comprises at least some information about at least one of the group of the worksite and the physical features contained within the worksite; wherein the shared project state information and a first one of the alternative sets of independent project state information in combination specify a first solar collector installation design; and wherein the shared project state information and a second one of the alternative sets of independent project state information in combination specify a second solar collector installation design, where the second solar collector installation design is distinct from the first solar collector installation designer.
35. The solar collector installation project data structure of claim 34, wherein the first alternative set of independent project state information includes a first set of design preferences and wherein the second alternative set of independent project state information includes a second set of design preferences.
36. The solar collector installation project data structure of claim 34, wherein the first alternative set of independent project state information includes state information for a first work area of the worksite within which to place solar collectors and wherein the second alternative set of independent project state information includes a state information for a second work area of the worksite within which to place solar collectors.
37. The solar collector installation project data structure of claim 34, wherein the first alternative version of independent project state information includes state information for a first aperture within which to apply a first set of design preferences and wherein the second alternative version of independent project state information includes a state information for a second aperture within which to apply a second set of design preferences.
38. The solar collector installation project data structure of claim 34, wherein each version includes summary information, wherein the summary information of a first version differs from the summary information of at least one other version.
39. The solar collector installation project data structure of claim 34, wherein each version includes simulation data, wherein the simulation information of a first version differs from the simulation information of at least one other version.
40. The solar collector installation project data structure of claim 34, wherein each version includes bill of material information, wherein the bill of material information of a first version differs from the bill of material information of at least one other version.
41. The solar collector installation project data structure of claim 34, wherein each version includes exception list information, wherein the exception list information of a first version differs from the exception list information of at least one other version.
42. The solar collector installation project data structure of claim 34, further comprising a single copy of least some of the shared project state information, wherein the single copy is referenced by each version.
43. The solar collector installation project data structure of claim 34, wherein at least some user-defined design preferences for solar collector installation are not shared between versions.
44. The solar collector installation project data structure of claim 34, wherein at least some features corresponding to the worksite are not shared between versions.
45. The solar collector installation project data structure of claim 34, wherein at least some properties of features corresponding to the worksite are not shared between versions.
Type: Application
Filed: Feb 18, 2010
Publication Date: Aug 26, 2010
Applicant: SUNPOWER CORPORATION (SAN JOSE, CA)
Inventors: GARY WAYNE (BERKELEY, CA), ALEXANDER FRUMKIN (SAN RAFAEL, CA), MICHAEL ZAYDMAN (SAN RAFAEL, CA), SCOTT LEHMAN (MARTINEZ, CA), JULES BRENNER (NOVATO, CA)
Application Number: 12/708,486
International Classification: G06Q 10/00 (20060101); G06F 17/50 (20060101); G06F 3/048 (20060101); G06Q 50/00 (20060101); G06N 5/02 (20060101);