WO2005083534A2 - Method for initializing and utilizing a memory device for a plc - Google Patents
Method for initializing and utilizing a memory device for a plc Download PDFInfo
- Publication number
- WO2005083534A2 WO2005083534A2 PCT/US2005/005227 US2005005227W WO2005083534A2 WO 2005083534 A2 WO2005083534 A2 WO 2005083534A2 US 2005005227 W US2005005227 W US 2005005227W WO 2005083534 A2 WO2005083534 A2 WO 2005083534A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- record
- records
- data
- type field
- code
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/14—Plc safety
- G05B2219/14055—Make log, journal, history file of state changes
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/25—Pc structure of the system
- G05B2219/25301—Expansion of system, memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
Definitions
- a programmable logic controller can utilize a memory device for storage.
- the memory device which can be a memory cartridge, can be an electronically erasable programmable read only memory (EEPROM) device.
- EEPROM electronically erasable programmable read only memory
- the memory cartridge can be used to store configuration information for the PLC and/or data obtained by the PLC. Data obtained by the PLC can be stored in a log and/or database comprising a plurality of records.
- Each record of the log can comprise a record type.
- the record type can be used by the PLC to locate and/or track the record that was added to the log last and/or a location where fields of a record will be populated next.
- Each time fields of a record are filled with new data, the record type of the record can be changed to show that it is a valid record but no longer the head of the log.
- a replaceable memory cartridge can be used with a programmable logic controller.
- the memory cartridge can be adapted to store a data log.
- the data log can be initialized by writing a head marker code in the record type field of a first record and an invalid code in the record type field of a last record of the data log.
- the last record can be logically adjacent to the first record regardless of physical location.
- Fields of data log records can be filled with data sequentially. For example, responsive to collecting data to fill the first record, a head marker code can be written to the record type field of a second record, thereby automatically invalidating the second record. Data can be written to at least one field of the first record.
- the record type field of the first record can be overwritten with a code indicative of valid data.
- FIG. 1 block diagram of an exemplary embodiment of a system 1000
- FIG. 2 is a block diagram of an exemplary embodiment of a data structure 2000
- FIG. 3 is a sequence of states of a plurality of records 3000
- FIG. 4 is a sequence of states of plurality of records 4000
- FIG. 5 is a flowchart of an exemplary embodiment of a method 5000
- FIG. 6 is a flowchart of an exemplary embodiment of a method 6000
- FIG. 7 is a block diagram of an exemplary embodiment of an information device 7000.
- apparatus an appliance or device for a particular purpose.
- [27] can - is capable of, in at least some embodiments.
- [28] comprising - including but not limited to.
- code - a system of symbols used to represent and/or indicate something. Code values can be used to fill record fields such as, for example, a record type field of a data log.
- data - distinct pieces of inforn ation usually formatted in a special or predetermined way and/or organized to express concepts.
- data log - an organized group of records comprising gathered information.
- [34] define - to establish the outline, form, or structure of.
- definition - a specification.
- a data log definition can specify record formatting and/or a number of records.
- field a storage space for data. Fields contain textual, numeric, date, graphical, audio, video, and/or calculated data. Any text field has properties comprising a fixed or variable length, a pre-defined display format, and/or relatability to another field. [40] fill - introduce into; populate. [41] first record - an initial record of a plurality of records. When a data log is created, the first record can comprise a code of "head marker" in the record type field.
- head marker code a byte or set of bytes coded into a record type field, the head marker code indicative of a data log location of a next record to be populated with process data.
- information device any device capable of processing information, such as any general purpose and/or special purpose computer, such as a personal computer, workstation, server, minicomputer, mainframe, supercomputer, computer terminal, laptop, wearable computer, and or Personal Digital Assistant (PDA), mobile terminal, Bluetooth device, communicator, "smart” phone (such as a Handspring Treo-like device), messaging service (e.g., Blackberry) receiver, pager, facsimile, cellular telephone, a traditional telephone, telephonic device, a programmed microprocessor or microcontroller and/or peripheral integrated circuit elements, an ASIC or other integrated circuit, a hardware electronic logic circuit such as a discrete element circuit, and/or a programmable logic device such as a PLD, PLA, FPGA, or PAL, or the like, etc.
- PDA Personal Digital Assistant
- mobile terminal such as a personal computer, workstation, server, minicomputer, mainframe, supercomputer, computer terminal, laptop, wearable computer, and or Personal Digital Assistant (PDA), mobile terminal, Bluetooth device
- any device on which resides a finite state machine capable of implementing at least a portion of a method, structure, and/or or graphical user interface described herein may be used as an information device.
- An information device can include well-known components such as one or more network interfaces, one or more processors, one or more memories containing instructions, and/or one or more input/output (I O) devices, one or more user interfaces, etc.
- input/output (I/O) device any sensory-oriented input and/or output device, such as an audio, visual, haptic, olfactory, and/or taste-oriented device, including, for example, a monitor, display, projector, overhead display, keyboard, keypad, mouse, trackball, joystick, gamepad, wheel, touchpad, touch panel, pointing device, microphone, speaker, video camera, camera, scanner, printer, haptic device, vibrator, tactile simulator, and/or tactile pad, potentially including a port to which an I/O device can be attached or connected.
- I/O device any sensory-oriented input and/or output device, such as an audio, visual, haptic, olfactory, and/or taste-oriented device, including, for example, a monitor, display, projector, overhead display, keyboard, keypad, mouse, trackball, joystick, gamepad, wheel, touchpad, touch panel, pointing device, microphone, speaker, video camera, camera, scanner, printer, haptic device, vibrator, tactile simulator, and/or tactile
- [51] interact - receiving alerts or notifications, revising or switching programs, examining control algorithms, and/or modifying graphics displays, etc.
- invalid code a byte or set of bytes coded into a record type field indicating that a record comprising the record type field is invalid.
- [57] logical - a sequential placement relative to other elements and/or identification of that sequential placement.
- the sequential identification can be considered as circular in that a physically first record of the plurality of records can logically follow a physically last record of the plurality of records.
- machine readable medium - a physical structure from which a machine can obtain data and/or information. Examples include a memory, punch cards, etc.
- [62] may - is allowed to, in at least some embodiments.
- memory - a device capable of storing analog or digital information, for example, a non- volatile memory, volatile memory, Random Access Memory, RAM, Read Only Memory, ROM, flash memory, magnetic media, a hard disk, a floppy disk, a magnetic tape, an optical media, an optical disk, a compact disk, a CD, a digital versatile disk, a DND, and/or a raid array, etc.
- the memory can be coupled to a processor and can store instructions adapted to be executed by processor according to an embodiment disclosed herein.
- memory cartridge - a non-destructively, repeatedly removable, and/or replaceable memory device.
- memory device any device capable of storing analog or digital information, for example, a non- volatile memory, volatile memory, Random Access Memory, RAM, Read Only Memory, ROM, flash memory, magnetic media, a hard disk, a floppy disk, a magnetic tape, an optical media, an optical disk, a compact disk, a CD, a digital versatile disk, a DND, and/or a raid array, etc.
- the memory device can be coupled to a processor and can store instructions adapted to be executed by the processor according to an embodiment disclosed herein.
- method - a process, procedure, and/or collection of related activities for accomplishing something.
- Micro Win - PLC data management software adapted to download, classify, and/or archive information from sensors and/or instruments.
- network - a communicatively coupled plurality of nodes.
- a network can be a public, private, circuit-switched, packet-switched, virtual, radio, telephone, cellular, cable, DSL, satellite, microwave, AC power, twisted pair, ethernet, token ring, LAN, WAN, Internet, intranet, wireless, Wi-Fi, BlueTooth, Airport, 802.11a, 802.11b, 802. llg, and/or any equivalents thereof, etc.
- network interface any device, system, or subsystem capable of coupling an information device to a network.
- a network interface can be a telephone, cellular phone, cellular modem, telephone data modem, fax modem, wireless transceiver, ethernet card, cable modem, digital subscriber line interface, bridge, hub, router, or other similar device.
- new - having been made or coming into existence relatively recently as compared to something else.
- process - an organized activity examples comprise: materials conveying, materials pumping, materials manufacturing, heating systems, ventilating systems, air conditioning systems, chemical operations, mining, machining, packaging, and/or materials distribution, etc.
- a process can be monitored and/or controlled by a SCADA system.
- processor - a device and/or set of machine-readable instructions for performing one or more predetermined tasks.
- a processor can comprise any one or a combination of hardware, firmware, and/or software.
- a processor can utilize mechanical, pneumatic, hydraulic, electrical, magnetic, optical, informational, chemical, and/or biological principles, signals, and/or inputs to perform the task(s).
- a processor can act upon information by manipulating, analyzing, modifying, converting, transmitting the information for use by an executable procedure and/or an information device, and/or routing the information to an output device.
- a processor can function as a central processing unit, local controller, remote controller, parallel controller, and/or distributed controller, etc.
- the processor can be a general-purpose device, such as a microcontroller and/or a microprocessor, such the Pentium IV series of microprocessor manufactured by the Intel Corporation of Santa Clara, California.
- the processor can be dedicated purpose device, such as an Application Specific Integrated Circuit (ASIC) or a Field Programmable Gate Array (FPGA) that has been designed to implement in its hardware and/or firmware at least a part of an embodiment disclosed herein.
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- programmable logic controller a digitally operating electronic apparatus which uses a programmable memory for the internal storage of instructions for implementing specific functions such as logic, sequencing, timing, counting and arithmetic to control through digital or analog input output modules, various types cf machines or processes. See NEMA Standard ICS 3-1978, Part ICS3- 304(5).
- record type - a field in a data log record.
- Exemplary values for the record type field comprise "valid,” “invalid,” and/or "head marker,” etc.
- record - a collection of data elements.
- a set of records constitutes a file.
- a personnel file might contain records that have data elements stored in three fields: a name field, an address field, and a phone number field.
- a group of records forms a database.
- [97] store - to place, hold, and/or retain data, typically in a memory.
- system a collection of mechanisms, devices, data, and/or instructions, the collection designed to perform one or more specific functions.
- [101] upload - to transfer from a first information device to a second information device.
- user interface any device for rendering information to a user and/or requesting information from the user.
- a user interface includes at least one of textual, graphical, audio, video, animation, and/or haptic elements.
- a textual element can be provided, for example, by a printer, monitor, display, projector, etc.
- a graphical element can be provided, for example, via a monitor, display, projector, and/or visual indication device, such as a light, flag, beacon, etc.
- An audio element can be provided, for example, via a speaker, microphone, and/or other sound generating and/or receiving device.
- a video element or animation element can be provided, for example, via a monitor, display, projector, and/or other visual device.
- a haptic element can be provided, for example, via a very low frequency speaker, vibrator, tactile stimulator, tactile pad, simulator, keyboard, keypad, mouse, trackball, joystick, gamepad, wheel, touchpad, touch panel, pointing device, and/or other haptic device, etc.
- a user interface can include one or more textual elements such as, for example, one or more letters, number, symbols, etc.
- a user interface can include one or more graphical elements such as, for example, an image, photograph, drawing, icon, window, title bar, panel, sheet, tab, drawer, matrix, table, form, calendar, outline view, frame, dialog box, static text, text box, list, pick list, pop-up list, pull-down list, menu, tool bar, dock, check box, radio button, hyperlink, browser, button, control, palette, preview panel, color wheel, dial, slider, scroll bar, cursor, status bar, stepper, and/or progress indicator, etc.
- a textual and/or graphical element can be used for selecting, programming, adjusting, changing, specifying, etc.
- a user interface can include one or more audio elements such as, for example, a volume control, pitch control, speed control, voice selector, and/or one or more elements for controlling audio play, speed, pause, fast forward, reverse, etc.
- a user interface can include one or more video elements such as, for example, elements controlling video play, speed, pause, fast forward, reverse, zoom-in, zoom-out, rotate, and/or tilt, etc.
- a user interface can include one or more animation elements such as, for example, elements controlling animation play, pause, fast forward, reverse, zoom-in, zoom-out, rotate, tilt, color, intensity, speed, frequency, appearance, etc.
- a user interface can include one or more haptic elements such as, for example, elements utilizing tactile stimulus, force, pressure, vibration, motion, displacement, temperature, etc.
- FIG. 1 is a block diagram of an exemplary embodiment of a system 1000.
- system 1000 can comprise a programmable logic controller (PLC) 1100.
- PLC programmable logic controller
- System 1000 can comprise a machine and/or process monitorable and or controllable by PLC 1100.
- System 1000 can further comprise hardware and/or software adaptable to allow a user to communicate with PLC 1100.
- PLC 1100 can be used to monitor and/or control an industrial plant or processing system, such as a processing system 1600.
- PLC 1100 can be communicatively coupled to processing system 1600 via an I O interface 1400.
- Processing system 1600 can comprise a machine tool, a robot, a chemical reactor, a stove, a furnace, an assembly machine, a packaging machine, and/or piece of conveying equipment, and/or associated instrumentation, sensors, relays, indicators, controllers, human interfaces, and/or actuators, etc.
- PLC 1100 can monitor and/or control an alarms indicator, relay, sensor, another controller, and/or a motion device, such as a motion controller, such as a stepper motor controller, a servo controller, an actuator controller, etc.; a motion drive, such as a stepper drive, servo drive, etc.; and/or an actuator, such as a stepper motor, servomotor, linear motor, motor, ball screw, servo valve, hydraulic actuator, pneumatic valve, etc.
- a motion controller such as a stepper motor controller, a servo controller, an actuator controller, etc.
- a motion drive such as a stepper drive, servo drive, etc.
- an actuator such as a stepper motor, servomotor, linear motor, motor, ball screw, servo valve, hydraulic actuator, pneumatic valve, etc.
- PLC 1100 can include a central processing unit (CPU) via which instructions are processed and appropriate control signals determined. PLC 1100 can further comprise and/or be coupled to an input-output (I/O) device 1450. I O device 1450 can render information obtained from PLC 1100. The user also can interact with PLC 1100 via the I/O device.
- CPU central processing unit
- I/O input-output
- a memory device such as a memory cartridge 1300 can be a part of PLC 1100 and/or couplable to PLC 1100 either directly or via a network.
- memory cartridge 1300 can be a insertable into and/or connectable to PLC 1100.
- Memory cartridge 1300 can provide storage for instructions and/or data usable by a main processor 1200 of PLC 1100.
- PLC 1100 can comprise a memory such as memory 1350.
- Memory 1350 can provide storage for instructions, recipes, and/or storage protocols, etc.
- PLC 1100 can be couplable to one or more of a plurality of information devices, such as an information device 1700 via a network 1500.
- PLC 1100 can be communicable with information device 1700 via a network interface device 1475. Via network interface device 1475 the user to communicate with PLC 1100 while located remotely from the PLC 1100.
- Information device 1700 can comprise user interface components such as a visual output device such as a cathode ray tube. Information device 1700 can comprise any common input device such as a keyboard, mouse, touch screen, and/or digitizing pad, etc. Via information device 1700, the user can interact with PLC 1100. Utilizing information device 1700, the user can monitor a process, connectable to and/or controllable by PLC 1100. The user can also interact with PLC 1100 via information device 1700.
- Network 1500 can allow the user to interact with PLC 1100 from a location hundreds or even thousands of miles away from PLC 1100.
- Network 1500 can be usable to enhance availability and reduce programming, managerial, and/or maintenance costs attributable to PLC 1100 and/or the monitoring and/or control of processing system 1600.
- Processing system 1600 can comprise a plurality of process elements.
- FIG. 2 is a block diagram of an exemplary embodiment of a data structure 2000.
- An exemplary embodiment of data structure 2000 can comprise a file 2100.
- File 2100 can be storable on a memory device, such as the memory cartridge.
- File 2100 can comprise a plurality of records, such as record 2200 and record 2300, which comprise a plurality of data.
- File 2100 can define a plurality of fields that can contain and/or store the data of the records of file 2100.
- Record 2200 and record 2300 can comprise temporal fields such as a date field and/or a time field.
- Record 2200 and record 2300 can comprise data such as process data.
- Record 2200 and record 2300 can comprise a checksum field for a value adapted to improve information transfer and/or recording reliability.
- Record 2200 and record 2300 can comprise a record type.
- the record type can comprise values such as a code indicative of valid data, such as 01.
- the record type can comprise values such as a code indicative of invalid data, such as 00.
- the record type can comprise a code indicative of a head marker, such as 02.
- the head marker can be indicative of a record that will receive the data of a next record to be written to file 2100.
- the head marker can be indicative of a starting point for uploading data from file 2100 to an information device.
- record 2300 can be logically adjacent to record 2200 even if record 2200 and record 2300 are not physically adjacent.
- FIG. 3 is a sequence of states of a plurality of records 3000.
- Plurality of records 3000 can comprise records in state 3100 at a first point in time.
- records 3000 can comprise records in state 3200.
- records 3000 can comprise records in state 3300.
- Progressing from state 3100 to state 3200 to state 3300 can be indicative of a process for writing data to at least one field of Record 2.
- plurality of records 3000 can comprise Record 1, which comprises a record type code indicative that Record 1 comprises valid data.
- Record 2 comprises a record type code indicative of a head marker - thereby indicating that Record 2 comprises invalid data.
- Record 3 and records between Record 3 and Record "x-1" can comprise an undefined record type.
- the undefined record type can be used to initialize the plurality of records.
- the undefined record type can automatically indicate that Record 3 and records between Record 3 and Record "x-1" do not comprise valid data.
- Record x can comprise an invalid record type code.
- Record x can be considered to be logically adjacent to Record 1 in a logically circular data log. If an invalid code is found in the record type field in Record x, records logically between Record x and the first record comprising a head marker code in the record type field - Record 2 in this embodiment - are valid.
- Records 3000 can comprise records in state 3200 at a second point in time.
- Record 1 can comprise a record type code indicative of the record comprising valid data.
- Record 2 can comprise a record type code indicative of a head marker - thereby indicating that record 2 comprises invalid data.
- Record 3 can comprise a record type code indicative of a head marker - thereby indicating that record 3 comprises invalid data.
- Placing a record type code of head marker in record 3 can be a step to allow record 2 to be overwritten with valid data while providing that at least one record of the plurality of records in this embodiment comprises a head marker code in the record type field.
- a scan of the records would reveal two head marker codes.
- the head marker code in record 2 can be considered the valid head marker.
- the head marker code in record 3 can either be ignored or overwritten with a record type code of invalid. In this way, one record of data might be lost in event of a power failure without affecting valid records, such as Record 1, stored in records 3000.
- a plurality of records between Record 3 and Record "x-1 can comprise an undefined record type.
- the undefined record type can be used to initialize the plurality of records.
- the undefined record type can automatically indicate that records between Record 3 and Record "x-1" do not comprise valid data.
- Record x can comprise an invalid record type code.
- Records 3000 can comprise records in state 3300 at a third point in time.
- Record 1 can comprise a record type code indicative of the record comprising valid data.
- Record 2 can comprise a record type code indicative of valid - thereby indicating that valid data has been written to Record 2 during the time interval between state 3200 and state 3300.
- Record 3 can comprise a record type code indicative of a head marker - thereby indicating that Record 3 comprises invalid data.
- a plurality of records following Record 3 and continuing through Record "x-1 can comprise an undefined record type.
- the undefined record type can be used to initialize the plurality of records.
- the undefined record type can automatically indicate that records between Record 3 and Record "x-1" do not comprise valid data.
- Record x can comprise an invalid record type code.
- a sequence of states such as state 3100, state 3200, and state 3300 can be iteratively continued until and/or beyond a state wherein all records comprise data except for a record with a record type code of a head marker. If continued beyond the state wherein all records comprise data except for a record with a record type code of a head marker, the plurality of records can be circular in the sense that newest records can progressively overwrite oldest record in the plurality of records - thereby successively advancing the record that comprises a head marker code in the record type field.
- FIG. 4 is a sequence of states of plurality of records 4000.
- Plurality of records 4000 can be described by a series of non-sequential states such as state 4100, state 4200, state 4300, state 4400, and state 4500.
- a set of pointers can be used. Using pointers can improve access and write times related to plurality of records 4000.
- Pointers can provide a programmable logic controller with relatively efficient access to an absolute or relative location of plurality of records 4000 in a particular memory device associated with a programmable logic controller. Pointers can comprise a beginning pointer, ending pointer, head pointer, and/or tail pointer, etc.
- the beginning pointer can indicate a location of a first physical and/or logical record of plurality of records 4000. Once defined, the beginning pointer can remain set so long as plurality of records 4000 remains defined without change in the particular memory device.
- the end pointer can indicate a location of a last physical and/or logical record of plurality of records 4000. Once defined, the ending pointer can remain set so long as plurality of records 4000 remains defined without change in the particular memory device.
- the head pointer of plurality of records 4000 can be used to point to a record comprising a code indicative of a head marker record type.
- the record pointed to by the head pointer can be a next location wherein data from sensors and/or instruments associated with a process can be stored.
- the head pointer and/or head marker can be advanced by one logical position, in pointing to a record of plurality of records 4000, each time data is written to fill a next record.
- the tail pointer of plurality of records 4000 can be used to point to a record that is temporally oldest among plurality of records 4000.
- the tail pointer can indicate a logically first record of plurality of records 4000.
- the tail pointer can be advanced by one logical position, in pointing to a record of plurality of records 4000, each time data is written to fill a next record once all records comprise data. Certain exemplary embodiments do not move the tail pointer until all records comprise valid data and the programmable logic controller begins to overwrite previous records,.
- plurality of records 4000 can be initially defined and as illustrated does not comprise process data in any of plurality of records 4000.
- the beginning pointer, the head pointer, and the tail pointer, if pointers are used, can each be defined to point to a first record of a logically contiguous plurality of records 4000.
- a record type code of "02" can be stored in the first record, which can be indicative of a head marker in the first record.
- the end pointer if used, can be indicative of a last logical record in plurality of records 4000.
- a record type code of "00" can be stored in the last record, which can be indicative of an invalid record being present in the last logical record.
- a number of valid records of plurality of records 4000 can be determined by a logical number of records between the record comprising the head marker code in the record type field and a nearest logically preceding record comprising an invalid code in the record type field.
- plurality of records 4000 might not comprise any valid records.
- plurality of records 4000 can be fully populated with process data.
- the beginning pointer if used, can continue to indicate a physically and/or logically first record of plurality of records 4000.
- the ending pointer can continue to indicate a physically and/or logically last record of plurality of records 4000.
- the head pointer if used, can point at a next location - indicated as the third of the list of six records illustrated in this particular embodiment - wherein process data can be written.
- the record pointed to by the head pointer comprises a code of "02," which can be indicative of a head marker in the record type field of the record, thereby automatically invalidating the record comprising the head maker code. Since plurality of records 4000 comprises no invalid codes in the record type fields, plurality of records 4000 can be considered as fully populated with data with the exception of the automatically invalid record comprising the head marker code.
- the tail pointer if used, can mark a location - indicated as the fourth of the list of six records illustrated in this particular embodiment - wherein an oldest present record is written.
- all records except for the record associated with the head marker can comprise a code of "01" in the respective record type field, which can be indicative of a valid record.
- plurality of records 4000 can be fully populated with process data.
- the beginning pointer if used, can continue to indicate a physically and/or logically first record of plurality of records 4000.
- the ending pointer if used, can continue to indicate a physically and/or logically last record of plurality of records 4000.
- the head pointer can point at a next location (indicated as the sixth of the list of six records illustrated in this particular embodiment) wherein process data can be written.
- the record pointed to by the head pointer comprises a code of "02," which can be indicative of a head marker in the record type field of the record.
- the tail marker can mark a location (indicated as the first of the list of six records illustrated in this particular embodiment) wherein an oldest present record is written.
- all records except for the record associated with the head marker can comprise a code of "01" in the respective record type field, which can be indicative of valid records.
- the head marker code can be written to the first logical record of plurality of records 4000, thereby invalidating the first logical record.
- plurality of records 4000 can comprise one or more invalid records.
- An invalid record can be determined by locating a value of "00" in a record type field of plurality of records 4000 (such as the value illustrated in the second cell of the plurality of records in the illustrated embodiment).
- the invalid record code can provide a user with information indicative that a particular record is invalid. For example, data denoted by the record type as invalid can be excluded from statistical and/or graphical analyses of plurality of records 4000.
- plurality of records 4000 can be in a state following an uploading of plurality of records 4000 with instructions to erase plurality of records 4000 after uploading.
- state 4400 can occur as a result of a power failure.
- state 4400 can occur as a result of a memory cartridge of an unknown state being placed in a programmable logic controller.
- An initial search can be made of the record type field to locate the record comprising a head marker code in the record type field - in this case in the fourth record from the logical beginning of plurality of records 4000.
- the head pointer if used, can be assigned to point to this record.
- a search of the record type fields at state 4400 reveals two invalid record codes.
- the closest invalid record code preceding the record comprising the head marker code can indicate that no valid records are available and that the data log is effectively empty.
- the tail pointer if used, can be set to point to the same record as pointed to by the head pointer.
- an invalid record code can be placed in a record immediately preceding the record comprising the head marker. The tail pointer, if used, can then be set to point to the record comprising the head marker.
- plurality of records 4000 can comprise a single invalid code in the second record from the logical beginning of prurality of records 4000.
- the tail pointer if used, can be assigned to point to the valid record as the oldest valid record in plurality of records 4000.
- the head marker code can be found, in this particular embodiment, in the record type field of the fourth record.
- plurality of records 4000 can be partially filled.
- the particular embodiment illustrated indicates four valid records, one invalid record, and a head marker in the record type fields of plurality of records 4000.
- the tail pointer if used, can be pointed at an oldest record, which happens to be in a logical location immediately following a record comprising a record type code of invalid.
- a next group of process data to be recorded to a record can be placed in the cell indicated by the head pointer, if used, once the head pointer and head marker have been incremented. Since the head pointer and the tail pointer, if used, do not point to consecutively numbered records, data can be added to a next record without incrementing the tail pointer.
- FIG. 5 is a flowchart of an exemplary embodiment of a method 5000 for using the memory device.
- a request and/or definition can be received at a programmable logic controller for creating a data log file.
- the request can be from a user of the programmable logic controller.
- the request can be initiated by a user of the programmable logic controller.
- the user can request data collection from a plant and/or process utilizing the programmable logic controller.
- a memory device such as a memory cartridge, can be initialized to obtain and/or collect data requested by the user.
- the amount of collected data can be user-specified in any of numerous fashions, such as an amount of time over which to collect data, an amount of memory to fill, a number of data records to collect, etc.
- a data log definition can be received at a programmable logic controller to create a data log file.
- the data log definition can be generated responsive to the user request and/or can be automatically generated by the programmable logic controller.
- a block of memory of a memory device can be allocated for the data log.
- the block of memory can be allocated responsive to a user request and/or automatically.
- Memory can be allocated to comprise a predetermined plurality of records.
- the memory device can be organized to hold the predetermined plurality of records.
- Each record can comprise a record type field, which is a field that indicates whether the record is a valid record, an invalid record, and/or a "head" record (indicated by a "head marker" code in the record type field).
- records can comprise a date stamp, time stamp, identifier, process unit identifier, machine stamp, sensor number, and actuator number, and/or data field, etc.
- the block of memory can be allocated to comprise one record more than desired for data storage in order to accommodate an automatically invalid record comprising a code indicative of a head maker record type. Searching the block of memory can identify an invalid record and/or a valid record.
- the data log file can be written in a logically circular buffer.
- the logically circular buffer can be characterized by data log records written to contiguous memory segments, the buffer commencing at a beginning memory segment.
- the logically circular buffer can be further characterized by the writing of the next data log record at the beginning of the buffer when the buffer is full.
- the next data log record can overwrite an oldest data log record written in the logically circular buffer. For example, if the buffer is full, the next data log record to be written can be written at the beginning of the buffer, thereby overwriting the data log record that was previously at the beginning of the buffer.
- the logically circular buffer can comprise a circular buffer wherein memory segments are physically contiguous to each other.
- a the plurality of records can be initialized.
- the first record can be initialized by placing a code indicative of a head marker in the record type field - thereby automatically invalidating the first record.
- a last record of the plurality of records can be initialized by placing a code indicative of an invalid record in the record type field.
- the predetermined plurality of records can be logically circular in that the last record can be logically adjacent to the first record.
- activity 5300 can comprise defining pointers.
- Pointers associated with the plurality of records can comprise a beginning pointer, ending pointer, head pointer, and/or tail pointer, etc. Pointers can be used to quickly and efficiently direct an information device to a record to be written to and or uploaded from.
- the beginning record pointer, the head pointer, and/or the tail pointer can be associated with a first record in a logical sequence of the plurality of records.
- the ending record pointer can be initially associated with a last record in the logical sequence of the plurality of records.
- an instruction and/or directive can be executed to add plant and/or process data to the plurality of records.
- the instruction and/or directive can be a part of a plurality of machine readable instructions resident on a programmable logic controller.
- the instruction can comprise obtaining and or formatting data to fill at least one of the plurality of records.
- Responsive to an instruction to add data to the first record the code indicative of the head marker can be written to the record type field of a second record logically incremented from the first record.
- Data can be acquired from the plant and/or process to fill at least one field of the first record. Once filled with data the first record can be considered as a most recently filled record.
- the first record can be the first record read in an uploading event, should such an event occur before new data is added to another of the plurality of records.
- pointers can be incremented responsive to data added to the first record.
- the head pointer can be incremented to be associated with the second record. If the head pointer and the tail pointer are equal after the head pointer has been advanced to point to the second record, then the tail pointer can be changed to point at a third record that can be the next record logically after the second record.
- the record types of the first and/or second record can be read back by the programmable logic controller. Verifying that the first record comprises a non-head marker record type and that the second record comprises a head marker record type can verify that a write operation adding data to the plurality of records has been successfully completed.
- the programmable logic controller can read a plurality of record type fields from the plurality of records to assure the presence of a single head marker after the power failure via an error checking technique.
- the error checking technique can be an ones complement method, a Fletcher checksum method, a cyclic redundancy check method, and/or extended-precision checksum method, etc.
- the error checking technique possibly coupled with knowledge of the position of the records in question and/or the position and/or direction that records are added to the memory device, can identify which record is the most recent, and thereby which head marker is erroneous if more than one head marker is detected.
- the PLC can disable and/or eliminate the older, duplicate head marker, or possibly convert the older, duplicate head marker to a non-head marker resulting in the presence of a single head marker in the data log file, that single head marker corresponding to a record which will receive the next data from the plant and/or process. Changing the value of a binary bit can disable the older, duplicate head marker.
- the PLC can inspect and test a marker, such as a time stamp marker, on each of the data log records, to determine the most recently written record.
- a time to write a record to a data log can be measured as being between two and three cache writing cycles to a serial eeprom memory device. The time to write the record can be less than 40 ms.
- instructions can be executed to upload records from the plurality of records.
- the instructions can be from a user and/or automatically generated by the programmable logic controller.
- the instructions can be based upon a scheduled time, scheduled amount of data collected, and/or a specific user request, etc.
- the instructions can comprise a setting corresponding to an instruction to erase or to not erase the data log from the memory device after the data log is uploaded.
- the instruction to erase or not erase the data log file subsequent to reading the data log file can allow a user to more effectively manage data storage and retrieval on the memory device. Erasing the data log file can provide an assurance that no data log record on the memory device has been previously read.
- Data log records can be uploaded beginning with a record logically preceding the record pointed to by the head pointer and comprising the code indicative of the head marker data type. Uploading data can continue on a record by record basis beginning with a newest record until the oldest record is reached, which will be associated with the tail pointer if pointers are used.
- the tail pointer if used, can point to an oldest record in the plurality of records once data has been provided to at least one record of the plurality of records.
- a new record addition can be requested during activity 5500.
- a record type code of invalid can be assigned to an uploaded record that comprises data associated with the new record addition request.
- the new record can be added by writing a head marker code to a record type field of a second record of the plurality of records responsive to the request to add the new record.
- Data can be written to at least one field of the first record of the plurality of records.
- a valid code can be written to the record type field of the first record.
- the new record can be uploaded as a valid record during a subsequent execution of activity 5500.
- Activity 5500 can comprise, responsive to instructions to remove uploaded records from the plurality of records, record type fields and/or pointers can be reset.
- the record immediately preceding the head marker code can be assigned an invalid code as a record type.
- the tail pointer, if used, can then be set equal to the head pointer, if used, and hence to point to a record logically incremented by one from the closest preceding record comprising and invalid code.
- previously stored records from the plurality of records can be effectively erased by only changing a small number, such as one or two, record type fields in the plurality of records.
- FIG. 6 is a flowchart of an exemplary embodiment of a method 6000.
- a programmable logic controller can detect a memory device.
- the programmable logic controller can determine that the organization of the memory device is unknown to the programmable controller.
- the programmable logic controller can detect the memory device after returning to operation after a power failure.
- the memory device can be a memory cartridge newly placed and/or replaced in the programmable logic controller by a user.
- a replaceable memory cartridge can be used to transfer programs and/or recipes between programmable logic controllers.
- Data cartridges can be changed without losing data comprised and/or stored on the memory cartridge.
- Data cartridges can be changed to upload data from the data log to a customer information device. Changing a data cartridge to upload data can allow a customer to transfer data from the data log without having the programmable logic controller connected to a same network as the customer information device.
- a data log can be located on the memory device.
- the data log can comprise a plurality of records.
- Each record can comprise a record type field.
- a code can be placed in the record type field indicative of a head marker, invalid data, undefined data, and/or valid data, etc.
- the data log can be searched for records comprising a head marker code in the record type field. If no record comprises a head marker code, a default record such as a first logical record can be assigned the head marker code. In certain exemplary embodiments if a plurality of records comprise head marker codes, all head marker codes can be changed to invalid codes except a logically first record comprising the head marker code. In certain exemplary embodiments, the logically first record comprising the head marker code can be pointed to as the next record to receive plant and/or process data. The logically first record can be automatically invalidated. In certain exemplary embodiments, the logically first record can be adapted to receive plant and/or process data without changing record type fields of other records comprising head marker codes. In certain exemplary embodiments, a head pointer can be defined that improves access to the logically first record by the programmable logic controller. Activity 6300 can assure that plant and/or process data is stored at a proper location in the data log.
- the data log can be searched for a record comprising an invalid code.
- the search can comprise scanning the record type field of each record.
- a record that comprises an invalid code can be found as a result of searching the records. If more than one record comprises the invalid code, a closest record logically preceding the record comprising the head marker can be found. If any records exist between the record comprising the invalid code and the record comprising the head marker, those records can be considered to comprise valid data. If an invalid code is found and the data log comprises valid data, an oldest record can be a record logically following the closest record found in activity 6300. In certain exemplary embodiments a tail pointer, if used, can be defined to point to the oldest valid record.
- FIG. 7 is a block diagram of an exemplary embodiment of an information device 7000, which in certain operative embodiments can comprise, for example, information device 1700 of FIG. 1.
- Information device 7000 can comprise any of numerous well-known components, such as for example, one or more network interfaces 7100, one or more processors 7200, one or more memories 7300 containing instructions 7400, one or more input/output (I/O) devices 7500, and/or one or more user interfaces 7600 coupled to I O device 7500, etc.
- I/O input/output
- a user via one or more user interfaces 7600, such as a graphical user interface, a user can view a rendering of information related to defining, storing, and/or uploading data from a data log.
- any activity can be repeated, any activity can be performed by multiple entities, and/or any element can be duplicated. Further, any activity or element can be excluded, the sequence of activities can vary, and/or the interrelationship of elements can vary. Accordingly, the descriptions and drawings are to be regarded as illustrative in nature, and not as restrictive. Moreover, when any number or range is described herein, unless clearly stated otherwise, that number or range is approximate. When any range is described herein, unless clearly stated otherwise, that range includes all values therein and all subranges therein.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Programmable Controllers (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
Abstract
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE602005015550T DE602005015550D1 (en) | 2004-02-20 | 2005-02-18 | METHOD FOR INITIALIZING A PLC |
EP05713801A EP1719027B1 (en) | 2004-02-20 | 2005-02-18 | Method for initializing a plc |
AT05713801T ATE437390T1 (en) | 2004-02-20 | 2005-02-18 | METHOD FOR INITIALIZING A PLC |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US54615304P | 2004-02-20 | 2004-02-20 | |
US60/546,153 | 2004-02-20 | ||
US11/056,805 | 2005-02-11 | ||
US11/056,805 US7813816B2 (en) | 2004-02-20 | 2005-02-11 | Methods and structures for utilizing a memory device for a PLC |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2005083534A2 true WO2005083534A2 (en) | 2005-09-09 |
WO2005083534A3 WO2005083534A3 (en) | 2005-11-24 |
Family
ID=34863929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2005/005227 WO2005083534A2 (en) | 2004-02-20 | 2005-02-18 | Method for initializing and utilizing a memory device for a plc |
Country Status (6)
Country | Link |
---|---|
US (1) | US7813816B2 (en) |
EP (1) | EP1719027B1 (en) |
AT (1) | ATE437390T1 (en) |
DE (1) | DE602005015550D1 (en) |
ES (1) | ES2328259T3 (en) |
WO (1) | WO2005083534A2 (en) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8881114B2 (en) * | 2005-05-16 | 2014-11-04 | Texas Instruments Incorporated | Stored program writing stall information when a processor stalls waiting for another processor |
US20070166004A1 (en) * | 2006-01-10 | 2007-07-19 | Io.Tek Co., Ltd | Robot system using menu selection card having printed menu codes and pictorial symbols |
US8745315B2 (en) * | 2006-11-06 | 2014-06-03 | Rambus Inc. | Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory |
US7725646B2 (en) * | 2007-08-02 | 2010-05-25 | Alcatel Lucent | Method of using a flash memory for a circular buffer |
US8265789B2 (en) * | 2007-12-03 | 2012-09-11 | Electronics And Telecommunications Research Institute | Network-based robot system and method for action execution of robot |
US20100095232A1 (en) * | 2008-10-15 | 2010-04-15 | Daniel Measurement And Control, Inc. | Calculating and plotting statistical data |
US8943423B2 (en) * | 2009-07-07 | 2015-01-27 | International Business Machines Corporation | User interface indicators for changed user interface elements |
US8171257B2 (en) | 2009-09-25 | 2012-05-01 | International Business Machines Corporation | Determining an end of valid log in a log of write records using a next pointer and a far ahead pointer |
TWI411960B (en) * | 2009-11-12 | 2013-10-11 | Novatek Microelectronics Corp | Method and device for initializing electronic device |
WO2011119226A1 (en) * | 2010-03-26 | 2011-09-29 | Telecommunication Systems, Inc. | Maximum concurrent event determiner |
JP4978757B1 (en) * | 2012-01-24 | 2012-07-18 | オムロン株式会社 | Data setting device |
CN105229550B (en) * | 2013-04-16 | 2018-01-05 | 沃特洛电气制造公司 | Process controller with integrating optical sensor |
JP6357770B2 (en) * | 2013-12-26 | 2018-07-18 | オムロン株式会社 | Control device and communication control method |
US12063124B2 (en) | 2017-10-06 | 2024-08-13 | Tyco Fire & Security Gmbh | Building management system with adapting IoT hub |
US11360468B2 (en) | 2017-10-06 | 2022-06-14 | Johnson Controls Tyco IP Holdings LLP | Building management system with cloud-based timeseries service |
CN110881113B (en) * | 2018-09-06 | 2022-08-26 | 杭州海康威视系统技术有限公司 | Method and device for correcting video recording plan and electronic equipment |
JP7321697B2 (en) * | 2018-11-16 | 2023-08-07 | キヤノン株式会社 | job processor |
TWI796059B (en) * | 2021-12-23 | 2023-03-11 | 致伸科技股份有限公司 | Method for dynamically adjusting data transmission format and wireless peripheral device using the same |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10163206A1 (en) | 2001-12-21 | 2003-07-17 | Schneider Automation Gmbh | Method for operating a data processing device and construction of a data processing device such as a programmable logic controller |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1563812A (en) * | 1976-04-27 | 1980-04-02 | Gen Instr Microelect | Data processors |
JPS5856192B2 (en) * | 1980-11-28 | 1983-12-13 | ファナック株式会社 | Data rewriting method in bubble memory |
US4594651A (en) * | 1984-01-18 | 1986-06-10 | General Electric Company | Concurrent processor for control |
DE4207086C1 (en) | 1992-03-06 | 1993-10-28 | Licentia Gmbh | Automatic initialisation system for programmable memory - uses plug-in read-only memory providing basic software transferred to working memory after voltage interruption |
US5832508A (en) * | 1996-09-18 | 1998-11-03 | Sybase, Inc. | Method for deallocating a log in database systems |
US6701284B1 (en) * | 1998-04-17 | 2004-03-02 | Ge Fanuc Automation North America, Inc. | Methods and apparatus for maintaining a programmable logic control revision history |
US6438651B1 (en) * | 1999-11-01 | 2002-08-20 | International Business Machines Corporation | Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer |
US6990383B2 (en) * | 2003-02-03 | 2006-01-24 | Deere & Company | Infinitely variable, order specific, holistic assembly process control system |
-
2005
- 2005-02-11 US US11/056,805 patent/US7813816B2/en not_active Expired - Fee Related
- 2005-02-18 EP EP05713801A patent/EP1719027B1/en not_active Not-in-force
- 2005-02-18 WO PCT/US2005/005227 patent/WO2005083534A2/en not_active Application Discontinuation
- 2005-02-18 DE DE602005015550T patent/DE602005015550D1/en active Active
- 2005-02-18 ES ES05713801T patent/ES2328259T3/en active Active
- 2005-02-18 AT AT05713801T patent/ATE437390T1/en active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10163206A1 (en) | 2001-12-21 | 2003-07-17 | Schneider Automation Gmbh | Method for operating a data processing device and construction of a data processing device such as a programmable logic controller |
Also Published As
Publication number | Publication date |
---|---|
US20050187988A1 (en) | 2005-08-25 |
EP1719027A2 (en) | 2006-11-08 |
EP1719027B1 (en) | 2009-07-22 |
US7813816B2 (en) | 2010-10-12 |
ES2328259T3 (en) | 2009-11-11 |
WO2005083534A3 (en) | 2005-11-24 |
ATE437390T1 (en) | 2009-08-15 |
DE602005015550D1 (en) | 2009-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1719027B1 (en) | Method for initializing a plc | |
US7793056B2 (en) | Method of maintaining a data log related to a Programmable Logic Controller (PLC) | |
CN107289982B (en) | Instrument maintenance device, instrument maintenance method, and recording medium | |
CN100489717C (en) | Display device | |
CN1201229C (en) | Method and device for tracing hard-ware condition using dynamic reconstruction testing circuit | |
US8959399B2 (en) | Capturing data during operation of an industrial controller for the debugging of control programs | |
CA2569820C (en) | A method for portable plc configurations | |
SE542688C2 (en) | Configuring an industrial automation system for internet-of-things accessibility | |
US6141628A (en) | Programmable logic controller software with embedded class logic and alarm/shutdown functionality | |
JP6253846B1 (en) | Programmable display | |
JPH03135604A (en) | Annunciator for state change of control signal and controller with the annunciator | |
US7203553B2 (en) | Methods and structures for utilizing a memory device for a PLC | |
US11340590B2 (en) | Data collection system, data collection method, and information storage medium | |
JP6856153B2 (en) | Equipment maintenance equipment, equipment maintenance methods, equipment maintenance programs and recording media | |
CN100468362C (en) | Method for initializing and utilizing a memory device for a plc | |
JP4758330B2 (en) | Power plant operating history data management device | |
CN112423943A (en) | Diagnostic method and apparatus | |
JP6842098B1 (en) | Debugging device and debugging method | |
JP6919679B2 (en) | Equipment maintenance equipment, equipment maintenance methods, equipment maintenance programs and recording media | |
US20230176559A1 (en) | Data management device and data management method | |
US11815872B2 (en) | Systems, methods and computer program products for automated revision comparison of engineering data in process control systems | |
JP6801771B2 (en) | Equipment maintenance equipment, equipment maintenance methods, equipment maintenance programs and recording media | |
CN118689364A (en) | Debugger, debugging method and device | |
JP5219565B2 (en) | History management system, computer program, and history management method | |
JP2766362B2 (en) | Error information file generation method for power control digital controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2005713801 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 3022/CHENP/2006 Country of ref document: IN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 200580005481.4 Country of ref document: CN |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: DE |
|
WWP | Wipo information: published in national office |
Ref document number: 2005713801 Country of ref document: EP |