Topic: DMD0208

Help File Version: 2.10.0.636

Memory Locations with System-Assigned Nicknames


The Do-more CPUs are preconfigured with several bit and numeric locations that have system-assigned Nicknames. Some of these locations are outputs that report Status information, some of them are inputs used to provide configuration selections to the CPU, and some of them are input & output locations. All of the ST and DST memory locations are read / write locations.

Bit Locations with System-Assigned Nicknames

Bit Location

Nickname

Type

Description

ST0

$FirstScan

Status

Will be ON for the duration of the first CPU scan after a STOP mode -to- RUN mode transition.

 

ST1

$On

Status

Always ON.

 

ST2

$Off

Status

Always OFF.

 

ST3

$1Minute

Status

While the CPU is in RUN mode this bit location will be set ON once a minute with a 50% duty cycle, that is, it will be ON for 30 seconds then OFF for 30 seconds.

 

ST4

$1Second

Status

While the CPU is in RUN mode this bit location will be set ON once a second with a 50% duty cycle, that is, it will be ON for 1/2 second then OFF for 1/2 second.

 

ST5

$100ms

Status

While the CPU is in RUN mode this bit location will be set ON once every 100ms with a 50% duty cycle, that is, it will be ON for 50 milliseconds then OFF for 50 milliseconds.

 

ST6

$50ms

Status

While the CPU is in RUN mode this bit location will be set ON once every 50ms with a 50% duty cycle, that is, it will be ON for 25 milliseconds then OFF for 25 milliseconds.

 

ST7

$ScanToggle

Status

Will be ON for alternate scans.

 

ST8

$LastScan

Status

Will be ON for the duration of the last CPU scan before a RUN mode -to- STOP mode transition.

 

ST9

$ForcesActive

Status

Will be ON any time there is an entry in the Force Table.

 

ST10

$HasErrors

Status

Will be ON any time the CPU is reporting any runtime errors.

 

ST11

$HasWarnings

Status

Will be ON any time the CPU is reporting any runtime warnings.

 

ST12

$HasInfo

Status

Will be ON any time the CPU is reporting any runtime informational messages.

 

ST13

$WatchdogReboot

Status

Will be ON after a Hardware Watchdog Reboot has occurred.


Click here for more information on Configuring the Hardware Watchdog Timer

 

ST14

$ModuleFailed

Status

Will be ON when any installed module fails validation, which generally means that its module ID doesn’t match the module ID discovered at power up.

 

ST15

$PgmModeRestart

Configuration

Will be ON after a Program mode -to- Run mode transition (because of a Do-more Designer mode change operation or because the front panel mode switch was used). Non-retentive memory has been cleared, retentive memory has not been changed, but the state information of all Programs (including their Stage bits) and Tasks have been reset even if the Program or Task has been configured as retentive.

 

Will be OFF in Run mode after a power-up, or a restart after a Watchdog Timer event, or after a REBOOT instruction is executed. Non-retentive memory has been cleared, retentive memory has been preserved. The state information for Programs and Tasks marked as retentive has been preserved, those NOT marked as retentive has been cleared.

 

By default, user created Programs are Tasks are non-retentive, but they can be made retentive if required through the Code-block Configuration dialog. All System (built-in) Programs and Tasks are retentive and that cannot be changed. The one exception is that all Stages in $Main will be disabled and the Initial Stage will be enabled if the CPU powers up in Run mode, or on a Program -to- Run transition.
 

Note: the Difference Between Two Date / Times (DTDIFF) instruction with SDT1 ($SysShutdown) and SDT2 ($SysStartup) can be used to determine how long a CPU has NOT been in Run mode. The result of this calculation can be used to help decide what (if anything) needs to be manually reset based on the amount of time the PLC was not in control of the machine or process.

 

ST16

$TermRunMode

Status

Will be ON if the CPU is in RUN mode and the switch is in TERM position.

 

Will be OFF if the CPU is in STOP (PGM) mode and the switch is in TERM position, or if the if the mode switch is NOT in TERM position (regardless of the CPU mode).

 

ST17

$SerFifoOverflow

Configuration

Will be ON if the input buffer for the on-board serial port contains 1023 bytes of data.

 

ST18

$RetErrOnBadReq

Configuration

Will be ON if there is a bad array reference in a Data View.

 

ST19

$IsSimulator

Status

Will be ON if Do-more Designer is connected to the Do-more Simulator that is emulating the target CPU instead of being connected to a real PLC.

 

ST21

$InhPgmUpdate

Configuration

Set to ON to prevent program from being updated.

 

ST23

$TimeSynced

Status

Will be ON if the TimeSync operation is successful.


Click here for more information on using TimeSync.

 

ST24

$HwWatchdogMode

Configuration

Specifies the action to take in the event of a Hardware Watchdog Timeout.


Click here for more information on Configuring the Hardware Watchdog Timer

 

ST25

$DisableHwWdog

Configuration

Set ON to disable the Hardware Watchdog Timer.


Click here for more information on Configuring the Hardware Watchdog Timer

 

ST33

$EnableDebug

Configuration

Set ON by the Debug View to put the CPU in debug mode.

 

ST34

$EnablePowerFlow

Configuration

Reserved.

 

ST35

$EnableNScan

Configuration

Set ON by the Debug View to put the CPU into N-Scan Mode.

 

ST36

$EnableMsgDump

Configuration

Set ON to send all ERR and MSG values to Do-more Logger, see the Send Strings out Ethernet Port (DMLogger) Instruction.

 

ST37

$DisableSwWdog

Configuration

Set ON to disable the software watchdog timer.

 

ST38

$DumpToSecAdaptr

Configuration

Set ON to have the ERR and MSG values being sent to Do-more Logger go out the secondary Ethernet adapter (BX-P-ECOMEX).

 

       

ST128

$WatchdogTimeout

Status

Will be ON when a software watchdog occurs. Will be turned back OFF when the CPU returns to RUN mode.


Click here for more information on Configuring the Hardware Watchdog Timer

 

ST129

$IndexError

Status

Will be ON when an array reference is out of range. Two places where this is typically seen is when the index for looping instructions (For / Next, Do / While, etc.) exceeds the size of a memory block, or when the any of the String parsing instructions attempts to reference memory past the maximum size of the String.

 

ST130

 

 

Reserved.

 

ST131

$InvalidInstr

Status

Will be ON if an invalid instruction was downloaded to the CPU. User generally should never see this.

 

ST132

$OutOfRange

Status

Will be ON when a parameter that isn’t an index error, or an overflow, or a divide-by-zero is out of range. The System Status tab of System Info will also display "A comm client attempted to read a data address that was out of range. Zero data was returned." in the ERR field.

 

Two common examples (assume the normal range of C is C0 - C2047):

 

If V0 = 9999, then trying to reference C[V0] = C9999 would fail because 9999 is outside the range of configured C locations.

 

If an external communication client creates a tag that references C9999. Again, 9999 is outside the range of configured C locations. To correct this, the external communication client should import the memory configuration from the Do-more Designer project so that the only the correct ranges are available for its tags.

 

ST133

$Overflow

Status

Will be ON when certain math operators (POW, INC, DEC, etc.) overflow their calculation.

 

ST134

$InstIOChanged

Status

Do-more CPUs keep a copy of the last known good I/O Configuration data stored in their battery-backed memory. While the system is powered down, if an I/O module is removed, or an I/O module is added, or an existing I/O module is moved to a different slot, or an existing I/O module is replaced with a different one, the collection of I/O modules will not match the collection that is in the battery-backed memory when the system is powered back on.

 

Will be ON at power-up any time the collection of installed I/O modules has changed from the last time the PLC was powered on.

 

Click here for more information on why this bit location is ON how best to proceed

 

ST135

$IOConfigError

Status

Will be ON when there is an error in the manual I/O configuration.

 

ST136

$IOMapError

Status

Will be ON when there is an error in the manual I/O map.

 

ST137

$LoopTuning

Status

Will be ON while a PID loop is being Auto-tuned.

 

ST138

$MathStackOverflw

Status

Will be ON when a math operation has caused a stack overflow.

 

ST139

 

 

Reserved.

 

ST140

$BufferOverflow

Status

Will be ON if the result of a string operation is larger than the string element can hold.

 

ST141

$DivideByZero

Status

Will be ON when a math operation has a divide by zero operation.

 

ST142

$DriverLoadError

Status

Will be ON if any device driver failed to load.

 

ST143

$DriverError

Status

Will be ON if any device is reporting a runtime error, for example, if the On Error indication of any multi-scan instruction is set this bit will be ON. Use the System Status tab of the System Info utility to locate the instruction that is causing the error.

 

ST144

$SystemStopped

Status

Will be ON when a Switch to Program Mode (STOP) instruction has executed and put the CPU in Stop mode.

 

ST145

$QueuesFlushed

Status

Will be ON when Ethernet queues were forcibly cleared, possibly due to an open Ethernet device which isn’t being serviced.

 

ST146

$CommStackOverrn

Status

Will be ON when the Ethernet stack was unable to allocate a packet buffer for an incoming packet.

 

ST147

$InstrTerminated

Status

Will be ON when a Device instruction was terminated before normal completion.

 

ST148

$CriticalIOError

Status

Will be ON when one or more I/O modules failed to verify. The system is placed in a permanent I/O shutdown mode. Power cycling the CPU or executing a Re-Initialize PLC I/O is required to return to RUN mode.

 

ST149

$BatteryLow

Status

Will be ON if the battery voltage is below the minimum threshold, see the help section on Battery Backup for more information.

 

ST150

$LoginLockedOut

Status

Will be ON when PLC isn’t accepting session passwords due to excessive password failures. See the help topic for Failed Login Attempts.

 

ST151

$IndexRealigned

Status

Will be ON if the CPU adjusted a misaligned array index. Occurs when incorrectly indexing memory cast to a larger size...as in X[V0]:B, where V0 isn’t 0, 8, 16, etc.

 

ST152

$IOError

Status

Will be ON an I/O Master is in a warning state, this can go from ON to OFF as module issues arise and are resolved.

 

ST153

$EthMasterError

Status

Will be ON when the Ethernet I/O Master detects an error with one of its Ethernet I/O Slaves - most likely an Ethernet I/O Slave is offline.
 

ST154

$EthSlaveOffline

Status

Will be ON when the Ethernet I/O Master detects one of its Ethernet I/O Slaves that is marked as Not Required to Go TO Run Mode is offline. This bit will be ON to indicate the CPU still went to RUN mode but one or more of the Ethernet I/O Slaves is not online.
 

ST155

$IntOverload

Status

Will be ON if the total accumulated time for all of the configured interrupts exceeds 10ms in a single scan. See Interrupt Service Routines for more information.

ST156

$QueueFull

Status

Will be ON if attempt to add a value to a FIFO or LIFO table that is already full.

       

ST192

$PgmSwitchActive

Status

Will be ON when system is swapping program buffers during run mode program update.

 

ST193

$CurPgmBuffer

Status

Indicates active program buffer. Toggles when new program is downloaded.

 

ST194

$SysConfigUpdate

Status

Will be ON when system is updating system configuration.

ST200

$PgmROMUpdate

Status

Will be ON when system is writing program to ROM.

 

ST201

$SysCfgROMUpdate

Status

Will be ON when system is writing system configuration to ROM.

 

ST202

$DocROMUpdate

Status

Will be ON when system is writing project documentation to ROM.

 

ST203

$SysSetROMUpdate

Status

Will be ON when system is writing system setup to ROM.

 

ST204

$UserROMUpdate

Status

Will be ON when system is writing to user ROM

 

 

All bit locations starting at ST768 are retentive; they will hold their value through a power cycle.

 

ST768

$SummerTime

Configuration

Set this bit ON to add one hour to $LocalTime calculation to account for Daylight Savings Time.

 

 


Numeric Locations with System-Assigned Nicknames

Numeric Location

Nickname

Type

Description

 

DST0

$ScanCounter

Status

Contains the number of scans since the last STOP mode to RUN mode transition.

 

DST1

$ScanTime

Status

Contains a filtered average of the $ElapsedTicks.

 

DST2

$MinScanTime

Status

Contains the length of time (in microseconds) of the shortest scan since the last STOP mode to RUN mode transition.

 

DST3

$MaxScanTime

Status

Contains the length of time (in microseconds) of the longest scan since the last STOP mode to RUN mode transition.

 

DST4

$ElapsedTicks

Status

Contains the number of microseconds for the last scan.

 

DST5

$Errors

Status

Compilation of bit flags from (ST128 ... ST159) which are considered to be errors. Currently contains the following:

 

Bit 0 : WATCHDOGTIMEOUT

Bit 2 : MEMORYERROR

Bit 7 : IOCONFIGERROR

Bit 8 : IOMAPERROR

Bit 10: MATHSTACKOVERFLOW

Bit 16: SYSTEMSTOPPED

Bit 18: COMMSTACK_OVERRUN

Bit 19: INSTRTERMINATED

Bit 20: CRITICALIOERROR

Bit 23: INDEXREALIGNED

Bit 24: IOERROR

Bit 25: ETHMASTERERROR

Bit 26: ETHSLAVEOFFLINE

 

DST6

$Warnings

Status

Compilation of bit flags from (ST128...159) which are considered to be warnings. Currently contains the following:

 

Bit 1 : INDEXERROR

Bit 3 : INVALIDINSTR

Bit 4 : OUTOFRANGE

Bit 5 : OVERFLOW

Bit 11: FILESYSERROR

Bit 12: BUFFEROVERFLOW

Bit 13: DIVIDEBYZERO

Bit 14: DRIVERLOADERROR

Bit 15: DRIVERERROR

Bit 17: QUEUESFLUSHED

Bit 21: BATTERYLOW

 

DST7

$Info

Status

Compilation of bit flags from (ST128...159) which are considered to be info. Currently contains the following:

 

Bit 6 : INSTIOCHANGED

Bit 9 : LOOPTUNING

Bit 22: LOGINLOCKEDOUT

 

DST8

$InvalidInstrAddr

Status

Contains address of invalid instruction on failed program validation:
 

-1 = no invalid instruction address

 

DST10

$PLCMode

Status


Contains a value that reflects the current operational mode of the PLC:

2 = STOP mode

3 = RUN mode.

 

DST11

$PLCStatus

Status

Contains the PSTAT_XXX bits from ST192-223.

 

DST12

$FirmwareRev

Status

The revision number of the CPU's firmware in the form MMmmbbbb.

 

DST13

$DmRev

Status

The revision number of the CPU's Do-more library in the form MMmmbbbb.

 

DST14

$HardwareRev

Status

The revision number of the CPU's PWB n the form 0000MMaa.

 

DST15

$BooterRev

Status

The revision number of the CPU's boot loader in the form MMmmbbbb.

 

DST16

$FPGARev

Status

The revision number of the CPU's FPGA code in the form MMMMmmmm.

 

DST17

$NodeNumber

Status

The Node Number assigned to the PLC.

 

DST18

$IPAddress

Status

The IP Address assigned to the PLC. Use the IP Address format of the Data View to see the value in the traditional dotted-decimal form.

 

DST19

$NetMask

Status

The Subnet Mask assigned to the PLC. Use the IP Address format of the Data View to see the value in the traditional dotted-decimal form.

 

DST20

$Gateway

Status

The Gateway IP Address assigned to the PLC. Use the IP Address format of the Data View to see the value in the traditional dotted-decimal form.

 

DST21

$UTC

Status

Contains the current UTC value (the number of seconds that have elapsed since Jan, 1 1970).

 

DST22

$LocalTime

Status

The current time calculated from the UTC value after adjustments for Time Zone and Daylight Savings.

 

DST23

$WatchdogTimeVal

Status

Contains the maximum number of milliseconds to allow for a single scan.

 

DST24

$DefaultBlockVer

Status

Used by C-More panels to enforce protocol compatibility.

DST25

$DefaultHeapVer

Status

Used by C-More panels to enforce protocol compatibility.

DST26

$IOVerifyTimeout

Status

Contains the minimum amount of time for a module to fail verification before a permanent IO failure shutdown.

 

DST27

$IOVerifyLastTO

Status

Contains the amount of time accrued during the last failure verification.

 

DST28

$IOMasterErrors

Status

Contains one bit per I/O Master, that bit will be ON if that I/O Master is reporting a Module Error, can go from ON to OFF as module errors arise and are resolved.

 

DST29

$PLCType

Status

Values that indicate the PLC type:

 

0: Unknown

 

1: DM-SIM (Do-more Simulator)

 

2: H2-DM1 (DirectLOGIC 205 Series)

3: H2-DM1E (DirectLOGIC 205 Series with on-board Ethernet)

 

4: T1H-DM1 (Terminator I/O Series)

5: T1H-DM1E (Terminator I/O Series with on-board Ethernet)

 

6: BRX-DM1 (BRX series)

7: BRX-DM1E (BRX Series with on-board Ethernet)

see DST53 for BRX Series PLC Sub-types

 

   

The following 8 locations serve as a 4 x 2 stack that contains the last 4 error codes and the address of the instruction that reported that error.

 

To locate the instruction that reported the error, Open Search -> Goto -> Goto Address or Rung Number (or press Ctrl+G), then enter the value in the associated LastErrorAddr location in the Address / Rung Number field and make sure to select Absolute Address then click OK. This will move the edit cursor to the code-block that contains the rung that has the instruction that reported the error code.

 

DST30

$LastError1

Status

Contains the code of the last reported error.

 

DST31

$LastErrorAddr1

Status

Contains the address of the last reported error.

 

DST32

$LastError2

Status

Contains the code of the next to last reported error.

 

DST33

$LastErrorAddr2

Status

Contains the address of the next to last reported error.

 

DST34

$LastError3

Status

Contains the code of the next to next to last reported error.

 

DST35

$LastErrorAddr3

Status

Contains the address of the next to next to last reported error.

 

DST36

$LastError4

Status

Contains the code of the next to next to next to last reported error.

 

DST37

$LastErrorAddr4

Status

Contains the address of the next to next to next to last reported error.

 

     

The following is a list of the possible error codes that appear in the $LastError locations (DST30, DST32, DST34, DST36).

 

-2 - UNKNOWN ERROR ------------ An unexpected error occurred. This can be an attempted operation on a POM that is not installed or a POM that does not support that operation.

 

-1 - RESERVED ----------------- Reserved.

 

00 - NO_ERROR ----------------- No error.

 

12 - TIMEOUT ------------------ Operation timed out.

13 - RXWX_NAK ----------------- The target device NAKed a DLRX or DLWX request.

14 - UNKNOWN_RESPONSE --------- Unknown response.

15 - MODULE_NOT_INSTALLED ----- An Attempt was made to access an I/O module that isn't installed.

16 - MODULE_ACCESS_FAILED ----- Unable to access I/O module.

17 - DEVICE_ALREADY_OPEN ------ An attempt was made to open a Device that is already open.

18 - DEVICE_NOT_OPEN ---------- An attempt was made to use a Device that hasn't been opened.

19 - INVALID_DATA ------------- Invalid data in response.

20 - EXCEPTION_RESPONSE ------- Exception response from MRX or MWX request.

21 - INVALID_CRC -------------- Invalid CRC in MRX or MWX request.

22 - CONNECTION_FAILED -------- Couldn't open TCP connection with specified device.

23 - UNEXPECTED_SMTP_RESP ----- Unexpected response from SMTP server.

24 - POP3_ERROR_RESP ---------- Error response from POP3 server.

25 - MODULE_ERROR_RESP -------- I/O module returned and error response.

26 - MODULE_TIMEOUT ----------- Timed out while waiting for an I/O module to respond.

27 - ILLEGAL OPERATION -------- An operation was attempted that is illegal in the current mode or configuration.

28 - DEVICE_NOT_CONNECTED ----- An attempt was made to use a Device that is not connected.

29 - INDEXERROR --------------- Array index was out of bounds.

30 - DIVEDEBYZERO ------------- Divide by Zero.

31 - OUTOFRANGE --------------- Parameter out of range.

32 - OVERFLOW ----------------- Numeric value overflow.

33 - WATHCDOGTIMEOUT ---------- Watchdog timeout.

34 - STOPPED ------------------ PLC Stopped.

35 - BUFFEROVERFLOW ----------- Result of an attempted string operation was longer than the target string and was truncated.

36 - INSTRUCTION_TERMINATED --- Multi-scan device instruction was forcibly terminated before completion.

37 - EIPMSG_RESP_TOO_LONG ----- Received a response that exceeded the maximum length.

38 - EIPMSG_ERROR_RESPONSE ---- Received an error response from adapter.

39 - DMPP_ERROR_RESPONSE ------ An error was returned to a peer to peer request in an RX or WX instruction.

40 - FILESYS_ERROR ------------ File system returned an error.

41 - FILESYS_NOMEDIA ---------- File operation failed because there is no media card installed or the media card didn't mount properly.

42 - FILESYS_NODIRSTART ------- The file system's .StartFolderScan structure member must be set to start a scan with FILEQUERY instruction.

43 - AXIS_UNCONFIGURED -------- Axis unconfigured. Must be configured with AXCONFIG prior to use.

44 - AXIS_INVALID_MODE -------- Requested an unsupported Axis mode.

45 - AXIS_UNKNOWN_ERROR ------- Axis controller received unknown command.

46 - AXIS_COMMAND_PENDING ----- Attempted to send command to axis controller with a command pending.

47 - AXIS_INVALID_PARM -------- Axis command contained an invalid parameter.

48 - AXIS_ESTOP --------------- Attempted operation on an Axis that is disabled through the .MasterEnable structure member.

49 - AXIS_DISABLED ------------ Axis instruction was terminated prior to normal completion.

50 - AXIS_SCRIPT_BUSY --------- Attempted new script operation while script is running.

51 - AXIS_LINROT_MISMATCH ----- Linear / Rotary mismatch between current Axis configuration and request.

52 - AXIS_FAULT --------------- Axis has faulted.

53 - TABLE_INVALID_PARM ------- Invalid parameter in table driven output function.

54 - SMTP_INVALID_RECIPIENT --- Invalid Email Recipient specified.

55 - HANDSHAKE_FAILED --------- SSL/TLS Handshake Failed.

56 - NO_CRYPTO_SUPPORT -------- CPU does not support SSL/TLS.

57 - UNEXPECTED_MQTT_RESPONSE - Unexpected response from the Broker.

58 - MQTT_BROKER_REJECTED ----- Broker rejected the connection.

59 - MQTT_OUT_OF_RESOURCES ---- Too many MQTTSUB Topics or instructions.

60 - MQTT_INVALID_TOPIC ------- Invalid MQTT Topic.

61 - MQTT_DUPLICATE_TOPIC ----- Duplicate MQTTSUB Topic.

62 - DNS_FAILED --------------- DNS Lookup failed.

63 - DNS_NOTFOUND ------------- DNS address not found.

64 - NO_CONNECTION ------------ Couldn't open TCP connection with specified device.

65 - UNEXPECTED_FTP_RESP ------ Received error from FTP Server.

 

 

DST38

$LastProtoError

Status

Contains the error response value from last protocol-based instruction (RX, WX, MRX, MWX, EIPMSG, DLRX, DLWX, etc.).

 

DST39

$InhibitErrors

Configuration

Specifies which errors should not result in fatal shutdown of the CPU.

 

DST40

$EthDroppedPckts

Status

Contains the number of Ethernet packets that have been lost by the primary Ethernet port since the last power-cycle.

 

DST41

$EthStoppedIntr

Status

Contains the number of times the interrupt for the primary Ethernet port was shut off due to excessive network traffic.

 

DST42

$EthSendErrors

Status

Contains the number of send errors that have occurred on the primary Ethernet port since the last power-cycle.

 

DST43

$EthPktsReceived

Status

Contains the total number of packets that have been received by the primary Ethernet port since the last power-cycle

DST44

$EthPktsSent

Status

Contains the total number of packets that have been sent by the primary Ethernet port since the last power-cycle.

 

DST45

$TuneDeadBand

Configuration

Deadband value used the by the PID Autotune process.

 

DST46

$TuneSampleTime

Configuration

Sample time value used the by the PID Autotune process.

 

DST47

$TuneMinPVChange

Configuration

The Minimum PV Change value used the by the PID Autotune process.

 

DST48

$TuneOutputBump

Configuration

The Output bump value used the by the PID Autotune process.

DST49

$EthMissedFrames

Status

Contains the total number of packets since the last power-cycle that the by the primary Ethernet port hardware did not process because the packets were incorrectly formed.
 

DST50

 

$Installed POM

Status

00 - Unknown POM installed

01 - BX-P-USB-B ----------- (USB with USB-B connector)

02 - BX-P-ECOMLT ---------- (Ethernet with RJ-45 connector, server only)

03 - BX-P-SER2-TERM ------- (Serial RS-232 with 3-pin header)

04 - BX-P-SER4-TERM ------- (Serial RS-485 with 3-pin header)

05 - BX-P-SER2-RJ12 ------- (Serial RS-232 with RJ-12 connector)

06 - BX-P-SER422-TERM ----- (Serial RS-422 with 5-pin header)

07 - BX-P-SER2-TERMFC ----- (Serial RS-232 with 5-pin header with RTS / CTS flow control)

08 - Advanced Protocol POM -(see DST80 for specific POM ID)

09 - BX-P-ECOMEX ---------- (Ethernet with RJ-45 connector, Secondary Ethernet Port for BX-DM1E)

10 - Reserved

255 - No POM installed

 

DST51

 

$FatalTermCode

Status

When a fatal error occurs, the ERR LED will be on and this register will contain a value that explains what caused the fatal error.

 

0 : No Fatal Error Code

 

1 : any of the following conditions: watchdog timeout, memory error, I/O Error - configuration or mapping - typically happens if the I/O layout changed, Ethernet I/O Master detected an error (usually a missing slave or the I/O layout in a slave has changed).

 

2 : An I/O module in the local base is not responding to backplane requests

 

3 : An Ethernet I/O Slave that is marked as required is not responding.

 

4 : An instruction that was downloaded to the PLC is not valid for the firmware version in the CPU. This will typically only happen if the firmware is downgraded without clearing the Program section of the PLC first.

 

5 : A Force Watchdog Error (WATCHDOG) instruction was executed.

 

6: An error occurred in the program, typically an issue in the MATH stack (overflow / underflow).

 

7 : The limit on the number of local expansion modules that are allowed in the BRX system has been exceeded.

 

DST52

 

$ActiveSessions

Status

The total number of communication sessions that are using Do-more Protocol on any of the programming ports (Ethernet, Serial or USB). This can be communication sessions with Do-more Designer, a C-More panel (if it using Do-more Protocol), connections to other Do-more CPUs over RX or WX instructions, or an 3rd party device that's using Do-more protocol. The maximum number of concurrent sessions is 32.

 

DST53

$PLCSubType

(for BRX)

Status

For the BRX Series PLCs these are the valid Sub-types:

 

128: BX-DM1E-M

129: BX-DM1E-M-D

 

144: BX-DM1-10ED1-D

145: BX-DM1-10ED2-D

 

146: BX-DM1-10ER-D

147: BX-DM1-10AR-D

 

148: BX-DM1E-10ED13-D

149: BX-DM1E-10ED23-D

 

150: BX-DM1E-10ER3-D

151: BX-DM1E-10AR3-D

 

4256: BX-DM1-18ED1

4257: BX-DM1-18ED2

 

4258: BX-DM1-18ER

4259: BX-DM1-18ED1-D

 

4260: BX-DM1-18ED2-D

4261: BX-DM1-18ER-D

 

4514: BX-DM1-18AR

 

4768: BX-DM1E-18ED13

4769: BX-DM1E-18ED23

 

4770: BX-DM1E-18ER3

4771: BX-DM1E-18ED13-D

4772: BX-DM1E-18ED23-D

4773: BX-DM1E-18ER3-D

 

5026: BX-DM1E-18AR3

 

8368: BX-DM1-36ED1

8369: BX-DM1-36ED2

8370: BX-DM1-36ER

8371: BX-DM1-36ED1-D

8372: BX-DM1-36ED2-D

8373: BX-DM1-36ER-D

 

8626: BX-DM1-36AR

 

8886: BX-DM1E-36ED13

8887: BX-DM1E-36ED23

8888: BX-DM1E-36ER3

8889: BX-DM1E-36ED13-D

8890: BX-DM1E-36ED23-D

8891: BX-DM1E-36ER3-D

 

9144: BX-DM1E-36AR3

 

   

The BX-P-ECOMLT POM requires proper IP Addressing information to operate on an Ethernet network. Because the ECOMLT can be hot-swapped into an operating BRX CPU, you have the option of using the value in DST54 to specify where the IP Addressing information for the ECOMLT will come from:

 

  • Use the IP Addressing information that was statically assigned by NetEdit.

  • Any ECOMLT that is installed will temporarily use the IP Addressing information that has been provided in the System Configuration. If the ECOMLT already has a statically assigned IP address that information will not be used. This will allow any external network connection - like Do-more Designer - to operate with any ECOMLT that is installed in this BRX PLC, because the BRX CPU will assign the IP address.

  • Overwrite the existing IP Addressing information in ROM of the ECOMLT with the values from DST54, DST55, DST56, and DST57, then use the newly written values.

 

   

 

DST54

$POMIpSetupSrc

Configuration

 

Specifies the source for the TCP/IP configuration for the installed POM (Note: the BX-P-ECOMLT is currently the only POM that can use DST 54 to do this):

 

0: uses the IP Address information stored in the POM's FLASH memory; also store a copy of that information in the DST55, DST56, and DST57.

 

1: ignore values from DST55, DST56, DST57; do not write values from DST55, DST56, and DST57 to the POM.

 

2: ignores any existing IP addressing information in the POM, and uses the values currently stored in DST55, DST56, and DST57.

 

3: overwrite the IP Addressing information in FLASH memory in the POM with the values from DST55, DST56, and DST57. DST54 will change to 0 after the ROM update is complete. The steps to manually change from the default mode of 0 in DST54 to using a given IP configuration are as follows:

Write a value of 1 to DST54 to get the POM to ignore values from the it's own FLASH memory.

 

After delaying for a few milliseconds (in case the POM was in the process of writing the values) write the new IP Addressing information to DST55, DST56, and DST57.

 

Then write a value of 2 to DST54 to instruct the POM to update its FLASH with the new values.

 

DST54 will return to a value of 0 when the process is complete.

4 - 254: Reserved.

 

255: the POM reporting an error in high Word of DST54

 

DST55

$POMIpAddress

Configuration

The IP Address of an installed BX-P-ECOMLT.

 

DST56

$POMIpNetmask

Configuration

The Netmask of an installed BX-P-ECOMLT.

DST57

$POMIpGateway

Configuration

The Gateway Address of an installed BX-P-ECOMLT.

DST58

$ProgramChecksum

 

A 32-bit value that is the checksum of the current program data.

DST59

$DNSAddress

Status

The IP Address of the DNS Server the PLC is configured to use. Use the IP Address format of the Data View to see the value in the traditional dotted-decimal form.

DST60

$Keyswitch

Status

The current position of the CPU's mode switch:

0 = RUN

1 = TERM

2 = STOP

 

DST61

$SysMsgLevel

Configuration

Communication protocols (like MQTT) have the potential to generate a lot of error and status messages while they are operating. This message processing can increase the PLC scan time beyond acceptable limits. This register controls the amount of messaging data that is generated by the various communication protocols:

 

0 = No Error or Messages reported.

1 = Only report Errors (default).

2 = Report Errors and Messages.

 

     

DST62 through DST67, and DST70 provide IP Address information, runtime status and the MAC address for the secondary Ethernet Adapter. Currently, only the BX-P-ECOMEX POM can be a second Ethernet Adapter on a BRX CPU.

 

DST62

$Eth2IpAddress

Configuration

The IP Address of the secondary Ethernet Adapter.

 

DST63

$Eth2Netmask

Configuration

The Netmask of the secondary Ethernet Adapter.

DST64

$Eth2Gateway

Configuration

The Gateway Address of the secondary Ethernet Adapter.

DST65

$Eth2DroppedPkts

Status

Contains the number of Ethernet packets that have been lost by the secondary Ethernet Adapter since the last power-cycle.

 

DST66

$Eth2PktsReceivd

Status

Contains the total number of Ethernet packets that have been received by the secondary Ethernet Adapter since the last power-cycle.

DST67

$Eth2PktsSent

Status

Contains the total number of Ethernet packets that have been sent by the secondary Ethernet Adapter since the last power-cycle.

 

DST68

$TLSTimeslice

Configuration

The amount of time (in microseconds) the TLS engine is allowed to run on each scan for each device trying to establish an encrypted connection to a server. TLS is used by SMTP (Email), and MQTT client devices, and the HTTPCMD instruction.

DST69

$EIPAdaptrStatus

Status

Contains a bit for each of the 8 EtherNet/IP Instance / Blocks. The bit associated with an Instance / Block will be ON if it is currently attached to a scanner.

DST70

$Eth2MACAddress

Status

Contains the lower 4 bytes of the Ethernet (MAC) Address of the secondary Ethernet Adapter (the upper two bytes of the MAC address are always 00:E0).

DST71

$POMMACAddress

Status

If the installed POM is a BX-P-ECOMLT, this location will contain the lower 4 bytes of the Ethernet (MAC) Address of the POM (the upper two bytes of the MAC address are always 00:E0).

DST72

$EthPacketsFree

Status

The number of unused packet storage buffers available for use by the Ethernet stack for all of the various Ethernet communications. Values above 300 indicate a healthy Ethernet stack. Values approaching 0 indicate packets are being received but not being processed so that the packet buffers can be freed for use by the Ethernet stack.

 

DST80

$POMProtoInfo0

Status

The Protocol Type of the installed POM.

 

DST81

$POMProtoInfo1

Status

The Last Error reported by a protocol POM. See DST88 for directions on how to clear an error code.

DST82

$POMProtoInfo2

Status

Next to Last Error reported by a protocol POM.

   

 

DST83

$POMProtoInfo3

Status

Number of Tags being processed by a protocol POM.

DST84

$POMProtoInfo4

Status

State Machine Information, changing value indicates protocol POM processing activity.

DST85

$POMProtoInfo5

Status

Tick Count, increasing value indicates protocol POM processing activity.

DST86

$POMProtoInfo6

Status

Number of characters in the last tag published by a protocol POM.

DST87

$POMProtoInfo7

Status

Reserved for future use by a protocol POM.

DST88

$POMProtoInfo8

 

Control

 

Bit 0 : set ON to inhibit communication with the broker; set OFF to resume communication with the broker

 

Bit 1: if Bit 0 is ON, setting this bit ON as well will close the connection to the broker

 

Bit 2: each time this bit is set ON for 500ms, Last Error (DST81) will be moved to Next-to-Last Error (DST82), then Last Error (DST81) will be cleared.

 

Bit 3: When this bit transitions from OFF to ON, the IP information in DST55, DST56, and DST57 and the MAC address information in DST71 will be refreshed. These locations are cleared on a STOP to RUN mode transition.

 

Bit 4 - 31: unused / reserved

 

DST89

$POMProtoInfo9

Status

Reserved for future use by a protocol POM.

 

 

All numeric locations starting at DST384 are retentive; they will hold their value through a power cycle.

 

DST384

$TimeZone

Configuration

Contains the number of minutes to apply to the UTC value for the current location of the PLC.

DST385

$WatchdogReboots

Status

The number of hardware and / or software watchdog reboots that have occurred since the last power-cycle. Each time the CPU watchdog fires it will increment the value is $WatchdogReboots (DST385). When this value reaches 10 it will drop the PLC into Program mode on the next restart. This is to prevent the CPU from getting stuck in a n unrecoverable crash loop.

 

DST386

$FailedLoginCnt

Status

The number of login attempts that have failed.

DST387

$ProductID

Configuration

An 8-digit Hex value that is used by Generate DMLoader Image and DMLoader to validate the target CPU before downloading the contents of the image file.

DST388

$ProductVersion

Configuration

An 8-digit Hex value (MMmmBBBB - where MM is the major version, mm is minor version and BBBB is the build number) that is used by Generate DMLoader Image and DMLoader to validate the target CPU before downloading the contents of the image file.
 

DST389

$ImageBackup

Configuration

A 32-bit value that specifies what PLC data to include in an Image Backup on a microSD card (BRX only):

 

Bit 0 : include Program (required)

Bit 1 : include all retentive memory

Bit 2 : include TCP/IP configuration

Bit 3 : include password configuration

Bit 4 : include Product ID

Bit 5 : include restore password

 

See Backup and Restore using microSD (BRX only) for details.

 

DST390

$ImageRestore

Configuration / Status

A 32 bit value that cause a PLC image on a microSD card to be restored to the PLC (BRX only). Will contain an error code if the restore process fails.


See Backup and Restore using microSD (BRX only) for details.

 

DST410

$ModeChngFailed

Status

If an attempt to transition between PLC modes is successful this register will contain 0.

 

If an attempt to transition between PLC modes fails, this location will contain one of the following failure codes:

100 - low level hardware initialization failed
 

101 - one or more modules failed to verify for longer than the verify filter time, and the system is in a permanent I/O shutdown. Power cycle or Re-Initialize I/O required to return to RUN mode
 

102 - there is an error in the manual I/O map
 

103 - there is an error in the manual I/O configuration
 

104 - the attempt to initialize the local I/O failed
 

105 - one or more Ethernet I/O Slaves is offline
 

106 - the Ethernet I/O Master failed to initialize
 

107 - an invalid instruction was downloaded to the CPU

 

DST411

$DebugTrapAddr

Status

Will contain the return address of the last function call executed by the program stack if a runtime exception occurs. A non-zero value in this location indicates that some exception has happened and this address may be useful to the Do-more Designer developers.
 

DST412

$AssertCode

Status

Normally is 0; non-zero value is a firmware diagnostic code.

DST413

$ForceMinScan

Status

Set the Minimum Scan time to a fixed value. At the end of a PLC scan, if the current scan time is less than this value, the CPU will wait until the minimum scan time expires before continuing with the next PLC scan. This value is in microseconds; the maximum value is 10000; a value of 0 disables the function. This happens in both RUN mode and STOP mode.

 

Note: when the CPU is waiting for a minimum scan value, neither the PLC scan nor communication requests are being processed.

 

DST509

$ProbeAddr

Status

Used by the Debug View.

DST510

$NScan

Status

Used by the Debug View.

 

 


Date / Time Structures with System-Assigned Nicknames

Numeric Location

Nickname

Type

Description

SDT0

$Now

Status

The current calculated time (includes Time Zone and Daylight Saving Time adjustments).

 

SDT1

$SysShutdown

Status

The date and time of the last system power-down.

 

SDT2

$SysStartup

Status

The date and time of the last system power-up.

 

 


System-Created Heap Items

Heap Item

 

Type

Description

ERR

 

Status

A String containing the message text of the last error that was generated in the CPU.

MSG

 

Status

A String containing the message text of the last information message that was generated in the CPU.

 

PartNum

 

Status

A String containing the CPU part number.

 

SerialNum

 

Status

A String containing the CPU serial number. On Ethernet-equipped CPUs this is the MAC address of the Ethernet port.

 

SysDesc

 

Status

A String containing the user-assigned Description from the System Information's Set Node Information dialog.

 

SysName

 

Status

A String containing the user-assigned Name from the System Information's Set Node Information dialog.

 

 


See Also:

Built-in Data Blocks

 

Structures and their Fields

 

User-Created Data Blocks and Structures

 

Arrays, Pointers and Tables

 

Cast Operations

 

Assignment Operations and Instructions

 

Using Constant Values

 

System Nicknamed Locations

 


Related Topics:

Element Browser

 

Element Picker