cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級別: VIP會員
|
雖不支持格雷碼轉換,但是搞清格雷碼的轉換原理就可以了。 下面是富士SPH系列的格雷碼轉換程序。 自然二進制碼與格雷碼互換在富士SX系列PLC中的實現方法: 1. 自然二進制碼轉換為格雷碼: 根據自然二進制碼轉換為格雷碼的轉換規則,實際上就是將轉換數右移一位后與轉換數做異或操作。程序流程圖如下: 保存輸入數 TEMP 將TEMP右移一位,保存SHILETEMP 將移位后的數據與原數據作異或 返回異或后的數據 功能塊中的程序如下: INPUT 輸入變量類型為DWORD TEMP 局部變量類型為DWORD SHILETEMP 局部變量類型為DWORD BIN_TO_GRAY 功能塊返回變量返回類型為DWORD BIN_TO_GRAY: TEMP:=INPUT; SHILETEMP:=SHR_DWORD(TEMP,UNIT#1); BIN_TO_GRAY:=SHILETEMP XOR INPUT; 2. 格雷碼轉換為自然二進制碼 根據格雷碼轉換為自然二進制碼的轉換規則,實際上就是不斷的將格雷碼與二進制數做異或操作,也就是說,不斷的和本身的不同位數做異或操作,如原數據為32位的A,那么先將A向右移動一位,與本身進行異或,然后保留值為B,那么繼續將A向右移動一位,與B進行異或,保留為C,依次類推,直到A=1為止。程序流程圖如下: 保存輸入數 TEMP,INPUT1 如果輸入數為0,那么直接返回數據0后退出 如果TEMP不等于1,那么循環,否則返回數據 TEMP右移1位,與輸入值作不斷異或 功能塊中的程序如下: INPUT 輸入變量類型為DWORD TEMP 局部變量類型為DWORD INPUT1 局部變量類型為DWORD GRAY_TO_BIN 功能塊返回變量返回類型為DWORD GRAY_TO_BIN: TEMP:=INPUT; INPUT1:=INPUT; IF TEMP=DWORD#0 THEN INPUT1:=DWORD#0; GRAY_TO_BIN:=INPUT1; RETURN; END_IF; WHILE TEMP<>DWORD#1 DO TEMP:=SHR_DWORD(TEMP,UINT#1); INPUT1:=TEMP XOR INPUT1; END_WHILE; GRAY_TO_BIN:=INPUT1; 上述代碼在富士的SX系列PLC中試驗沒有問題,由于富士的SX系列PLC完全支持ST代碼方式的編程,因此基本上可以不做修改的應用在西門子的S7系列的PLC中。 由于三菱的PLC中已經包含了自然二進制碼轉換為格雷碼指令GRY以及格雷碼轉換為自然二進制碼指令GBIN,因此上述代碼應用于三菱系列的PLC已經沒有意義,請使用三菱PLC本身附帶的指令,因為西門子以及富士的SX系列PLC并沒有附帶轉換指令,因此本人書寫了上述代碼用于補充SX系列的指令不足。 |
---|---|
|