PLC, ASCII碼和計算機的關係,自由口通訊實例講解

前段時間,我寫了一篇S7-200smart通過RS485端口使用自由口通訊方式向計算機發送數據的實例。

實例過程;將需要的數據轉換成ASCII碼的方式併發給計算機。

寫完之後很多人私信我,問我關於ASCII碼的問題,今天我根據那個應用實例來講解一下ASCII碼;也希望朋友們可以多給我留言,有什麼問題或者對於我文章的想法都可以告訴我。

首先我們看一下ASCII碼;ASCII 碼使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字符。標準ASCII 碼也叫基礎ASCII碼,使用7 位二進制數(剩下的1位二進制為0)來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字符

也就是說ASCII碼是根據計算機的工作原理應運而生的一種語言。標準碼錶如下圖;

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

這個表是什麼意思?

其實很簡單,大家可以把它理解成一種協議,就是雙方都規定好了;我發16#31就是1的意思,你收到16#31也是代表1而不是49。大家可以看到上面的碼錶,通過這個碼錶我們可以看到這種方式可以發送的內容很多。所以這種方式適用性較強,可應對各種情況。

那麼在PLC和電腦進行通訊時不用ASCII碼可以嗎?當然可以,比如說可以使用MODIBUS,或者你和軟件工程師商定自己寫一個協議都可以。

我們再看一下S7-200smart的轉換指令是如何工作的!

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

以這個指令舉例,我們將雙字VD600的數值以FMT=16#C9的方式轉換成ASCII碼,該碼存在以VB805為起始地址的區域裡。

RTA是將實數值IN轉換成ASCII碼。格式參數FMT會將指定小數點右側的轉換精度,小數點顯示為逗號還是句號以及輸出緩存區大小。得出結果會存入以OUT開頭的輸出緩存區。

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

FMT=16#C9的意思是輸出緩存區大小為12個字節,小數點顯示為逗號,保留一位小數點。比如說VD600=12134.64,轉換後,

VB805=16#20(空格);VB806=16#20(空格);VB807=16#20(空格);

VB808=16#20(空格);VB809=16#20(空格);VB810=16#31(對應1);

VB811=16#32(對應2);VB812=16#31(對應1);VB813=16#33(對應3);

VB814=16#34(對應4);VB815=16#2C(對應逗號);VB816=16#36(對應6)

這回看懂了吧!

PLC, ASCII碼和計算機的關係,自由口通訊實例講解

工程測試圖

其他的指令的運行方式和RTA類似,大家舉一反三吧!

計算機接收到信號後,按照ASCII碼反編譯!就可以得到相關的數據,但需要注意的是;數據要有開始或者結束標誌(比如我程序裡的0D0A),而且兩個數據之間需要做分割,比如我程序中的16#3A是冒號的意思,就是分隔符。否則計算機端的軟件工程師會找你拼命的!想要看我以前程序的請找我以前的文章吧!

好吧,且行且珍惜!看懂的朋友點個贊吧!


分享到:


相關文章: