這篇文章要探討的是如何把資料寫入資料記憶體(DM通道)


能寫入的是資料記憶體前半段(DM0000~DM1023依機種有不同範圍)是可讀寫的部份,大部分機種後半段(DM6144~DM6655)是只能讀取的系統設定資料,要改變後半段的資料只能用編輯軟體CX-Programmer或書寫器去修改,少數的系統設定資料是可用到專用指令去更改(如第4篇提到的更改PLC動作模式)。資料記憶體的最後面是和通訊設定有關,不要隨意更改

 


資料記憶體讀取命令WD,說明如下圖:

20080927-07  

 

控制命令的字串組成:起始碼+機號+指令+開始通道編號+第1通道資料+...+第n通道資料+偵誤碼+結束碼


※通道編號同樣是BCD碼的10進制數值字串,通道的可使用範圍要查各PLC的手冊,超出範圍的輸入無效


※每一通道的資料由4個數值字串組成,編排順序是由高位元往低位元排,不可弄錯順序。依在PLC內的不同用途,資料分為BCD碼的10進制數值字串,還有16進制數值字串。要如何處理來源資料成為PLC能接受的格式?是這篇文章要探討的重點


PLC回應的字串組成:起始碼+機號+指令+結束字串+偵誤碼+結束碼


其中結束字串若為00則表示控制成功

 


程式的控制面板和前幾篇大同小異就不再PO圖說明

 


現在直接說明程式架構(如下圖):一樣是3格的流程控制結構,通訊參數和關閉通訊埠照慣例寫到格子外

20080927-01  

 

 

 

第1格分成兩個部份:

20080927-02  

 

右半邊同樣是把所有命令字串合成再寫入PLC內

 

左半邊是這篇文章的重點,因為實際上多數狀況不可能要使用者自己換算數值資料成16進制字串,所以這類情況一定是由使用者輸入10進制數值,再由程式自動轉換。依用途寫入的資料有以下幾種處理方式:

 


第1種:系統資料用的16進制字串和直接輸入的BCD碼字串,這類資料原本就是字串,需要做的就是將來源資料分開,再按照通道順序組成單一字串即可

 


第2種:輸入的是數值,寫入PLC內的是16位元的16進制數值

20080927-03  

 

要做的是把每個通道資料分開,一一轉換成4個字組成的16進制字串,再按照通道順序組成單一字串

 

 

第3種:輸入的是數值,寫入PLC內的是16位元的BCD碼10進制數值

20080927-04  

 

要做的是把每個通道資料分開,將資料依序除以(1000、100、10、1等比遞減級數),餘數再投入移位暫存器做下一次運算,商數則轉換為文字,依位元高低順序重組成4個字的字串,最後再按照通道順序組成單一字串

 

 

第4種:輸入的是數值,寫入PLC內的是32位元的16進制數值(佔2個通道)

20080927-05  

 

要做的是把每個通道資料分開,一一轉換成8個字組成的16進制字串,8個字的前半(高位元)和後半(低位元)再對調,最後再按照通道順序組成單一字串

 

 

第5種:輸入的是數值,寫入PLC內的是32位元的BCD碼10進制數值

20080927-06  

 

要做的是把每個通道資料分開,將資料依序除以(10000000、...、10、1等比遞減級數),餘數再投入移位暫存器做下一次運算,商數則轉換為文字,依位元高低順序重組成8個字的字串,8個字的前半(高位元)和後半(低位元)再對調,最後再按照通道順序組成單一字串

 

 

第2格延遲時間要長一點

 

 

第3格純粹只是讀取PLC回應的字串,用來判定是否控制成功

20080915-05  

 

 

 

以上程式還可以應用到以下2個指令:


1.WJ寫入補助記憶接點AR通道,可使用第1或第2種方法處理


2.WC寫入計時和計數器現在值,寫入的資料全是16位元BCD碼,要用第3種方法處理

, ,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 悄悄話

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼

【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消