發布成功
項目任務是在一塊由STC12C5A控制的,帶有12個繼電器輸出和18個輸入的控制板上, 開發:
通過485通信的協議控制繼電器吸合和斷開的軟件(需求和協議已規劃和整理好)
通過485通信的協議可以修改12個繼電器輸出和18個輸入的對應關系,例如1對1或者1對1、2、18,2對2、17,這樣原本按1對應1輸出可以修改為1、2、18輸出
具體需求稍后上傳
開發目標
在發包方提供的基于STC12C5A16S2的繼電器板上開發軟件
發包方提供材料清單
STC12C5A16S2單片機資料
繼電器板
繼電器板的原理圖
大致功能要求
1. 通過485接口發送私有協議可以讀取輸入(開關量和觸點輸入)和輸出(繼電器)的狀態.
2. 輸入支持開關量和觸點輸入
3. 有輸入時可以根據對應關系在輸出端輸出
4. 通過485接口發送私有協議可以更改輸入對應輸出的對應關系
5. 要求全面引入STC的加密功能, 使燒入的程序不能被破解
6. 發包方可以發布某一個或一串STC ID適用的燒入目標程序或包含目標程序的EXE發布給客戶使用而不被破解. 而且這個可以讓發包方選擇這個EXE是否可以僅在首次運行的這一臺PC上運行還是可以在任意多臺PC機上運行.
實現方式
通過一張鏈表來實現, 這張表是一張二維表, 最上面橫向是輸入序列,最左邊縱向是輸出序列, 準備通過它們的對應關系來控制輸入和輸出的對應.
所有的輸入和輸出狀態,以及端口的配置數據全部存在這張表中.
輸入和輸出的對應關系需要條件和參數傳遞,應此通過這個表的IF(條件)和Select(參數)鏈接到另2個表中
表的具體內容請看目錄下文件:”鏈表.xlsx”
程序的模塊組成
計劃將該程序分為:
1. 輸入輸出狀態讀取和控制模塊
這個模塊負責處理通過485接口發送和接收的輸入輸出狀態讀取和控制相關的協議,以及根據協議讀取輸入和輸出狀態控制輸出的功能.
2. 輸入檢測模塊
這個模塊負責處理輸入, 它根據一個可以調整檢測周期的協議修改后的周期參數,來周期性的檢測輸入
具體實現:
1.定義一個InterfaceCheckTime變量,用于提供輸入處理模塊用于檢測外部接口的循環周期,InterfaceCheckTime變量的值來源于表的2JKLM
2.為每一個輸入定義二個變量,一個叫InxN一個叫InxP,其中X是輸入號,InxN用于存儲輸入的當前值,InxP用于存儲輸入之前一個監測周期監測的值,InxN和InxP的初始值來源于表的4JKLM,表的初始值始終為0和0,程序運行中InxN和InxP變量的值存在RAM中斷電丟失,而不是和表一樣放在EPROM中.
3.為每一個輸入定義一個變量:InxED,它只有兩個值0/1表示打開和關閉,其中X是輸入號。
DEL
6.為每一個輸入設置一個變量:InXsc,它只有兩個值0/1表示開關量輸入和觸點輸入,其中X是輸入號。
7.為每一個輸入設置一個變量:InXs,它只有兩個值0/1表示開關量輸入是低電平觸發還是高電平觸發。
8.為每一個輸入設置一個變量:InXc,它只有兩個值0/1表示觸點輸入是前沿觸發還是后沿觸發。
DEL
程序流程:
1.InputCheckTime變量定義的定時器到時了嗎?到了開始讀端口高低電平0/1,同時將InputCheckTime重置為2JKLM的值開始遞減;沒到時不執行繼續跳到外部讓其他程序執行.
2.進入讀取18個輸入端口的循環,首先看這個端口的InxED值是否為1(x是端口號),為1說明端口打開,那么就將該端口InXn的值賦予InXp,將這個周期讀取的輸入寄存器數據賦予InXn,而InxED值是否為0(x是端口號)的說明端口關閉了,不用讀取它的值
3.直到把全部18個輸入端口的值讀取完畢跳出循環
3. 輸入確認和對應輸出執行模塊
這個模塊根據輸入檢測模塊提供的數據判斷是否有輸入, 再根據輸入的條件判斷是否滿足, 然后執行select選擇的輸出,并根據參數執行相應的延遲和延遲關閉.
具體實現:
1.設置一個循環來處理所有18個輸入的處理
2.檢查每個輸入的InxN和InxP是否不同,不同說明于之前的狀態不同意味著該輸入端口有輸入
3.然后讀取InxST的值,看接口是被定義為開關還是觸點輸入類型
4.如果是開關量的,取出InxN的值,看它是1=高電頻還是0=低電頻,如果是1就執行J這一列的操作,如果是0就執行K這一列的操作
5.操作步驟:1.首先讀取IF里的條件要求,看看是否滿足條件(IF條件的處理方式請看IF表單),如果不滿足就不執行,如果滿足執行表格中對應的左邊的輸出項目,并攜帶Select參數執行,執行前判斷相應行的IF條件是否滿足.
4. 鏈表
見目錄
5. 鏈表配置協議
再議
1、我愛方案網是會員制服務,服務商通過競標后即可聯系雇主;
2、項目預算與報價不代表最終成交價格,成交價以雙方協商為準;
3、平臺提供設計項目對接服務,希望促成高效合作,對交易雙方不收取傭金,謝謝留意!