关于三菱PLC与变频器ASCII通讯的讲解
說明:
1、本文檔注釋說明了三菱 PLC 用 RS 進行ASCII 通訊的一個案例
2、本實例使用PLC為為三菱 Fx-3G系列,變頻器為三菱通用變頻器 FR-D700 系列
3、本實例內容原創,轉載注明出處后,可隨意分享使用
先展示一下代碼,然后分析代碼,依次詳細講解
RS指令解釋
RS D10 D50 D100 K20
D10 為發送數據的起始地址,D10后續的連續地址依次為 D11、D12........
D50 表示發送的數據個數,D50的值為12,因此一共發送12個字的數據,即發送 D10~D21中存儲的數據個數
D100 表示通訊接收變頻器的數據起始地址
K20 表示 接收數據的地址數位20個字,即接收數據存儲于 D100~D119 中
ASCI指令解釋
ASCI D141 D16 K4
將D141參數轉換成4個字的ASCII碼存入到 D16,D17,D18,D19 中
例如 D141 的值為 1234,則 D16~D19的值如下表所示
~
通訊發送了哪些數據?
PLC與變頻器的通訊就像人與人之間對話一樣,是一個信息交互的過程,就像發電報一樣,
報頭,即一條信息,一條報文的標題,意思告訴對方信息開始發送了,接下來是報文信息
報文,是要表達的實際數據內容
報尾,一般用來校驗發送的報文數據是否正確,用來告訴對方,我發送的數據已經完成了。
例如程序中 M140 = ON ,D141=1234時,PLC 發送了 D10~D21中存儲的數據,一共12個字
P0子程序中D20與D21的解釋
D50=12時候,則D51=9,即發送的數據個數去掉1個字的報文、再去掉2個字的報尾巴,剩下就是報文的字個數為9位
通過執行 for 指令循環 依次對 D11Z0 地址進行累加,值存儲于 D52中
Z0 是個變量,可以視為當前循環次數的指針,從1依次遞增到9,所以 D11Z0 最終指向D11-D19的數據地址
下面進行for循環的演示:
比如 D52初始值為 0
第1次循環開始,Z0=0,則 D11Z0 代表的地址值即 D11的值,D52 = D11,循環結束Z0自增1,Z0的值為2
第2次循環開始,Z0=1,則 D11Z0 表示D12中的值,D52 = D11+D12,Z0=3
。。。
第9次循環開始,Z0=8,則 D11Z0 表示 D19中的值,D52 = D11+D12+。。。+D19,Z0=9
由上可以看出,D52最終的值在for循環結束后即D11-D19的值之和,我們稱之為和校驗,
校驗用來告訴信息接收方進行報文的數據驗證信息,如果報文在通訊過程中受干擾或丟失,則校驗和便會出錯
循環結束后,Z0的值為9,此時 D11Z0 表示 D20 中的值
因此 ASCII D52 D11Z0 K2 此時可以理解為 ASCII D52 D20 K2,
這個for循環的累加過程 數學表示如下 :
(先寫到這,如過有疑問,歡迎留言,再解答)
總結
以上是生活随笔為你收集整理的关于三菱PLC与变频器ASCII通讯的讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让你的ubuntu串口程序可以直接读写串
- 下一篇: 路由交换-华为交换机查询MAC/ARP配