本次將重點介紹用戶程序的編寫方法,并通過大家的動手實踐掌握好該項技能。
為了對SLPC可編程調節器有一正確而較全面的理解,從而科學地掌握其操作及程序的編制,我們首先介紹其工作節拍與程序運行原理。
1、SLPC*E的工作節拍
SLPC*E是按100 ms或200ms的定周期節拍工作的,圖1是其常用的200ms工作時序圖。從圖1可以看出,在控制周期內,控制器依靠內部的定時器,每隔10ms向CPU發出一次中斷申請,啟動相應程序順序執行。CPU累計定時器中斷申請次數,每20次,即200ms完成一個控制循環。
在每個控制周期的開始,首先判斷是否編程工作狀態。若是,則轉入編程處理程序;若不是,則進入自檢狀態——檢查RAM、ROM、D/A、A/D工作是否正常。如果這些檢查都正常,則讀入狀態寄存器的數據,以判明控制器處于自動、手動還是串級工作狀態。并對輸出回路的連接狀態及RAM備用電源的電壓進行檢查。
在定周期節拍的最初10ms內完成上述自檢工作后,在第二、第三兩個10ms定時中斷的作用下,由輸入程序自動對各路模擬量輸入進行兩次A/D轉換,取其平均值存入RAM的輸入寄存器Xn中。
在A/D轉換結束后,CPU就從用戶ROM中取出用戶程序,按編制好的程序順序執行,直到最后一句END為止。
在執行完用戶程序的各項操作之后,調用輸出處理程序進行輸出處理,依次用10ms的時間對PV、SV、Y1、Y2、Y3進行D/A轉換,向外輸出模擬信號。
在完成上述程序后,系統轉入等待狀態,直到200ms的固定控制周期結束,再進入下一個新的控制周期。SLPC*E單回路控制器就是按照這樣的工作節拍反復循環著。
從圖1中還可看到一項D/A刷新操作,這是為了保持輸出值穩定而采取的軟件措施。從前面的系統原理圖可以得知,控制器的模擬量輸出采用輸出電容進行保持,為了盡量減小電容的放電電流,CPU每隔20ms對輸出電容進行0.1ms的短暫充電,以補充放電損失的電荷量,對輸出保持的質量大大提高。
為了保障定周期工作節拍的正常進行,系統中還設有專門的監視器WTD(軟件狗),實時地監視控制周期的時間進程。如果CPU因故障等原因經過200ms不能完成工作循環,就發出報警信號,并采取以下應急處理措施:保持輸出狀態不變,控制方式自動切換到手動方式,指示表及操作電流輸出切換到后備電路,以避免事故的發生或進一步擴大。
2、用戶程序運算原理
SLPC*E的用戶程序采用面向對象的程序設計語言編制,結構類似于一般的計算機高級語言。只要根據控制流程圖的各項功能,選用相應的功能模塊指令進行順序排列,即可組成一個用戶程序。這種利用功能模塊組成控制系統的方法,在數字控制儀表中稱為“組態”。
下面以一個2輸入變量相加的運算為例,說明用戶程序的運算原理。假設運算前各運算寄存器內的數據分別為A、B、C、D、E。
表1? 輸入加法運算
第一步:LD? X1????? 輸入寄存器X1內的數據
在用戶程序執行前,SLPC的輸入處理程序已將各路模擬量輸入信號,經A/D轉換后存入寄存器X1~X5中。執行程序LD? X1后,X1中的數據就進入運算寄存器S1中,根據堆棧原理,其它各運算寄存器內的數據順序下移,原S5中的數據被丟失。
第二步:LD? X2????? 輸入寄存器X2內的數據
執行LD? X2后,X2中的數據進入運算寄存器S1,其余各寄存器內的數據再次下移,原S5中的數據D被丟失。
第三步:+???? 加法運算,對X1、X2求和。
將S2中的數據加上S1中的數據,和數(X2 +X1)存入S1中。其它各寄存器中的數據上移一格,但S5中的數據不變。
第四步:ST? Y1????? 將S1中的數據送到輸出寄存器Y1中,運算寄存器中的數據不變。送入Y1中的數據由輸出處理程序轉換成模擬電信號。
第五步:END??? 程序結束。
至此,一個控制周期的運算結束,等到下一個控制周期再重新開始執行用戶程序。
從這個實例可以看出:
(1)運算過程的三個基本動作
① 取數存入運算寄存器??? LD指令
② 數據運算????????????? 運算指令
③ 輸出結果????????????? ST指令
(2)S寄存器的作用
用戶程序的執行都是通過運算寄存器進行的,輸入輸出指令只對S1操作,其它指令則圍攏著S1~S5進行。因此,在設計用戶程序時必須熟悉指令執行時各種數據在運算寄存器中的正確位置。
評論
查看更多