Real Time Plant Control Software

Real time process control is a very demanding application. Life would be relatively simple if processes started and ran forever with no disturbances, maintenance, schedule changes, etc. However, the only constant is change. There are quite a few commercial products available, such as Pavilion Technologies Process Perfecter, that handle dynamic control in a fixed environment. However, they run into serious difficulties when the model has to be changed. The purpose of the Orchronix software package is to control the software that controls the plant.

The big picture of the Orchronix software is apply Business Process Management techniques to the real time control world. See for example, BPEL for Web Services.


Here are some screen snapshots of the Java version of Orchronix. These are intended to demonstrate a typical application of formatting some data files, preprocessing them, and running models built from them.


Data File Formatter


Data Preprocessor


Run One Model


Alternate Models

These screen snapshots are from the .Net version of Orchronix. One would normally progress through these screens in order.


File Editor


Format Columns


Format Rows


Verify Format


testoryx.out - Sample output while running Orchronix application

   1: Wrote application xsd to application.xsd
   2: 
   3: Wrote process xsd to process.xsd
   4: 
   5: Wrote activity xsd to activity.xsd
   6: 
   7: Test Process: 
   8:   Process 'Simple Test Process'
   9:     Start Process 'Start'
  10:     Stop Process 'Stop'
  11:     Scripted Activity 'Script1'
  12:     Scripted Activity 'Script2'
  13: 
  14: Got expected result: 
  15: hello\r\n
  16: world\r\n
  17: 
  18: Test Process: 
  19:   Process 'Loop Test Process'
  20:     Start Process 'Start'
  21:     Stop Process 'Stop'
  22:     Scripted Activity 'Script1'
  23:     Scripted Activity 'Script2'
  24:     Branch Activity 'Branch3'
  25:     Scripted Activity 'Script4'
  26:     Scripted Activity 'Script5'
  27: 
  28: Got expected result: 
  29: it's a\r\n
  30: mad\r\n
  31: mad\r\n
  32: mad\r\n
  33: world\r\n
  34: 
  35: Test Process: 
  36:   Process 'Test DOS Activity'
  37:     Start Process 'Start'
  38:     Stop Process 'Stop'
  39:     Operating System Activity 'DOS1'
  40:     Scripted Activity 'Script2'
  41: 
  42: Got expected result: 
  43: STDOUT:\r\n
  44: Hello\r\n
  45: World\r\n
  46: 51\r\n
  47: \r\n
  48: STDERR:\r\n
  49: \r\n
  50: 
  51: Test Process: 
  52:   Process 'Test CSharp Activity'
  53:     Start Process 'Start'
  54:     Stop Process 'Stop'
  55:     CSharp Activity 'CSharp1'
  56:     Scripted Activity 'Script2'
  57: 
  58: Got expected result: 
  59: Sum of 9 and 16 is 25\r\n
  60: 
  61: Test Process: 
  62:   Process 'Test User Activity'
  63:     Start Process 'Start'
  64:     Stop Process 'Stop'
  65:     Scripted Activity 'Script1'
  66:     User Activity 'User2'
  67:     Scripted Activity 'Script3'
  68:     Scripted Activity 'Script4'
  69: 
  70: Got expected result: 
  71: timed out\r\n
  72: 
  73: Test Process: 
  74:   Process 'Test User Activity'
  75:     Start Process 'Start'
  76:     Stop Process 'Stop'
  77:     Scripted Activity 'Script1'
  78:     User Activity 'User2'
  79:     Scripted Activity 'Script3'
  80:     Scripted Activity 'Script4'
  81: 
  82: Got expected result: 
  83: completed: approved\r\n
  84: 
  85: Test Process: 
  86:   Process 'Amazon Web Service Process'
  87:     Start Process 'Start'
  88:     Stop Process 'Stop'
  89:     Scripted Activity 'Script1'
  90:     Web Service DOC Activity 'WebSvc2'
  91:     Scripted Activity 'Script3'
  92:     Fail Process 'Fail'
  93: 
  94: Test failed
  95: 
  96: Expected result: 
  97: Author of The Firm is John Grisham\r\n
  98: Actual result: 
  99: 
 100: Test Process: 
 101:   Process 'Spell Check Service Process'
 102:     Start Process 'Start'
 103:     Stop Process 'Stop'
 104:     Scripted Activity 'Script1'
 105:     Web Service DOC Activity 'WebSvc2'
 106:     Scripted Activity 'Script3'
 107:     Fail Process 'Fail'
 108: 
 109: Test failed
 110: 
 111: Expected result: 
 112: Sample correction for elephante is elephant\r\n
 113: Actual result: 
 114: 
 115: Test Process: 
 116:   Process 'Planet ODBC Process'
 117:     Start Process 'Start'
 118:     Stop Process 'Stop'
 119:     ODBC Activity 'Odbc1'
 120:     Scripted Activity 'Script2'
 121: 
 122: Got expected result: 
 123: Mass of Mars is about 0.708 x 10^21 tons\r\n
 124: 
 125: Quad(2,-12,18) : same=True real=True r1=3 r2=3 i1=0 i2=0
 126: Quad(1,0,-4) : same=False real=True r1=2 r2=-2 i1=0 i2=0
 127: Quad(1,2,10) : same=False real=False r1=-1 r2=-1 i1=3 i2=-3
 128: 
 129: Cubic(1,-6,12,-8) : same=True real=True r1=2 r2=2 r3=2 i2=0 i3=0
 130: Cubic(2,-4,-22,24) : same=False real=True r1=4 r2=-3 r3=1 i2=0 i3=0
 131: Cubic(3,-10,14,27) : same=False real=False r1=-0.999999999999993 r2=2.16666666666666 r3=2.16666666666666
 132:   i2=2.07498326633146 i3=-2.074983266
 133: 

testoryx.log - Sample log file while running Orchronix application

   1: Log file created at Sunday, March 07, 2004 2:28:11 PM
   2: 
   3: -- Environment members --
   4: CommandLine: ..\OryxTest\bin\OryxTest.exe
   5: GetCommandLineArgs: ..\OryxTest\bin\OryxTest.exe
   6: CurrentDirectory: C:\Users\Steve f\Orchronix\csrc\test
   7: MachineName: DELL2
   8: OSVersion: Microsoft Windows NT 5.1.2600.0
   9: SystemDirectory: C:\WINDOWS\System32
  10: TickCount: 59270968
  11: UserDomainName: DELL2
  12: UserInteractive: True
  13: UserName: Steve
  14: Version: 1.1.4322.573
  15: WorkingSet: 11579392
  16: GetEnvironmentVariable: 
  17:   My temporary directory is C:\DOCUME~1\Steve\LOCALS~1\Temp.
  18: GetEnvironmentVariables: 
  19:   SystemDrive = C:
  20:   USERPROFILE = C:\Documents and Settings\Steve
  21:   INCLUDE = c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\
  22:   PROCESSOR_ARCHITECTURE = x86
  23:   JAVA_HOME = C:\Program Files\jdk1.3.1_09
  24:   LOGONSERVER = \\DELL2
  25:   VS71COMNTOOLS = c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\
  26:   PROCESSOR_REVISION = 0207
  27:   ProgramFiles = C:\Program Files
  28:   NUMBER_OF_PROCESSORS = 1
  29:   CommonProgramFiles = C:\Program Files\Common Files
  30:   TMP = C:\DOCUME~1\Steve\LOCALS~1\Temp
  31:   APPDATA = C:\Documents and Settings\Steve\Application Data
  32:   ComSpec = C:\WINDOWS\system32\cmd.exe
  33:   PROCESSOR_IDENTIFIER = x86 Family 15 Model 2 Stepping 7, GenuineIntel
  34:   HOMEDRIVE = C:
  35:   COMPUTERNAME = DELL2
  36:   PROCESSOR_LEVEL = 15
  37:   OS = Windows_NT
  38:   SystemRoot = C:\WINDOWS
  39:   windir = C:\WINDOWS
  40:   CATALINA_HOME = C:\Program Files\jakarta-tomcat-4.1.24
  41:   ALLUSERSPROFILE = C:\Documents and Settings\All Users.WINDOWS
  42:   USERNAME = Steve
  43:   Path = C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
  44:   PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
  45:   USERDOMAIN = DELL2
  46:   HOMEPATH = \Documents and Settings\Steve
  47:   PROMPT = $P$G
  48:   TEMP = C:\DOCUME~1\Steve\LOCALS~1\Temp
  49:   LIB = c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Lib\
  50:   SESSIONNAME = Console
  51: GetFolderPath: C:\WINDOWS\System32
  52: GetLogicalDrives: A:\, C:\, D:\, E:\
  53: 
  54: [14:28:13.031] Starting app / process: TestApp1/Simple Test Process
  55: [14:28:13.031] Starting activity: Start
  56: [14:28:13.031] Completed activity: Start
  57: [14:28:13.062] Starting activity in new thread: Script1
  58: [14:28:13.062] Completed activity: Script1
  59: [14:28:13.171] Starting activity in new thread: Script2
  60: [14:28:13.171] Completed activity: Script2
  61: [14:28:13.281] Starting activity: Stop
  62: [14:28:13.281] App / process completed: TestApp1/Simple Test Process
  63: [14:28:13.281] Starting app / process: TestApp1/Loop Test Process
  64: [14:28:13.281] Starting activity: Start
  65: [14:28:13.281] Completed activity: Start
  66: [14:28:13.281] Starting activity in new thread: Script1
  67: [14:28:13.281] Completed activity: Script1
  68: [14:28:13.390] Starting activity in new thread: Script2
  69: [14:28:13.390] Completed activity: Script2
  70: [14:28:13.500] Starting activity: Branch3
  71: [14:28:13.500] Completed activity: Branch3
  72: [14:28:13.500] Starting activity in new thread: Script4
  73: [14:28:13.500] Completed activity: Script4
  74: [14:28:13.609] Starting activity in new thread: Script2
  75: [14:28:13.609] Completed activity: Script2
  76: [14:28:13.718] Starting activity: Branch3
  77: [14:28:13.718] Completed activity: Branch3
  78: [14:28:13.718] Starting activity in new thread: Script4
  79: [14:28:13.718] Completed activity: Script4
  80: [14:28:13.828] Starting activity in new thread: Script2
  81: [14:28:13.828] Completed activity: Script2
  82: [14:28:13.828] Starting activity: Branch3
  83: [14:28:13.828] Completed activity: Branch3
  84: [14:28:13.828] Starting activity in new thread: Script4
  85: [14:28:13.828] Completed activity: Script4
  86: [14:28:13.937] Starting activity in new thread: Script2
  87: [14:28:13.937] Completed activity: Script2
  88: [14:28:14.046] Starting activity: Branch3
  89: [14:28:14.046] Completed activity: Branch3
  90: [14:28:14.046] Starting activity in new thread: Script5
  91: [14:28:14.046] Completed activity: Script5
  92: [14:28:14.156] Starting activity: Stop
  93: [14:28:14.156] App / process completed: TestApp1/Loop Test Process
  94: [14:28:14.156] Starting app / process: TestApp1/Test DOS Activity
  95: [14:28:14.156] Starting activity: Start
  96: [14:28:14.156] Completed activity: Start
  97: [14:28:14.156] Starting activity in new thread: DOS1
  98: [14:28:14.359] Completed activity: DOS1
  99: [14:28:14.375] Starting activity in new thread: Script2
 100: [14:28:14.375] Completed activity: Script2
 101: [14:28:14.484] Starting activity: Stop
 102: [14:28:14.484] App / process completed: TestApp1/Test DOS Activity
 103: [14:28:14.484] Starting app / process: TestApp1/Test CSharp Activity
 104: [14:28:14.484] Starting activity: Start
 105: [14:28:14.484] Completed activity: Start
 106: [14:28:15.562] Starting activity in new thread: CSharp1
 107: [14:28:15.562] Completed activity: CSharp1
 108: [14:28:15.671] Starting activity in new thread: Script2
 109: [14:28:15.671] Completed activity: Script2
 110: [14:28:15.781] Starting activity: Stop
 111: [14:28:15.781] App / process completed: TestApp1/Test CSharp Activity
 112: [14:28:15.781] Starting app / process: TestApp1/Test User Activity
 113: [14:28:15.781] Starting activity: Start
 114: [14:28:15.781] Completed activity: Start
 115: [14:28:15.781] Starting activity in new thread: Script1
 116: [14:28:15.781] Completed activity: Script1
 117: [14:28:15.890] Starting activity: User2
 118: [14:28:15.890] User2 starting to wait for c:/temp/0123-4567-89ab-cdef.response at Sunday, March 07, 2004 2:28:15 PM
 119: [14:28:16.437] User2 timed out waiting for file c:/temp/0123-4567-89ab-cdef.response as of Sunday, March 07, 2004 2:28:16 PM
 120: [14:28:16.437] Completed activity: User2
 121: [14:28:16.546] Starting activity in new thread: Script4
 122: [14:28:16.546] Completed activity: Script4
 123: [14:28:16.656] Starting activity: Stop
 124: [14:28:16.656] App / process completed: TestApp1/Test User Activity
 125: [14:28:16.656] Starting app / process: TestApp1/Test User Activity
 126: [14:28:16.656] Starting activity: Start
 127: [14:28:16.656] Completed activity: Start
 128: [14:28:16.656] Starting activity in new thread: Script1
 129: [14:28:16.656] Completed activity: Script1
 130: [14:28:16.765] Starting activity: User2
 131: [14:28:16.765] User2 starting to wait for c:/temp/0123-4567-89ab-cdef.response at Sunday, March 07, 2004 2:28:16 PM
 132: [14:28:16.875] File c:/temp/0123-4567-89ab-cdef.response exists as of Sunday, March 07, 2004 2:28:16 PM
 133: [14:28:16.875] Completed activity: User2
 134: [14:28:16.984] Starting activity in new thread: Script3
 135: [14:28:16.984] Completed activity: Script3
 136: [14:28:17.093] Starting activity: Stop
 137: [14:28:17.093] App / process completed: TestApp1/Test User Activity
 138: [14:28:17.093] Starting app / process: TestApp1/Amazon Web Service Process
 139: [14:28:17.093] Starting activity: Start
 140: [14:28:17.093] Completed activity: Start
 141: [14:28:17.093] Starting activity in new thread: Script1
 142: [14:28:17.093] Completed activity: Script1
 143: [14:28:17.203] Starting activity in new thread: WebSvc2
 144: ***Soap Request:
 145: <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 146:     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 147:     xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
 148:   <SOAP-ENV:Body>
 149:     <namesp1:AsinSearchRequest xmlns:namesp1="urn:PI/DevCentral/SoapService">
 150:       <AsinSearchRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="namesp1:AsinRequest">
 151:         <asin>044021145X</asin>
 152:         <tag>webservices-20</tag>
 153:         <type>lite</type>
 154:         <devtag>044021145X</devtag>
 155:       </AsinSearchRequest>
 156:     </namesp1:AsinSearchRequest>
 157:   </SOAP-ENV:Body>
 158: </SOAP-ENV:Envelope>
 159: [14:28:21.484] Completed activity: WebSvc2
 160: [14:28:21.578] Starting activity in new thread: Script3
 161: [14:28:27.718] Completed activity: Script3
 162: [14:28:27.812] Starting activity: Fail
 163: [14:28:27.812] App / process failed: TestApp1/Amazon Web Service Process
 164: [14:28:27.812] Starting app / process: TestApp1/Spell Check Service Process
 165: [14:28:27.812] Starting activity: Start
 166: [14:28:27.812] Completed activity: Start
 167: [14:28:27.812] Starting activity in new thread: Script1
 168: [14:28:27.812] Completed activity: Script1
 169: [14:28:27.921] Starting activity in new thread: WebSvc2
 170: ***Soap Request:
 171: <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 172:     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 173:     xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
 174:   <SOAP-ENV:Body>
 175:     <XmlTextToCheck>elephante</XmlTextToCheck>
 176:   </SOAP-ENV:Body>
 177: </SOAP-ENV:Envelope>
 178: [14:28:27.953] Completed activity: WebSvc2
 179: [14:28:28.031] Starting activity in new thread: Script3
 180: [14:28:28.031] Completed activity: Script3
 181: [14:28:28.140] Starting activity: Fail
 182: [14:28:28.140] App / process failed: TestApp1/Spell Check Service Process
 183: [14:28:28.140] Starting app / process: TestApp1/Planet ODBC Process
 184: [14:28:28.140] Starting activity: Start
 185: [14:28:28.140] Completed activity: Start
 186: [14:28:28.156] Starting activity in new thread: Odbc1
 187: [14:28:30.171] Completed activity: Odbc1
 188: [14:28:30.234] Starting activity in new thread: Script2
 189: [14:28:30.234] Completed activity: Script2
 190: [14:28:30.343] Starting activity: Stop
 191: [14:28:30.343] App / process completed: TestApp1/Planet ODBC Process
 192: [14:28:30.406] Starting app / process: MathApp1/Quadratic Process
 193: [14:28:30.406] Starting activity: Start
 194: [14:28:30.406] Completed activity: Start
 195: [14:28:30.406] Starting activity: Branch1
 196: [14:28:30.406] Completed activity: Branch1
 197: [14:28:30.421] Starting activity in new thread: Script2
 198: [14:28:30.421] Completed activity: Script2
 199: [14:28:30.531] Starting activity: Stop
 200: [14:28:30.531] App / process completed: MathApp1/Quadratic Process
 201: [14:28:30.531] Starting app / process: MathApp1/Quadratic Process
 202: [14:28:30.531] Starting activity: Start
 203: [14:28:30.531] Completed activity: Start
 204: [14:28:30.531] Starting activity: Branch1
 205: [14:28:30.531] Completed activity: Branch1
 206: [14:28:30.531] Starting activity in new thread: Script2
 207: [14:28:30.531] Completed activity: Script2
 208: [14:28:30.640] Starting activity: Stop
 209: [14:28:30.640] App / process completed: MathApp1/Quadratic Process
 210: [14:28:30.640] Starting app / process: MathApp1/Quadratic Process
 211: [14:28:30.640] Starting activity: Start
 212: [14:28:30.640] Completed activity: Start
 213: [14:28:30.640] Starting activity: Branch1
 214: [14:28:30.640] Completed activity: Branch1
 215: [14:28:30.640] Starting activity in new thread: Script2
 216: [14:28:30.640] Completed activity: Script2
 217: [14:28:30.750] Starting activity: Stop
 218: [14:28:30.750] App / process completed: MathApp1/Quadratic Process
 219: [14:28:30.750] Starting app / process: MathApp1/Cubic Process
 220: [14:28:30.750] Starting activity: Start
 221: [14:28:30.750] Completed activity: Start
 222: [14:28:30.750] Starting activity: Branch1
 223: [14:28:30.750] Completed activity: Branch1
 224: [14:28:30.750] Starting activity in new thread: Script2
 225: [14:28:30.750] Completed activity: Script2
 226: [14:28:30.859] Starting activity: Stop
 227: [14:28:30.859] App / process completed: MathApp1/Cubic Process
 228: [14:28:30.859] Starting app / process: MathApp1/Cubic Process
 229: [14:28:30.859] Starting activity: Start
 230: [14:28:30.859] Completed activity: Start
 231: [14:28:30.859] Starting activity: Branch1
 232: [14:28:30.859] Completed activity: Branch1
 233: [14:28:30.859] Starting activity in new thread: Script2
 234: [14:28:30.859] Completed activity: Script2
 235: [14:28:30.968] Starting activity: Stop
 236: [14:28:30.968] App / process completed: MathApp1/Cubic Process
 237: [14:28:30.968] Starting app / process: MathApp1/Cubic Process
 238: [14:28:30.968] Starting activity: Start
 239: [14:28:30.968] Completed activity: Start
 240: [14:28:30.968] Starting activity: Branch1
 241: [14:28:30.968] Completed activity: Branch1
 242: [14:28:30.968] Starting activity in new thread: Script2
 243: [14:28:30.968] Completed activity: Script2
 244: [14:28:31.078] Starting activity: Stop
 245: [14:28:31.078] App / process completed: MathApp1/Cubic Process
 246: [14:28:31.078] Starting app / process: MathApp1/Cubic Process
 247: [14:28:31.078] Starting activity: Start
 248: [14:28:31.078] Completed activity: Start
 249: [14:28:31.078] Starting activity: Branch1
 250: [14:28:31.078] Completed activity: Branch1
 251: [14:28:31.078] Starting activity in new thread: Script2
 252: [14:28:31.078] Completed activity: Script2
 253: [14:28:31.187] Starting activity: Stop
 254: [14:28:31.187] App / process completed: MathApp1/Cubic Process
 255: [14:28:31.187] Starting app / process: MathApp1/Quartic Process
 256: [14:28:31.187] Starting activity: Start
 257: [14:28:31.187] Completed activity: Start
 258: [14:28:31.187] Starting activity: Branch1
 259: [14:28:31.187] Completed activity: Branch1
 260: [14:28:31.187] Starting activity in new thread: Script2
 261: [14:28:31.187] Completed activity: Script2
 262: [14:28:31.296] Starting activity in new thread: Sub3
 263: [14:28:31.296] Starting app / process: MathApp1/Cubic Process
 264: [14:28:31.296] Starting activity: Start
 265: [14:28:31.296] Completed activity: Start
 266: [14:28:31.296] Starting activity: Branch1
 267: [14:28:31.296] Completed activity: Branch1
 268: [14:28:31.296] Starting activity in new thread: Script2
 269: [14:28:31.296] Completed activity: Script2
 270: [14:28:31.406] Starting activity: Stop
 271: [14:28:31.406] App / process completed: MathApp1/Cubic Process
 272: [14:28:31.406] Completed activity: Sub3
 273: [14:28:31.515] Starting activity in new thread: Script4
 274: [14:28:31.515] Completed activity: Script4
 275: [14:28:31.625] Starting activity: Stop
 276: [14:28:31.625] App / process completed: MathApp1/Quartic Process
 277: [14:28:31.625] Starting app / process: MathApp1/Quartic Process
 278: [14:28:31.625] Starting activity: Start
 279: [14:28:31.625] Completed activity: Start
 280: [14:28:31.625] Starting activity: Branch1
 281: [14:28:31.625] Completed activity: Branch1
 282: [14:28:31.625] Starting activity in new thread: Script2
 283: [14:28:31.625] Completed activity: Script2
 284: [14:28:31.734] Starting activity in new thread: Sub3
 285: [14:28:31.734] Starting app / process: MathApp1/Cubic Process
 286: [14:28:31.734] Starting activity: Start
 287: [14:28:31.734] Completed activity: Start
 288: [14:28:31.734] Starting activity: Branch1
 289: [14:28:31.734] Completed activity: Branch1
 290: [14:28:31.734] Starting activity in new thread: Script2
 291: [14:28:31.734] Completed activity: Script2
 292: [14:28:31.843] Starting activity: Stop
 293: [14:28:31.843] App / process completed: MathApp1/Cubic Process
 294: [14:28:31.843] Completed activity: Sub3
 295: [14:28:31.953] Starting activity in new thread: Script4
 296: [14:28:31.953] Completed activity: Script4
 297: [14:28:32.062] Starting activity: Stop
 298: [14:28:32.062] App / process completed: MathApp1/Quartic Process
 299: [14:28:32.062] Summary of function exceptions.
 300: [14:28:32.062]     $sqrt : 1
 301: 
Email: steve@oharasteve.com