發布成功
項目任務是在一塊由STC12C5A控製的,帶有12個(ge) 繼電器輸出和18個(ge) 輸入的控製板上, 開發:
通過485通信的協議控製繼電器吸合和斷開的軟件(需求和協議已規劃和整理好)
通過485通信的協議可以修改12個(ge) 繼電器輸出和18個(ge) 輸入的對應關(guan) 係,例如1對1或者1對1、2、18,2對2、17,這樣原本按1對應1輸出可以修改為(wei) 1、2、18輸出
具體(ti) 需求稍後上傳(chuan)
開發目標
在發包方提供的基於(yu) STC12C5A16S2的繼電器板上開發軟件
發包方提供材料清單
STC12C5A16S2單片機資料
繼電器板
繼電器板的原理圖
大致功能要求
1. 通過485接口發送私有協議可以讀取輸入(開關(guan) 量和觸點輸入)和輸出(繼電器)的狀態.
2. 輸入支持開關(guan) 量和觸點輸入
3. 有輸入時可以根據對應關(guan) 係在輸出端輸出
4. 通過485接口發送私有協議可以更改輸入對應輸出的對應關(guan) 係
5. 要求全麵引入STC的加密功能, 使燒入的程序不能被破解
6. 發包方可以發布某一個(ge) 或一串STC ID適用的燒入目標程序或包含目標程序的EXE發布給客戶使用而不被破解. 而且這個(ge) 可以讓發包方選擇這個(ge) EXE是否可以僅(jin) 在首次運行的這一台PC上運行還是可以在任意多台PC機上運行.
實現方式
通過一張鏈表來實現, 這張表是一張二維表, 最上麵橫向是輸入序列,最左邊縱向是輸出序列, 準備通過它們(men) 的對應關(guan) 係來控製輸入和輸出的對應.
所有的輸入和輸出狀態,以及端口的配置數據全部存在這張表中.
輸入和輸出的對應關(guan) 係需要條件和參數傳(chuan) 遞,應此通過這個(ge) 表的IF(條件)和Select(參數)鏈接到另2個(ge) 表中
表的具體(ti) 內(nei) 容請看目錄下文件:”鏈表.xlsx”
程序的模塊組成
計劃將該程序分為(wei) :
1. 輸入輸出狀態讀取和控製模塊
這個(ge) 模塊負責處理通過485接口發送和接收的輸入輸出狀態讀取和控製相關(guan) 的協議,以及根據協議讀取輸入和輸出狀態控製輸出的功能.
2. 輸入檢測模塊
這個(ge) 模塊負責處理輸入, 它根據一個(ge) 可以調整檢測周期的協議修改後的周期參數,來周期性的檢測輸入
具體(ti) 實現:
1.定義(yi) 一個(ge) InterfaceCheckTime變量,用於(yu) 提供輸入處理模塊用於(yu) 檢測外部接口的循環周期,InterfaceCheckTime變量的值來源於(yu) 表的2JKLM
2.為(wei) 每一個(ge) 輸入定義(yi) 二個(ge) 變量,一個(ge) 叫InxN一個(ge) 叫InxP,其中X是輸入號,InxN用於(yu) 存儲(chu) 輸入的當前值,InxP用於(yu) 存儲(chu) 輸入之前一個(ge) 監測周期監測的值,InxN和InxP的初始值來源於(yu) 表的4JKLM,表的初始值始終為(wei) 0和0,程序運行中InxN和InxP變量的值存在RAM中斷電丟(diu) 失,而不是和表一樣放在EPROM中.
3.為(wei) 每一個(ge) 輸入定義(yi) 一個(ge) 變量:InxED,它隻有兩(liang) 個(ge) 值0/1表示打開和關(guan) 閉,其中X是輸入號。
DEL
6.為(wei) 每一個(ge) 輸入設置一個(ge) 變量:InXsc,它隻有兩(liang) 個(ge) 值0/1表示開關(guan) 量輸入和觸點輸入,其中X是輸入號。
7.為(wei) 每一個(ge) 輸入設置一個(ge) 變量:InXs,它隻有兩(liang) 個(ge) 值0/1表示開關(guan) 量輸入是低電平觸發還是高電平觸發。
8.為(wei) 每一個(ge) 輸入設置一個(ge) 變量:InXc,它隻有兩(liang) 個(ge) 值0/1表示觸點輸入是前沿觸發還是後沿觸發。
DEL
程序流程:
1.InputCheckTime變量定義(yi) 的定時器到時了嗎?到了開始讀端口高低電平0/1,同時將InputCheckTime重置為(wei) 2JKLM的值開始遞減;沒到時不執行繼續跳到外部讓其他程序執行.
2.進入讀取18個(ge) 輸入端口的循環,首先看這個(ge) 端口的InxED值是否為(wei) 1(x是端口號),為(wei) 1說明端口打開,那麽(me) 就將該端口InXn的值賦予InXp,將這個(ge) 周期讀取的輸入寄存器數據賦予InXn,而InxED值是否為(wei) 0(x是端口號)的說明端口關(guan) 閉了,不用讀取它的值
3.直到把全部18個(ge) 輸入端口的值讀取完畢跳出循環
3. 輸入確認和對應輸出執行模塊
這個(ge) 模塊根據輸入檢測模塊提供的數據判斷是否有輸入, 再根據輸入的條件判斷是否滿足, 然後執行select選擇的輸出,並根據參數執行相應的延遲和延遲關(guan) 閉.
具體(ti) 實現:
1.設置一個(ge) 循環來處理所有18個(ge) 輸入的處理
2.檢查每個(ge) 輸入的InxN和InxP是否不同,不同說明於(yu) 之前的狀態不同意味著該輸入端口有輸入
3.然後讀取InxST的值,看接口是被定義(yi) 為(wei) 開關(guan) 還是觸點輸入類型
4.如果是開關(guan) 量的,取出InxN的值,看它是1=高電頻還是0=低電頻,如果是1就執行J這一列的操作,如果是0就執行K這一列的操作
5.操作步驟:1.首先讀取IF裏的條件要求,看看是否滿足條件(IF條件的處理方式請看IF表單),如果不滿足就不執行,如果滿足執行表格中對應的左邊的輸出項目,並攜帶Select參數執行,執行前判斷相應行的IF條件是否滿足.
4. 鏈表
見目錄
5. 鏈表配置協議
再議
1、必威官方网站手机網是會(hui) 員製服務,服務商通過競標後即可聯係雇主;
2、項目預算與(yu) 報價(jia) 不代表最終成交價(jia) 格,成交價(jia) 以雙方協商為(wei) 準;
3、平台提供設計項目對接服務,希望促成高效合作,對交易雙方不收取傭(yong) 金,謝謝留意!
chenxiuji 被 無線電物理上行鏈路結構方案選中,獲得一張青銅競標卡
慧創空間 被 我需要PCB設計(音頻轉換板)選中,獲得一張白銀競標卡
1740733998QmpX 被 php 開發選中,獲得一張青銅競標卡
yunwlw 被 無線通信物理層混合參數配置方案選中,獲得一張青銅競標卡
dongjian 被 高速列車數字資源管理方案選中,獲得一張青銅競標卡
1726130026qTMm 被 在windows環境中編譯linux程序選中,獲得一張青銅競標卡
znhd2016 被 一款以測試蓄電池負載電壓判斷電池好壞的蓄電池測試儀(yi) 選中,獲得一張白銀競標卡
bjw520 被 無人機電機驅動電路選中,獲得一張青銅競標卡
bjw520 被 按鍵開關(guan) 電路設計選中,獲得一張青銅競標卡