基于上位機的主線程和通信子線程分工為主模塊負責根據操作人員的動作更改系統設定數據、發出控制要求;通信模塊負責確保用戶的設定數據和控制命令及時送給PLC,然后根據PLC送回的數據刷新主線程的數據和命令鍵。上位機軟件在Win95上用Delphi實現。主線程主線程對各個模塊進行統一管理,負責整個系統的初始化、參數配置信號、控制信號的傳遞,模擬控制界面的數據更新及統計報表、打印,數據庫的產生和維護等。由于要監控的對象太多,為了使畫面簡潔,在界面設計上采用狀態顯示和操作鍵合一的方法。即畫面上的控件一直實時顯示對應對象的實際狀態,同時操作人員可以通過鼠標點擊來發出改變其狀態的控制命令,并由PLC所上傳的數據進行畫面狀態的刷新。這樣的數據庫便于管理和統計。操作人員換班時,軟件自動生成對應表格,并進行相應的日、月、年的報表統計。用戶可以選擇報表打印。另外,數據庫表格根據操作人員上班簽到時輸入的日期命名,與工控機的系統時鐘無關。這樣,當系統時間被有意(如為避免CIH病毒而修改日期)或無意的改變時,不影響數據庫的統計和報表。
線程間通信為了保證線程之間的雙向通信,軟件中設計了3種通信方式:共享數據區雙方以互斥方式訪問該數據區。命令管理器用于主線程向子線程發送命令。由于通信子線程后臺運行,無法接收消息,所以設計了該命令管理器模擬Win95的消息處理機制。操作人員有控制動作時,主線程往命令管理器中添加命令,子線程則循環讀取其中的命令,解釋后發給PLC,并檢查發送的命令是否正常執行;PLC執行后結果正確,則清除該命令,否則繼續發送直到PLC送回結果為止。發消息用于子線程向主線程發送消息,如:存盤消息,串行口通信異常消息等。為保證線程之間的同步,通過臨界區對象保證兩線程互斥訪問共享數據和命令管理器。同一時間內,只允許一個線程對其進行操作。