專(zhuān)利名稱(chēng):一種plc梯形圖代碼硬解題方法
ー種PLC梯形圖代碼硬解題方法本發(fā)明涉及可編程邏輯控制器,尤其涉及ー種PLC梯形圖代碼硬解題方法。
隨著國(guó)內(nèi)自動(dòng)化企業(yè)數(shù)量規(guī)模不斷擴(kuò)大,PLC的需求量也日益突顯,梯形圖解題為PLC的核心功能,高效、快速、準(zhǔn)確、穩(wěn)定的解題功能是判定PLC性能的重要標(biāo)準(zhǔn)。梯形圖解題分為ニ種方式,ー種是使用程序?qū)崿F(xiàn),稱(chēng)為軟件解題;另ー種為使用專(zhuān)用的芯片來(lái)進(jìn)行,稱(chēng)為硬件解題。本專(zhuān)利為使用硬件芯片來(lái)實(shí)現(xiàn)梯形圖的解題。它較軟解題方式有著運(yùn)行速度快,性能穩(wěn)定等特點(diǎn)。目前市場(chǎng)大部分PLC解題方式采用的是使用通用處理器(主控CPU)來(lái)實(shí)現(xiàn)梯形圖解題功能,通用處理器處理解題速度慢,正確率低,穩(wěn)定性差,不能滿(mǎn)足PLC在運(yùn)動(dòng)控制、脈沖輸出、高速計(jì)數(shù)等性能的需要。本發(fā)明要解決的技術(shù)問(wèn)題是提供ー種解析速度快,性能穩(wěn)定的PLC梯形圖代碼硬解題方法,以改善PLC在運(yùn)動(dòng)控制、脈沖輸出、高速計(jì)數(shù)等方面的性能。為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案是,ー種PLC梯形圖代碼硬解題方法,PLC采用主控CPU和解題專(zhuān)用CPU雙核架構(gòu)模式,PLC系統(tǒng)運(yùn)算處理由主控CPU完成,梯形圖代碼解題由解題專(zhuān)用CPU成I)主控CPU運(yùn)行處理非梯形圖代碼內(nèi)容,主控CPU在運(yùn)行過(guò)程中發(fā)現(xiàn)是梯形圖代碼,即將控制權(quán)移交給解題專(zhuān)用CPU進(jìn)行梯形圖代碼解題;2)解題專(zhuān)用CPU在進(jìn)行梯形圖代碼解析過(guò)程中遇到功能塊指令吋,解題專(zhuān)用CPU將控制權(quán)移交給主控CPU調(diào)用功能塊函數(shù)進(jìn)行處理;3)兩個(gè)CPU相互切換完成梯形圖代碼的解題過(guò)程。以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU解題專(zhuān)用CPU定義的寄存器組包括垂直短路指示寄存器、功能塊向量寄存器、前導(dǎo)列狀態(tài)寄存器、梯形圖程序指針寄存器、高亮和模式控制寄存器、解題運(yùn)行命令寄存器、功能塊輸出寄存器和解題配置寄存器。以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU所述的垂直短路指示寄存器為列格式寄存器,用來(lái)保存梯形圖解析過(guò)程中,當(dāng)前列哪一行有元件以及元件之間的關(guān)系;所述的功能塊向量寄存器用于當(dāng)解題遇到功能塊指令時(shí),將功能塊號(hào)與功能塊的前導(dǎo)列輸入狀態(tài)以及特殊向量位存在此寄存器,解題專(zhuān)用CPU將控制權(quán)交給主控CPU后,主控CPU通過(guò)讀這個(gè)寄存器去調(diào)用對(duì)應(yīng)的功能塊函數(shù)。以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU所述的前導(dǎo)列狀態(tài)寄存器用于記錄解析過(guò)程中,當(dāng)前列和前ー個(gè)列的輸出狀態(tài)。將前ー個(gè)列的輸出狀態(tài)作為當(dāng)前列的輸入狀態(tài),井根據(jù)當(dāng)前列元件的開(kāi)關(guān),計(jì)算當(dāng)前列的輸出;所述的高亮和模式控制寄存器用于支持上位機(jī)編程軟件的實(shí)時(shí)監(jiān)視和調(diào)試功能,將運(yùn)行中的中間狀態(tài)通過(guò)此寄存器在高亮碼狀態(tài)下傳給主控CPU。以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU所述的解題運(yùn)行命令寄存器寫(xiě)任意數(shù)據(jù)均可啟動(dòng)一次解題專(zhuān)用CPU工作,至解題專(zhuān)用CPU遇到功能塊、高亮碼、結(jié)束碼跳出運(yùn)行,將控制權(quán)交還給主控CPU。
以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU所述的功能塊輸出寄存器用于當(dāng)功能塊運(yùn)行完畢后,輸出功能塊節(jié)點(diǎn)導(dǎo)通狀態(tài);所述的解題配置寄存器用來(lái)配置解題專(zhuān)用CPU的運(yùn)行模式、速度、程序空間和IO空間。以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU主控CPU將控制權(quán)移交給解題專(zhuān)用CPU的過(guò)程包括I)主控CPU向解題專(zhuān)用CPU控制器發(fā)出命令;2)解題專(zhuān)用CPU置高互斥請(qǐng)求線(xiàn);3)主控CPU在檢測(cè)到該請(qǐng)求后,在一下個(gè)時(shí)鐘周期鎖住系統(tǒng)總線(xiàn),然后置高互斥應(yīng)答線(xiàn),同時(shí)斷開(kāi)本身片選總線(xiàn)與外部的聯(lián)系;4)解題專(zhuān)用CPU在接到應(yīng)答線(xiàn)后,置高占用線(xiàn),同時(shí)將外部總線(xiàn)接管,并在下ー個(gè)時(shí)鐘周期開(kāi)始運(yùn)算解題。以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU解題專(zhuān)用CPU將控制權(quán)移交給主控CPU的過(guò)程包括I)解題專(zhuān)用CPU當(dāng)發(fā)現(xiàn)有外部中斷,或者遇到需要調(diào)用主控CPU運(yùn)算,或者程序運(yùn)算完畢需要將控制權(quán)交回給主控CPU時(shí),解題專(zhuān)用CPU斷開(kāi)總線(xiàn)的主控制,同時(shí)將占用線(xiàn)和請(qǐng)求線(xiàn)同時(shí)釋放;2)主控CPU檢測(cè)到占用線(xiàn)和請(qǐng)求線(xiàn)釋放后,將應(yīng)答線(xiàn)釋放,同時(shí)接管外部總線(xiàn),并在下一個(gè)時(shí)鐘周期釋放系統(tǒng)總線(xiàn),開(kāi)始程序的接著運(yùn)行;3)如果是解題專(zhuān)用CPU調(diào)用主控CPU或者是程序運(yùn)算完畢,主控CPU將接續(xù)原來(lái)的程序掛起點(diǎn)運(yùn)行;如果是中斷,則在下一個(gè)時(shí)鐘周期釋放系統(tǒng)總線(xiàn),進(jìn)入中斷程序運(yùn)行,并在中斷返回后,再將控制權(quán)將給解題專(zhuān)用CPU。以上所述的PLC梯形圖代碼硬解題方法,解題專(zhuān)用CPU當(dāng)主控CPU將控制權(quán)交給解題專(zhuān)用CPU之前先關(guān)DCache,在重獲控制權(quán)后再將DCache打開(kāi)。本發(fā)明PLC梯形圖代碼硬解題方法使用解題專(zhuān)用的CPU進(jìn)行梯形圖代碼的解析,具有速度快,性能穩(wěn)定等特點(diǎn),在運(yùn)動(dòng)控制、脈沖輸出、高速計(jì)數(shù)等性能方面尤為突出。下面結(jié)合附圖
和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)ー步詳細(xì)的說(shuō)明。圖I是本發(fā)明PLC梯形圖代碼硬解題方法的流程圖。本發(fā)明在PLC領(lǐng)域梯形圖代碼解題技術(shù)方面主要解決梯形圖代碼轉(zhuǎn)化為PLC的邏輯控制指令采用硬件芯片進(jìn)行實(shí)現(xiàn)。使用主控CPU與解題專(zhuān)用CPU雙核架構(gòu)模式,PLC 一般系統(tǒng)運(yùn)算處理由主控CPU (通用處理器)完成,梯形圖代碼解題由解題專(zhuān)用CPU (硬解題專(zhuān)用處理器)完成。解題專(zhuān)用CPU與主控CPU的控制權(quán)相互切換功能的實(shí)現(xiàn)不影響PLC的正常運(yùn)行,并且處理的結(jié)果正確。解題專(zhuān)用CPU進(jìn)行PLC解題實(shí)現(xiàn)采用VHDL (全名Very-High-Speed IntegratedCircuit Hardware Description Language,硬件描述語(yǔ)言)進(jìn)行實(shí)現(xiàn)。PLC廠商都擁有ー套屬于自己的梯形圖代碼指令集。本發(fā)明實(shí)施例使用申請(qǐng)人的PLC指令集。通過(guò)硬件芯片實(shí)現(xiàn)用戶(hù)所編 寫(xiě)的梯形圖代碼轉(zhuǎn)化為PLC能夠識(shí)別的控制命令完成過(guò)程控制功能。在申請(qǐng)人的PLC指令集中,定義了梯形圖所有元件的指令含義,上位機(jī)編寫(xiě)的梯形圖下載到PLC中均是以申請(qǐng)人PLC指令集HLS指令的方式存儲(chǔ)在內(nèi)存中。當(dāng)PLC運(yùn)行時(shí)啟動(dòng)梯形圖代碼的指令解析功能,最終將解析的結(jié)果通過(guò)通信傳遞給上位機(jī)或其他設(shè)備或PLC自身的數(shù)字量或模擬量輸入輸出點(diǎn)執(zhí)行相應(yīng)的動(dòng)作。需要定義硬解題處理器寄存器組包括Formatting_reg垂直短路指示寄存器列格式寄存器主要用來(lái)保存梯形圖解析過(guò)程中,當(dāng)前列哪一行有元件以及元件之間的關(guān)系。Function_vector_reg功能塊向量寄存器當(dāng)解題遇到功能塊指令時(shí),將功能塊號(hào)與功能塊的前導(dǎo)列輸入狀態(tài)以及特殊向量位存在此寄存器,并將控制權(quán)交給主控CPU。主控CPU通過(guò)讀這個(gè)寄存器去調(diào)用對(duì)應(yīng)的功能塊函數(shù)。Column_reg前導(dǎo)列狀態(tài)寄存器主要用來(lái)記錄解析過(guò)程中,當(dāng)前列和前一個(gè)列的輸出狀態(tài)。將前一個(gè)列的輸出狀態(tài)作為當(dāng)前列的輸入狀態(tài),井根據(jù)當(dāng)前列元件的開(kāi)關(guān),計(jì)算當(dāng)前列的輸出。PC_reg梯形圖程序指針寄存器程序指針,用戶(hù)程序在解題前對(duì)其進(jìn)行初始化。H_light_mode_reg高亮和模式控制寄存器高亮模式寄存器用于支持上位機(jī)編程軟件的實(shí)時(shí)監(jiān)視和調(diào)試功能,將運(yùn)行中的中間狀態(tài)通過(guò)此寄存器在高亮碼狀態(tài)下傳給主控 CPU。LadderPU_r_comd_port解題運(yùn)行命令寄存器寫(xiě)任意數(shù)據(jù)均可啟動(dòng)一次解題專(zhuān)用CPU工作,至解題專(zhuān)用CPU遇到功能塊、高亮碼、結(jié)束碼跳出運(yùn)行,將控制權(quán)交還給主控CPU。Block_out_control_reg功能塊輸出寄存器當(dāng)功能塊運(yùn)行完畢后,需要將功能塊的位輸出結(jié)果。Config_reg解題配置寄存器用來(lái)配置解題專(zhuān)用CPU的運(yùn)行模式、速度、程序空間、IO空間,常使用的設(shè)置為0x58B。梯形圖代碼解題方式如下首先,在PLC內(nèi)部主控CPU運(yùn)行處理非梯形圖代碼內(nèi)容,如函數(shù)調(diào)用、變量、參數(shù)壓入堆棧、讀寫(xiě)FLASH、SRAM,操作I/O ロ等。主控CPU在運(yùn)行過(guò)程中發(fā)現(xiàn)如果是梯形圖代碼,則暫停當(dāng)前工作,將控制權(quán)移交給解題專(zhuān)用CPU進(jìn)行梯形圖代碼解題。解題專(zhuān)用CPU在進(jìn)行梯形圖代碼解析吋,將ー些解題過(guò)程中得到的數(shù)據(jù)填入到上述幾個(gè)對(duì)應(yīng)的寄存器中。它在解析過(guò)程中如果遇到功能塊指令,解題專(zhuān)用CPU會(huì)將暫停當(dāng)前工作把控制權(quán)交給主控CPU調(diào)用功能塊函數(shù)。
兩個(gè)處理的功能相互切換完成梯形圖代碼的解題,從而完成硬解題的全過(guò)程,實(shí)現(xiàn)過(guò)程控制。
使用解題專(zhuān)用CPU進(jìn)行梯形圖代碼的解析,具有速度快,性能穩(wěn)定等特點(diǎn)。在運(yùn)動(dòng)控制、脈沖輸出、高速計(jì)數(shù)等性能方面尤為突出。主控CPU使用的Leon 2是ー款32位,符合IEEE-1754 (SPARC V8)結(jié)構(gòu)的處理器IP核。解題專(zhuān)用CPU使用自行開(kāi)發(fā)的LadderPU處理器。整個(gè)工作原理機(jī)制如下Leon2 一> LadderPULeon2初始化完畢后,先掃描IO ;向LadderPU發(fā)出命令;LadderPU置高互斥請(qǐng)求線(xiàn);Leon2在檢測(cè)到該請(qǐng)求后,在一下個(gè)時(shí)鐘周期鎖住系統(tǒng)總線(xiàn),然后置高互斥應(yīng)答線(xiàn),同時(shí)將本身的AMBAAHB總線(xiàn)斷開(kāi)與外部的聯(lián)系;LadderPU在接到應(yīng)答線(xiàn)后,置高占用線(xiàn),同時(shí)將外部總線(xiàn)接管,并在下一個(gè)時(shí)鐘周期開(kāi)始運(yùn)算解題。LadderPU —> Leon2LadderPU當(dāng)發(fā)現(xiàn)有外部中斷,或者遇到需要調(diào)用Leon2運(yùn)算,或者程序運(yùn)算完畢需要將控制權(quán)交回給Leon2吋。LadderPU斷開(kāi)總線(xiàn)的主控制,同時(shí)將占用線(xiàn)和請(qǐng)求線(xiàn)同時(shí)釋放。Leon2檢測(cè)到占用線(xiàn)和請(qǐng)求線(xiàn)釋放后,將應(yīng)答線(xiàn)釋放,同時(shí)接管外部總線(xiàn),并在下一個(gè)時(shí)鐘周期釋放系統(tǒng)總線(xiàn)開(kāi)始程序的接著運(yùn)行。如果是LadderPU調(diào)用Leon2或者是程序運(yùn)算完畢,Leon2將接續(xù)原來(lái)的程序掛起點(diǎn)運(yùn)行;如果是中斷,則在下一個(gè)時(shí)鐘周期釋放HOLD線(xiàn),進(jìn)入中斷程序運(yùn)行,并在中斷返回后,由C程序控制再將控制權(quán)將給LadderPU。Cache數(shù)據(jù)唯一性和一致性的問(wèn)題的解決因?yàn)橛脩?hù)程序中的數(shù)據(jù)區(qū)是Leon2與LadderPU雙方共用的,所以存在ー種可能,當(dāng)這一塊區(qū)間被DCache命中后,這時(shí)控制轉(zhuǎn)交給了 LadderPU,而LadderPU修改了這一部分?jǐn)?shù)據(jù),并未讓Leon2中的DCache知道,所以當(dāng)控制權(quán)再轉(zhuǎn)交給Leon2時(shí),Leon2會(huì)仍然使用DCcache中的舊數(shù)據(jù),這就造成了數(shù)據(jù)的一致性和唯一性被破壞了。為了解決Dcache造成的數(shù)據(jù)不一致問(wèn)題,Leon2將控制權(quán)交給LadderPU處理器之前先關(guān)DCache,在重獲控制權(quán)后再將DCache打開(kāi),這樣原來(lái)DCache中的數(shù)據(jù)將是無(wú)效的。
權(quán)利要求
1.一種PLC梯形圖代碼硬解題方法,其特征在于,PLC采用主控CPU和解題專(zhuān)用CPU雙核架構(gòu)模式,PLC系統(tǒng)運(yùn)算處理由主控CPU完成,梯形圖代碼解題由解題專(zhuān)用CPU成 101)主控CPU運(yùn)行處理非梯形圖代碼內(nèi)容,主控CPU在運(yùn)行過(guò)程中發(fā)現(xiàn)是梯形圖代碼,即將控制權(quán)移交給解題專(zhuān)用CPU進(jìn)行梯形圖代碼解題; 102)解題專(zhuān)用CPU在進(jìn)行梯形圖代碼解析過(guò)程中遇到功能塊指令時(shí),解題專(zhuān)用CPU將控制權(quán)移交給主控CPU調(diào)用功能塊函數(shù)進(jìn)行處理; 103)兩個(gè)CPU相互切換完成梯形圖代碼的解題過(guò)程。
2.根據(jù)權(quán)利要求I所述的PLC梯形圖代碼硬解題方法,其特征在于,解題專(zhuān)用CPU定義的寄存器組包括垂直短路指示寄存器、功能塊向量寄存器、前導(dǎo)列狀態(tài)寄存器、梯形圖程序指針寄存器、高亮和模式控制寄存器、解題運(yùn)行命令寄存器、功能塊輸出寄存器和解題配置寄存器。
3.根據(jù)權(quán)利要求2所述的PLC梯形圖代碼硬解題方法,其特征在于,所述的垂直短路指示寄存器為列格式寄存器,用來(lái)保存梯形圖解析過(guò)程中,當(dāng)前列哪一行有元件以及元件之間的關(guān)系;所述的功能塊向量寄存器用于當(dāng)解題遇到功能塊指令時(shí),將功能塊號(hào)與功能塊的前導(dǎo)列輸入狀態(tài)以及特殊向量位存在此寄存器,解題專(zhuān)用CPU將控制權(quán)交給主控CPU后,主控CPU通過(guò)讀這個(gè)寄存器去調(diào)用對(duì)應(yīng)的功能塊函數(shù)。
4.根據(jù)權(quán)利要求2所述的PLC梯形圖代碼硬解題方法,其特征在于,所述的前導(dǎo)列狀態(tài)寄存器用于記錄解析過(guò)程中,當(dāng)前列和前一個(gè)列的輸出狀態(tài),將前一個(gè)列的輸出狀態(tài)作為當(dāng)前列的輸入狀態(tài),并根據(jù)當(dāng)前列元件的開(kāi)關(guān),計(jì)算當(dāng)前列的輸出;所述的高亮和模式控制寄存器用于支持上位機(jī)編程軟件的實(shí)時(shí)監(jiān)視和調(diào)試功能,將運(yùn)行中的中間狀態(tài)通過(guò)此寄存器在高亮碼狀態(tài)下傳給主控CPU。
5.根據(jù)權(quán)利要求2所述的PLC梯形圖代碼硬解題方法,其特征在于,所述的解題運(yùn)行命令寄存器寫(xiě)任意數(shù)據(jù)均可啟動(dòng)一次解題專(zhuān)用CPU工作,至解題專(zhuān)用CPU遇到功能塊、高亮碼、結(jié)束碼跳出運(yùn)行,將控制權(quán)交還給主控CPU。
6.根據(jù)權(quán)利要求2所述的PLC梯形圖代碼硬解題方法,其特征在于,所述的功能塊輸出寄存器用于當(dāng)功能塊運(yùn)行完畢后,輸出功能塊的節(jié)點(diǎn)導(dǎo)通狀態(tài);所述的解題配置寄存器用來(lái)配置解題專(zhuān)用CPU的運(yùn)行模式、速度、程序空間和IO空間。
7.根據(jù)權(quán)利要求I所述的PLC梯形圖代碼硬解題方法,其特征在于,主控CPU將控制權(quán)移交給解題專(zhuān)用CPU的過(guò)程包括 701)主控CPU向解題專(zhuān)用CPU控制器發(fā)出命令; 702)解題專(zhuān)用CPU置高互斥請(qǐng)求線(xiàn); 703)主控CPU在檢測(cè)到該請(qǐng)求后,在一下個(gè)時(shí)鐘周期鎖住系統(tǒng)總線(xiàn),然后置高互斥應(yīng)答線(xiàn),同時(shí)斷開(kāi)本身片選總線(xiàn)與外部的聯(lián)系; 704)解題專(zhuān)用CPU在接到應(yīng)答線(xiàn)后,置高占用線(xiàn),同時(shí)將外部總線(xiàn)接管,并在下一個(gè)時(shí)鐘周期開(kāi)始運(yùn)算解題。
8.根據(jù)權(quán)利要求I所述的PLC梯形圖代碼硬解題方法,其特征在于,解題專(zhuān)用CPU將控制權(quán)移交給主控CPU的過(guò)程包括 解題專(zhuān)用CPU當(dāng)發(fā)現(xiàn)有外部中斷,或者遇到需要調(diào)用主控CPU運(yùn)算,或者程序運(yùn)算完畢需要將控制權(quán)交回給主控CPU時(shí),解題專(zhuān)用CPU斷開(kāi)總線(xiàn)的主控制,同時(shí)將占用線(xiàn)和請(qǐng)求線(xiàn)同時(shí)釋放; 801)主控CPU檢測(cè)到占用線(xiàn)和請(qǐng)求線(xiàn)釋放后,將應(yīng)答線(xiàn)釋放,同時(shí)接管外部總線(xiàn),并在下一個(gè)時(shí)鐘周期釋放系統(tǒng)總線(xiàn),開(kāi)始程序的接著運(yùn)行; 802)如果是解題專(zhuān)用CPU調(diào)用主控CPU或者是程序運(yùn)算完畢,主控CPU將接續(xù)原來(lái)的程序掛起點(diǎn)運(yùn)行;如果是中斷,則在下一個(gè)時(shí)鐘周期釋放系統(tǒng)總線(xiàn),進(jìn)入中斷程序運(yùn)行,并在中斷返回后,再將控制權(quán)將給解題專(zhuān)用CPU。
9.根據(jù)權(quán)利要求I所述的PLC梯形圖代碼硬解題方法,其特征在于,當(dāng)主控CPU將控制權(quán)交給解題專(zhuān)用CPU之前先關(guān)DCache,在重獲控制權(quán)后再將DCache打開(kāi)。
全文摘要
本發(fā)明公開(kāi)了一種PLC梯形圖代碼硬解題方法, PLC采用主控CPU和解題專(zhuān)用CPU雙核架構(gòu)模式,PLC系統(tǒng)運(yùn)算處理由主控CPU完成,梯形圖代碼解題由解題專(zhuān)用CPU完成1)主控CPU運(yùn)行處理非梯形圖代碼內(nèi)容,主控CPU在運(yùn)行過(guò)程中發(fā)現(xiàn)是梯形圖代碼,即將控制權(quán)移交給解題專(zhuān)用CPU進(jìn)行梯形圖代碼解題;2)解題專(zhuān)用CPU在進(jìn)行梯形圖代碼解析過(guò)程中遇到功能塊指令時(shí),解題專(zhuān)用CPU將控制權(quán)移交給主控CPU調(diào)用功能塊函數(shù)進(jìn)行處理;3)兩個(gè)CPU相互切換完成梯形圖代碼的解題過(guò)程。本發(fā)明使用解題專(zhuān)用的CPU進(jìn)行梯形圖代碼的解析,具有速度快,性能穩(wěn)定等特點(diǎn),在運(yùn)動(dòng)控制、脈沖輸出、高速計(jì)數(shù)等性能方面尤為突出。
文檔編號(hào)G05B19/05GK102650861SQ20121013616
公開(kāi)日2012年8月29日 申請(qǐng)日期2012年5月4日 優(yōu)先權(quán)日2012年5月4日
發(fā)明者王晟磊 申請(qǐng)人:深圳市矩形科技有限公司