Error code decoder

EDIT. Aug 2020 Massive update to the list. (See below for the PID loop errors).

I’m guessing many of you have used the handy feature in PAC Control under Help > Error Lookup which takes an error code, say:
-9
and converts it into more human understandable text, like:
“Timeout. No response from device. Check hardware connection, address, power, and jumpers.”
You’ll see these same error descriptions when inspecting the message queue.

But have you ever wanted to have this information available from within your strategy, perhaps to display in PAC Display or log to a file? I’ve attached a subroutine to convert the current error values into their corresponding messages (remember that these might be expanded in the future).

Below I’ve included the code if you’d just like to copy it directly. For more info on all of these, see form 1700: PAC Control User’s Guide, appendix B.

  switch( nErrorNumber )
//case 0: sName ="Operation performed successfully.";break
case -1: sName ="Undefined command.";break
case -2: sName ="Checksum or CRC mismatch.";break
case -3: sName ="Buffer overrun or invalid length error.";break
case -4: sName ="Device has powered up. ('Powerup clear expected' message received.)";break
case -5: sName ="Operation failed.";break
case -6: sName ="Data field error.";break
case -7: sName ="Watchdog timeout has occurred.";break
case -8: sName ="Invalid data.";break
case -9: sName ="Timeout. No response from device. Check hardware connection address power and jumpers.";break
case -10: sName ="Invalid port number.";break
case -11: sName ="Could not send data.";break
case -12: sName ="Invalid table index.";break
case -13: sName ="Overflow error.";break
case -14: sName ="Invalid number.";break
case -15: sName ="Cannot divide by zero.";break
case -16: sName ="Bus error.";break
case -17: sName ="Port or object is already locked.";break
case -18: sName ="I/O Unit not configured.";break
case -19: sName ="Reading hold for wrong reaction type.";break
case -20: sName ="Device busy. May be in use by another user or another application.";break
case -21: sName ="Had to relock host port in 'QUIT'.";break
case -22: sName ="Command not valid on specified I/O Unit.";break
case -23: sName ="Destination string too short.";break
case -24: sName ="Device does not understand command.";break
case -25: sName ="Port or object is not locked.";break
case -26: sName ="Unknown response from device.";break
case -27: sName ="Invalid limit error. High/Low values may be reversed.";break
case -28: sName ="Object not found.";break
case -29: sName ="Wrong object type. Most likely caused by moving a pointer table element to a pointer of the wrong type.";break
case -30: sName ="Pointer was not initialized.";break
case -31: sName ="Cannot store local subroutine object into a pointer table parameter.";break
case -32: sName ="Device has not been initialized.";break
case -33: sName ="Unable to clear all characters from port.";break
case -34: sName ="Invalid I/O command or invalid memory location.";break
case -35: sName ="I/O point mismatch: a configured channel does not match the type found on the I/O Unit or is a channel type not supported by the I/O Unit's firmware. Check www.opto22.com for firmware updates.";break
case -36: sName ="Invalid command or feature not implemented.";break
case -37: sName ="Timeout on lock.";break
case -38: sName ="Timeout on send.";break
case -39: sName ="Timeout on receive.";break
case -40: sName ="Not enough data returned. (Received less than expected.)";break
case -41: sName ="Invalid return data.";break
case -42: sName ="Invalid limit (on string index task state priority etc.).";break
case -43: sName ="Received a NACK.";break
case -44: sName ="String too short.";break
case -45: sName ="Null string.";break
case -46: sName ="Invalid string.";break
case -47: sName ="Open failed--handle has already been opened.";break
case -48: sName ="No such device available.";break
case -49: sName ="No more connections are available. Maximum number of connections already in use.";break
case -50: sName ="Open connection timeout. Could not establish connection within the timeout period.";break
case -51: sName ="Close connection timeout. Could not close connection within timeout period.";break
case -52: sName ="Invalid connection -- not opened.";break
case -53: sName ="Connection number not valid.";break
case -54: sName ="No active connection for specified port.";break
case -55: sName ="Control engine type is invalid for the function requested.";break
case -56: sName ="Invalid address.";break
case -57: sName ="String not found.";break
case -58: sName ="No data received.";break
case -59: sName ="Could not receive data.";break
case -60: sName ="Empty stack error. Control engine attempted to perform an operation that expected data on the control engine stack.";break
case -61: sName ="Dictionary full error; no more RAM available. Try clearing and re-downloading the strategy using PAC Control or PAC Terminal if appropriate.";break
case -62: sName ="Stack full error. Control engine stack has grown too big.";break
case -63: sName ="Compile-only error. A command or 'word' was encountered that should only be used when compiling commands or 'words'.";break
case -64: sName ="Execute-only error. A command or 'word' was encountered that cannot be used when compiling.";break
case -65: sName ="Definition not finished.";break
case -66: sName ="Requested item in protected dictionary";break
case -67: sName ="Out of memory. To minimize the size of your strategy reduce the number and size of variables (especially tables). You can also shrink your strategy by using subroutines to perform common tasks.";break
case -68: sName ="Conditionals do not match.";break
case -69: sName ="Invalid parameter (null pointer) passed to command.";break
case -70: sName ="Not enough data supplied.";break
case -71: sName ="Out of non-volatile memory. If applicable check length of persistent and initialize-on-download tables.";break
case -72: sName ="Too many nested subroutines (one calls another calls another).";break
case -73: sName ="Invalid subroutine parameters. Too many parameters passed or incorrect subroutine.";break
case -74: sName ="Invalid filename. Check length and special characters.";break
case -75: sName ="No remaining file handles.";break
case -76: sName ="End of file error. Attempted to access data past the end of the file.";break
case -77: sName ="Host task failed. Possible cause: specified host port is already in use or host attempted to load a non-existent strategy file.";break
case -78: sName ="No destination given (the name of the file ftp on the remote server).";break
case -79: sName ="I/O Unit mismatch: the configured I/O Unit type does not match the unit type found.	";break
case -80: sName ="Reboot for changes to the Windows Registry to take effect.";break
case -81: sName ="Error writing to the memory map.";break
case -82: sName ="Error reading from the memory map.";break
case -83: sName ="Invalid severity. Valid values: Info = 4  Warn = 8 Error = 16";break
case -84: sName ="Can't reallocate memory while it is in use by a subroutine.";break
case -85: sName ="TX Semaphore creation error.";break
case -86: sName ="RX Semaphore creation error.";break
case -87: sName ="Open error.";break
case -88: sName ="RX task creation error.";break
case -89: sName ="RX HISR creation error.";break
case -90: sName ="TX HISR creation error.";break
case -91: sName ="LISR registration error.";break
case -92: sName ="Open UART error.";break
case -93: sName ="I/O Unit not enabled. Previous communication failure may have disabled the unit automatically. Reenable it and try again.";break
case -94: sName ="Trying to enable NULL event or bad event command.";break
case -95: sName ="Data stack is not empty";break
case -96: sName ="Data stack critically full; stopping task";break
case -97: sName ="Too many items popped from data stack";break
case -98: sName ="Boot ID from I/O unit doesn't match the controller's stored value; performing full config";break
case -100: sName ="Invalid length for control engine name. Must be 1 to 31 characters.";break
case -101: sName ="Invalid character in control engine name. Valid characters are letters numbers spaces and most other characters except colons and square brackets. Spaces cannot be used as first or last characters.";break
case -102: sName ="First and last characters in control engine name cannot be spaces.";break
case -103: sName ="Could not unlock. The task attempting to do the unlock does not match the task that currently has the lock.";break
case -104: sName ="Bad key data (data missing bad length or corrrupt).";break
case -105: sName ="Decryption failure";break
case -106: sName ="Encryption failure";break
case -107: sName ="The board is offline or disabled; no send / receive attempt made";break
case -108: sName ="An operation was interrupted";break
case -109: sName ="Performed a write to read-only memory or file.";break
case -110: sName ="The microSD card is missing.";break
case -111: sName ="The hardware doesn't support this feature.";break
case -112: sName ="NVRAM does not match the current strategy; it may have been changed by a strategy from uSD or the battery may need to be replaced.";break
case -113: sName ="An unhandled exception was encountered.";break
case -114: sName ="The operation was aborted.";break
case -115: sName ="Search failed.";break
case -116: sName ="Operation would result in an endless loop.";break
case -203: sName ="Driver could not be found or loaded.";break
case -204: sName ="Could not write new entry to Windows Registry. Make sure you have administrative privileges for the operating system.";break
case -205: sName ="Could not read value(s) from Windows Registry.";break
case -206: sName ="Startup data in Windows Registry is invalid or missing.";break
case -207: sName ="Duplicate entry already exists in Windows Registry.";break
case -300: sName ="No response from modem during attempt to dial. Use HyperTerminal to make sure modem responds with 'OK' to the 'AT' command.";break
case -301: sName ="The type of port is invalid for this operation. For example a dialing a modem was attempted on an ARCNET port.";break
case -302: sName ="Error issuing a dial command to modem. Perhaps the dial string is empty.";break
case -303: sName ="Timeout waiting for modem to connect.";break
case -304: sName ="Could not connect. Phone line may be busy.";break
case -305: sName ="Could not find modem handle. Hang up and dial again.";break
case -400: sName ="Control engine previously acquired by another process.";break
case -401: sName ="Authorization failed. More info may be available in a system log.";break
case -403: sName ="Internal control engine handle invalid.";break
case -404: sName ="RPC binding error. NetBios might not be running.";break
case -405: sName ="RPC call error. Verify that all appropriate protocols are installed and running.";break
case -406: sName ="Control engine inaccessible. Cannot acquire lock.";break
case -407: sName ="File not found.";break
case -408: sName ="Error during file access.";break
case -409: sName ="Operation cancelled by user.";break
case -410: sName ="Dictionary is incomplete after flash download.";break
case -411: sName ="Ethernet: Invalid socket";break
case -412: sName ="Ethernet: Cannot connect error. Check IP address and subnet mask.";break
case -413: sName ="Invalid idb file name.";break
case -414: sName ="Out of handles to open.";break
case -415: sName ="Cannot create file.";break
case -416: sName ="Cannot create temporary file.";break
case -417: sName ="Cannot open file.";break
case -418: sName ="Cannot read file.";break
case -419: sName ="Not a valid PAC Control file.";break
case -420: sName ="Invalid handle.";break
case -421: sName ="Write access not allowed.";break
case -422: sName ="Cannot copy temporary .idb file.";break
case -423: sName ="Cannot rename temporary file.";break
case -424: sName ="Cannot delete temporary file.";break
case -425: sName ="Invalid storage format.";break
case -426: sName ="Incorrect number of objects specified.";break
case -427: sName ="Invalid bitmask for binary storage.";break
case -428: sName ="Cannot open dump output file.";break
case -429: sName ="The strategy you're attempting to open was last saved with a newer version of PAC Control than the one you're currently using. You may need to update your version of PAC Control.";break
case -430: sName ="Invalid data range. Verify high value is greater than low value.";break
case -431: sName ="Cannot release object/device (may not be locked).";break
case -432: sName ="Cannot unlock object/device (may not be locked) -- in use by another process.";break
case -433: sName ="Object/device already locked.";break
case -434: sName ="The control engine is in use by another process on this computer or may be unreachable.";break
case -435: sName ="Check the strategy on the control engine.";break
case -436: sName ="Memory exception during a database operation.";break
case -437: sName ="No acceptable socket interface found.";break
case -438: sName ="Could not create socket.";break
case -439: sName ="Not connected.";break
case -440: sName ="Could not bind socket.";break
case -441: sName ="Not listening on socket.";break
case -442: sName ="Could not accept on socket.";break
case -443: sName ="Could not receive on socket.";break
case -444: sName ="Could not send on socket.";break
case -445: sName ="ioCdb: The file format change has been rejected by the user.";break
case -446: sName ="FTP: login failed. Check username password and max login on the server";break
case -447: sName ="FTP: connect failed. Check IP address and port.";break
case -448: sName ="FTP: could not create session. Check IP address and port.";break
case -449: sName ="FTP: error while setting local port number that incoming data connections should use.";break
case -450: sName ="DNS could not resolve host name to an IP address.";break
case -451: sName ="SMTP: Login failed. Check username and password.";break
case -452: sName ="File already exists.";break
case -453: sName ="Invalid pathname or drive specification.";break
case -454: sName ="Unable to connect to DNS server. Check DNS and gateway configuration.";break
case -455: sName ="FTP: Unable to resume download.";break
case -456: sName ="Unrecognized or bad encoding.";break
case -457: sName ="Maximum file size exceeded.";break
case -458: sName ="Local disk is full.";break
case -459: sName ="Remote disk is full.";break
case -460: sName ="File not found on server.";break
case -461: sName ="Passwords do not match";break
case -462: sName ="Do not set to the default value.";break
case -463: sName ="Insufficient permissions to perform the operation.";break
case -464: sName ="Path points outside your accessible address space.";break
case -465: sName ="Not a directory.";break
case -466: sName ="Too many symbolic links encountered in resolving path.";break
case -467: sName ="Path would result in too many symbolic links.";break
case -468: sName ="Specified name is a directory.";break
case -500: sName ="ConnectionDef missing or not defined.";break
case -501: sName ="Could not open recordset.";break
case -502: sName ="DAO exception.";break
case -503: sName ="Invalid database table length.";break
case -504: sName ="Invalid state for database handshake (neither IDLE XFER_REQUEST nor STATE_IN_PROGRESS).";break
case -505: sName ="No database handshake found for the table.";break
case -506: sName ="Could not write to ErrorLog.";break
case -507: sName ="Cannot write to a digital/analog input. Only outputs may be written to.";break
case -508: sName ="Invalid state for control engine handshake (neither IDLE XFER_REQUEST nor STATE_IN_PROGRESS).";break
case -509: sName ="Failure resetting control engine handshake.";break
case -510: sName ="Failure updating control engine handshake.";break
case -511: sName ="Failure writing to database.";break
case -512: sName ="Failure reading from database.";break
case -513: sName ="Failure writing to control engine.";break
case -514: sName ="Failure reading from control engine.";break
case -515: sName ="Runtime tables did not validate or were not created.";break
case -516: sName ="Problem opening recordset for writing.";break
case -517: sName ="Empty record in write table.";break
case -518: sName ="Failure opening runtime database.";break
case -519: sName ="No tags to read/write.";break
case -520: sName ="Failure opening master project database.";break
case -521: sName ="Failure loading project from master project database.";break
case -522: sName ="Could not delete contents of a table.";break
case -523: sName ="Firmware version could not be read. Possible cause: firmware out of date.";break
case -524: sName ="Could not read firmware version. Possible cause: EPROM out of date.";break
case -525: sName ="Strategy time/date stamp mismatch.";break
case -526: sName ="Strategy name mismatch.";break
case -527: sName ="Invalid typemask used.";break
case -528: sName ="Failure deleting records from table.";break
case -529: sName ="Failure writing to table.";break
case -530: sName ="Invalid control engine name. Control engine not configured (name not in Windows Registry). Make sure the control engine name is not misspelled.";break
case -531: sName ="Buffer full.";break
case -532: sName ="Buffer empty.";break
case -533: sName ="Control engine type mismatch. Control engine is not supported by this version of software.";break
case -534: sName ="Attempt(s) to communicate with I/O Unit failed.";break
case -535: sName ="I/O unit has successfully switched to alternate target address.";break
case -536: sName ="All target addresses disabled on I/O unit.";break
case -537: sName ="All target addresses on I/O unit already assigned.";break
case -538: sName ="The address string passed does not match the passed I/O unit's address.";break
case -539: sName ="I/O error; performing retry";break
case -540: sName ="The strategy in RAM has not been burned to flash.";break
case -541: sName ="A bad configuration was detected on an I/O unit";break
case -542: sName ="I/O unit configuration completed";break
case -543: sName ="Communications has been attempted with all configured I/O target addresses";break
case -600: sName ="Redundant controller qualification failed.";break
case -601: sName ="Unable to connect to an active controller.";break
case -602: sName ="Redundant backup controller is not compatible with active controller.";break
case -603: sName ="Redundant controller not yet set as active or backup.";break
case -604: sName ="Redundant backup kernel update failed.";break
case -605: sName ="Redundant backup strategy update failed.";break
case -606: sName ="Redundant command issued on non-redundant or wrong (active vs backup) controller.";break
case -607: sName ="Redundant command received out of order.";break
case -608: sName ="Redundant sync command received with no task ptr.";break
case -609: sName ="Redundant STEP command timeout.";break
case -610: sName ="Redundant message failure.";break
case -611: sName ="Cannot download redundant strategy to non-redundant controller or non-redundant strategy to redundant controller.";break
case -612: sName ="Unable to enqueue sync command";break
case -613: sName ="I/O configuration failed";break
case -614: sName ="Incompatible I/O unit firmware.";break
case -615: sName ="Io monitor can not communicate with I/O unit.";break
case -2002: sName ="PKI: Certificate expired";break
case -2003: sName ="PKI: Certificate unmatched";break
case -2004: sName ="PKI: Unable to add private key";break
case -2005: sName ="PKI: Certificate signed by unknown CA";break
case -2006: sName ="PKI: No root certificates found";break
case -2007: sName ="PKI: Error loading trust store";break
case -2008: sName ="PKI: Self-signed certificate";break
case -2100: sName ="SSL: Client start failure";break
case -2101: sName ="SSL: Client stop failure";break
case -2103: sName ="SSL: Handshake failed";break
case -2104: sName ="SSL: Handshake failed due to invalid or unverifiable certificate";break
case -2105: sName ="SSL: Unspecified asynchronous platform error";break
case -2106: sName ="SSL: SSL session is not open";break
case -2107: sName ="SSL: Crypto engine not found";break
case -2108: sName ="SSL: Cannot set default SSL engine";break
case -2109: sName ="SSL: Couldn't use specified cipher";break
case -2110: sName ="SSL: Server start failure";break
case -2111: sName ="SSL: Server stop failure";break
case -2200: sName ="Image digital signature verification failed";break
case -8607: sName ="Invalid protocol.";break
case -8608: sName ="Port initialization failed.";break
case -8610: sName ="Baud rate is not valid/supported.";break
case -8612: sName ="Old response to new command.";break
case -8613: sName ="Out of memory (in the SerialData global array).";break
case -8614: sName ="Connection type is invalid.";break
case -8615: sName ="Control engine does not have flash EPROM.";break
case -8616: sName ="Invalid control engine firmware version";break
case -8617: sName ="Error occurred while storing to flash EPROM.";break
case -8618: sName ="No B3000 found.";break
case -8619: sName ="NetBios connect error.";break
case -8620: sName ="ioCdb: Unknown error.";break
case -8621: sName ="Ran out of locking objects.";break
case -8622: sName ="Response not from the expected node.";break
case -8623: sName ="WinRT: Mutual Exclusion could not be created.";break
case -8624: sName ="WinRT: Mutual Exclusion could not be deleted.";break
case -8625: sName ="Could not create a handle. Possible cause: port in use by another application.";break
case -8626: sName ="Control engine name does not exist in the controller names repository. Make sure the control engine name is not misspelled.";break
case -10013: sName ="Ethernet socket error:Permission denied.";break
case -10048: sName ="Ethernet socket error:Address already in use.";break
case -10049: sName ="Ethernet socket error:Cannot assign requested address.";break
case -10047: sName ="Ethernet socket error:Address family not supported by protocol family.";break
case -10037: sName ="Ethernet socket error:Operation already in progress.";break
case -10054: sName ="Ethernet socket error:Connection reset by peer.";break
case -10039: sName ="Ethernet socket error:Destination address required.";break
case -10014: sName ="Ethernet socket error:Bad address.";break
case -10064: sName ="Ethernet socket error:Host is down.";break
case -10065: sName ="Ethernet socket error:No route to host.";break
case -10036: sName ="Ethernet socket error:Operation now in progress.";break
case -10004: sName ="Ethernet socket error:Interrupted function call.";break
case -10022: sName ="Ethernet socket error:Invalid argument.";break
case -10056: sName ="Ethernet socket error:Socket is already connected.";break
case -10024: sName ="Ethernet socket error:Too many open files.";break
case -10040: sName ="Ethernet socket error:Message too long.";break
case -10050: sName ="Ethernet socket error:Network is down.";break
case -10052: sName ="Ethernet socket error:Network dropped connection on reset.";break
case -10051: sName ="Ethernet socket error:Network is unreachable.";break
case -10055: sName ="Ethernet socket error:No buffer space available.";break
case -10042: sName ="Ethernet socket error:Bad protocol option.";break
case -10057: sName ="Ethernet socket error:Socket is not connected.";break
case -10038: sName ="Timeout while connecting to device. Check hardware connection address power and jumpers.";break
case -10045: sName ="Ethernet socket error:Operation not supported.";break
case -10046: sName ="Ethernet socket error:Protocol family not supported.";break
case -10067: sName ="Ethernet socket error:Too many processes.";break
case -10043: sName ="Ethernet socket error:Protocol not supported.";break
case -10041: sName ="Ethernet socket error:Protocol wrong type for socket.";break
case -10058: sName ="Ethernet socket error:Cannot send after socket shutdown.";break
case -10044: sName ="Ethernet socket error:Socket type not supported.";break
case -10060: sName ="Ethernet socket error:Connection timed out.";break
case -10109: sName ="Ethernet socket error:Class type not found.";break
case -10035: sName ="Ethernet socket error:Resource temporarily unavailable.";break
case -11001: sName ="Ethernet socket error:Host not found.";break
case -10093: sName ="Ethernet socket error:Successful startup not yet performed.";break
case -11004: sName ="Ethernet socket error:Valid name no data record of requested type.";break
case -11003: sName ="Ethernet socket error:This is a nonrecoverable error.";break
case -10091: sName ="Ethernet socket error:Network subsystem is unavailable.";break
case -11002: sName ="Ethernet socket error:Nonauthoritative host not found.";break
case -10092: sName ="Ethernet socket error:Version out of range.";break
case -10101: sName ="Ethernet socket error:Asynchronous message sent.";break
case -13000: sName ="Controller database file not found.";break
case -13001: sName ="Library does not support requested function.";break
case -13002: sName ="Error in the opening method string.";break
case -13003: sName ="Invalid method argument created.";break
case -13004: sName ="Data sent doesn't match returned value.";break
case -13005: sName ="A driver function was not found.";break
case -13006: sName ="An invalid ioctl function was requested.";break
case -13007: sName ="The serial driver end-of-message (EOM) character was not set.";break
case -13008: sName ="No driver transport modules found.";break
case -13009: sName ="The requested function name not found in module.";break
case -13010: sName ="The named controller was not found in the list.";break
case -13011: sName ="The limit of controllers in the list is reached.";break
case -13012: sName ="Strange error; ever have one of those days.";break
case -13013: sName ="Simple fail flag.";break
case -13014: sName ="Short response received.";break
case -13015: sName ="Library env variable not found.";break
case -13016: sName ="Buffer size is too small for protocol.";break
case -13017: sName ="An opto 22 system environment variable was not found.";break
case -13018: sName ="Setting the socket broadcast option failed.";break
case -13019: sName ="An argument in a string is bad.";break
case -13020: sName ="A misconfigured point error is reported. (Check brain's module configuration)";break
case -13021: sName ="Sequence ID mismatch. Somehow the response sequence ID doen't match the command's.";break
case -13022: sName ="Packet response id was not expected to be received.";break
case -13023: sName ="Failed to acquire the object lock.";break
case -13024: sName ="The signature lengths don't match.";break
case -13025: sName ="The signatures don't match.";break
case -13026: sName ="The object's initialize or open hasn't been called.";break
case -13027: sName ="Function called reports a general timeout";break
case -13028: sName ="The object is not open.";break
case -13029: sName ="Object is already initialized with engine and cannot be modified.";break
case -13030: sName ="Unknown object type. Inspect tag name for error";break
case -13031: sName ="Another object was added to a full list. Inspect the list size.";break
case -13032: sName ="An invalid option data type was referenced.";break
case -13033: sName ="A 4-pass command validation failed.";break
case -13034: sName ="Optomux Brain reports a power up clear was expected. It reset or power cycled since last command.";break
case -13035: sName ="Optomux Brain reports an unknown command was received.";break
case -13036: sName ="Optomux Brain reports a command with a bad checksum was received.";break
case -13037: sName ="Optomux Brain reports that too many characters were received (missing a carriage return).";break
case -13038: sName ="Optomux Brain reports that non-printable ASCII characters were received.";break
case -13039: sName ="Optomux Brain reports that the command received has an out of range data field(s).";break
case -13040: sName ="Optomux Brain reports that the communication watchdog timed out (activated).";break
case -13041: sName ="Optomux Brain reports that the command received has invalid limits.";break
case -13042: sName ="A stream connection is still in progress.";break
case -13043: sName ="The object table is dirty when trying to read the object table.";break
case -13044: sName ="The object table has incompatible data types.";break
case -13045: sName ="The engine read function received an invalid object feature type.";break
case -13046: sName ="The tag inspected is not an object; it might be a dictionary word.";break
case -13047: sName ="A system environment variable (OPTOCONFIG or OPTOUSER) is missing";break
case -13048: sName ="The List is empty no items to return.";break
case -13049: sName ="A remote host closed or shut down a TCP session. Not necessarily an error.";break
case -13050: sName ="The stream being closed was not created by the Accept member function.";break
case -13051: sName ="The operation was aborted by the client application.";break
case -13052: sName ="The operation returned more data than was expected.";break
case -13053: sName ="The command buffer created is too large.";break
case -13054: sName ="Winsock configuration is wrong or missing from the system.";break
case -13055: sName ="Host name or address is invalid.";break
case -13056: sName ="This device is already configured and cannot be reconfigured.";break
case -13057: sName ="A requested device (index name ...) doesn't exist.";break
case -13058: sName ="The response from a device in unrecognizable or changed unexpectedly.";break
case -13059: sName ="Winsock library not initialized.";break
case -13060: sName ="Ethernet connection is down.";break
case -13061: sName ="The buf parameter is not completely contained in a valid part of the user address space.";break
case -13062: sName ="The socket is not connected.";break
case -13063: sName ="The connection has been broken; the keep-alive function detected a failure while the operation was in progress.";break
case -13064: sName ="The file descriptor is not a socket.";break
case -13065: sName ="The socket option is not supported.";break
case -13066: sName ="The socket has been shut down by remote host.";break
case -13067: sName ="The socket is marked as nonblocking and the receive operation would block.";break
case -13068: sName ="The message size of the socket is invalid.";break
case -13069: sName ="The socket is invalid.";break
case -13070: sName ="The connection is aborted.";break
case -13071: sName ="The connection has timed out.";break
case -13072: sName ="The connection has been reset by a remote host.";break


      default: NumberToString(nErrorNumber, sName); break
   endswitch

I hope that’s useful!
-OptoMary

2 Likes

Great Idea…
Thanks

Nice stuff!

How can i resolve -454 and -443 errors?

Errors coming in sending mails

I did a search for -454 in the Forums, and found this one; PAC Control "Open Outgoing Communication" command returning uncommon error code - #4 by mstjohn

The other error is a little trickier, it may be related to the first one, or to gmail itself. (I am assuming you are trying to send gmail?).

Bottom line for both, check DNS, gateway and IP addresses through the path.

Yeah i am trying to send gmail, but unable to do due to this error. Guide me to change the gateway and DNS server address of the strategy. I have changed the gateway and DNS by the PAC manager but still the error comes along. I have used an Ethernet switch in which my laptop, the R1 controller and my internet network is connected. Guide me solving these errors.

Please work with your IT department to get those settings sorted.

Also there is a lot of help given in this thread here; Send an email from a controller - #28 by aec_dan

Thank you very much for your guidance :slight_smile:

Great Stuff! Thank you

How I can resolve Error -12 and -69?

-12 is table outside of index.
That means you have a bug in your code that is addressing a table index that does not exist.

-69 is empty pointer.
That means you have a bug in your code that is addressing a pointer that is blank.

In both cases, don’t panic.
In the first instance, look for an index that is one more than your table size.
Remember, tables start at 0, its easy to address outside of limits by going 1 higher than the table size.

Empty pointer is a bit trickier, but you should be able to see what block is causing the error and narrow it down from there.

You can look up errors quickly from within PAC Control. Just click on Help → Error Lookup.

1 Like

When I updated the list in Aug 2020, it became too long for the forum body (turns out it has character limit - who knew).
I trimmed the PID loop errors.
Here they are if you want to add them back into the master list.

case -700: sName ="PID Loop 0 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -701: sName ="PID Loop 1 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -702: sName ="PID Loop 2 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -703: sName ="PID Loop 3 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -704: sName ="PID Loop 4 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -705: sName ="PID Loop 5 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -706: sName ="PID Loop 6 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -707: sName ="PID Loop 7 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -708: sName ="PID Loop 8 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -709: sName ="PID Loop 9 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -710: sName ="PID Loop 10 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -711: sName ="PID Loop 11 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -712: sName ="PID Loop 12 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -713: sName ="PID Loop 13 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -714: sName ="PID Loop 14 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -715: sName ="PID Loop 15 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -716: sName ="PID Loop 16 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -717: sName ="PID Loop 17 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -718: sName ="PID Loop 18 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -719: sName ="PID Loop 19 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -720: sName ="PID Loop 20 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -721: sName ="PID Loop 21 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -722: sName ="PID Loop 22 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -723: sName ="PID Loop 23 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -724: sName ="PID Loop 24 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -725: sName ="PID Loop 25 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -726: sName ="PID Loop 26 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -727: sName ="PID Loop 27 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -728: sName ="PID Loop 28 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -729: sName ="PID Loop 29 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -730: sName ="PID Loop 30 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -731: sName ="PID Loop 31 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -732: sName ="PID Loop 32 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -733: sName ="PID Loop 33 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -734: sName ="PID Loop 34 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -735: sName ="PID Loop 35 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -736: sName ="PID Loop 36 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -737: sName ="PID Loop 37 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -738: sName ="PID Loop 38 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -739: sName ="PID Loop 39 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -740: sName ="PID Loop 40 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -741: sName ="PID Loop 41 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -742: sName ="PID Loop 42 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -743: sName ="PID Loop 43 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -744: sName ="PID Loop 44 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -745: sName ="PID Loop 45 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -746: sName ="PID Loop 46 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -747: sName ="PID Loop 47 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -748: sName ="PID Loop 48 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -749: sName ="PID Loop 49 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -750: sName ="PID Loop 50 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -751: sName ="PID Loop 51 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -752: sName ="PID Loop 52 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -753: sName ="PID Loop 53 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -754: sName ="PID Loop 54 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -755: sName ="PID Loop 55 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -756: sName ="PID Loop 56 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -757: sName ="PID Loop 57 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -758: sName ="PID Loop 58 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -759: sName ="PID Loop 59 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -760: sName ="PID Loop 60 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -761: sName ="PID Loop 61 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -762: sName ="PID Loop 62 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -763: sName ="PID Loop 63 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -764: sName ="PID Loop 64 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -765: sName ="PID Loop 65 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -766: sName ="PID Loop 66 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -767: sName ="PID Loop 67 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -768: sName ="PID Loop 68 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -769: sName ="PID Loop 69 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -770: sName ="PID Loop 70 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -771: sName ="PID Loop 71 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -772: sName ="PID Loop 72 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -773: sName ="PID Loop 73 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -774: sName ="PID Loop 74 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -775: sName ="PID Loop 75 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -776: sName ="PID Loop 76 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -777: sName ="PID Loop 77 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -778: sName ="PID Loop 78 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -779: sName ="PID Loop 79 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -780: sName ="PID Loop 80 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -781: sName ="PID Loop 81 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -782: sName ="PID Loop 82 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -783: sName ="PID Loop 83 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -784: sName ="PID Loop 84 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -785: sName ="PID Loop 85 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -786: sName ="PID Loop 86 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -787: sName ="PID Loop 87 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -788: sName ="PID Loop 88 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -789: sName ="PID Loop 89 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -790: sName ="PID Loop 90 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -791: sName ="PID Loop 91 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -792: sName ="PID Loop 92 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -793: sName ="PID Loop 93 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -794: sName ="PID Loop 94 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break
case -795: sName ="PID Loop 95 has been configured outside of this strategy (in PAC Manager or in another strategy) and could conflict with this strategy's logic.";break```
1 Like

How do i resolve error -416: cannot create temporary file.
I seem to get this on just 2 strategy files of the 14. everywhere else they work just fine and nothing changed. but when i want to at the new controller in Display and select the strategy files i get that error.

Welcome to the forums!

I’m just a bit lost where you are seeing this error…
Are you using a SNAP PAC controller?
Is the error thrown in a strategy from a comm handle?

It sounds like you might be seeing the error opening a strategy on a Windows PC?
Perhaps in PAC Display? If this is the case, how are you opening the strategy files in PAC Display?

thanks.
i kind of just noticed part of the problem.
this is what i am trying to do.
i have 1 central Runtime that displays most things that it imports from 12 different setups with their own controllers and runtime.
the problem is that they are not all the same version. the main display runs on 9.6 like 10 out of 12 controllers. the 1 where i get the -416 error code trying to configure the new controller runs on 10.2,
i can’t select the strategy file to configure the controller because of the different versions.
The problem for me is that it does work with another 1 that is 10.2 for a while now.

I do have this problem still where when i run runtime it gives the same -416 error on 2 controllers that are on the same 9.6 version, when i confirm the errors everything works fine.

Hope you can figure out what i am trying to say.

thanks,

I just tested PAC Display connecting to a few different versions of SNAP PAC controllers and did not have any issues.

I am confused by the fact that you say you ‘cant select the strategy file because of the different version’ - the 10.2 version controller.
The version should not matter when choosing the .idb file.

I am then further confused when you say that its switching from configure mode to run mode you get the -416 error on a controller running 9.6.
You can then clear the error and everything works.

If you are getting the error when switching between config and run modes, then the issue is not with PAC Control at all.
The errors listed in this forum thread are for PAC Control, not PAC Display.

sorry then i am in the wrong thread, last question.
but what i meant with my problem is that i use PAC display on a different computer to access PAC controllers and create a monitoring display for all of them in 1.
when i then try to configure the controller in display config to make use of the tags and i have to select the IP and strategy file it gives me that error (-416) on the strategy and i can’t use the tags.
Did does work with one other 10.2 controller i added recently after i chose an older strategy file, but not with this one.
Can you maybe think of something in the strategy or difference between versions that won’t allow this?
One thing i noticed is that all the older versions have .idb type and the 10.2 have .$idb type.

The other thing i said where i got that -416 error is when i run runtime.
When it loads everything 2 strategies on 2 controllers, which are almost exact copies, that run on 9.6 give the error. I get 2 (-416)errors per strategy but those i can click away and works fine after.

Ah. Ok, the $ is a huge clue…
Do you by any chance use Dropbox or Google Drive on that sub-directory? I have found that those file syncing programs often cause issues with the way PAC Control keeps a lock file open while the strategy is open.

The $idb is a temporary file. If you look at that directory in your Windows Explorer you will find the real .idb. If its not there, then you need to open the strategy in PAC Control and make sure it will open cleanly and that should recreate the .idb when you save and close the strategy.
Then, of course, use the real .idb in PAC Control, not the $idb one.

Since you have some strategies that open and run fine and some that don’t, I wonder if the ones that give the error are the ones with the $ in them?

Thank you OptoMary.

My question is how to read these errors from the optoscript and more important how to clear them? Is there any function to clear all errors similar to button on the “View message queue” window?

Thanks,

Sergiy

Hi Sergiy. Welcome to the Opto 22 forums!

There are a bunch of ‘error’ commands that you can use to view and clear errors.
Take a look at page 311 of the PAC Control Users Guide… Here is a snip of the ones that I think you will find the most helpful on this topic.

To read, look at ‘Get Error…’. To clear all, Clear All Errors is the command to use.