回覆列表
  • 1 # 工控見解

    你好,這就是個協議的問題,廠家在為了方便在程式內部已經做了處理,所以就能拿來直接用,不用讓使用者這麼麻煩的去研究,通訊協議了。

  • 2 # 工控人

    用通訊時,為什麼plc向變頻器寫頻率時不用轉換成ACSII碼的

    ASCII碼為MODBUS通訊協議中的一種資料,另外還有一種就是RTU資料模式,plc透過MODBUS協議向變頻器傳送命令時需不需轉換成ASCII碼,那是肯定的。首先我們需要了解這些東西之間的關係。

    ASCII碼是一種資料格式,plc與變頻器之間的通訊就是靠這種資料進行傳輸的,所有的資料在傳送或者接受之間必須先轉換為ASCII碼的格式,比如現在有一個50.00Hz的資料寫入到變頻器的頻率中,plc肯定不能直接傳送,變頻器是識別不了的,必須先5000十進位制資料轉換為十六進位制的1388(HEX),然後按照資料高地位字元轉為為“31”、“33”、“38”、“38”形式的ASCII碼進行傳送。這樣的資料格式變頻器才能準確的識別出,同樣變頻器返回的資料也是扎樣的格式,我們還得反轉換為我們熟悉的十進位制。

    那plc在處理這些通訊格式的時候根據使用的指令來決定是否需要轉換,我們以三菱FX系列的plc來說,如果你使用的是RS/RS2(序列資料傳送指令)進行的是無協議通訊,則資料是選擇轉換為ASCII碼的,因為它是自由通訊指令,只負責資料的傳送和接受中間的轉換不參與的。我們首先透過ASCI(HEX)指令進行16進位制數和ASCII碼的轉換,然後才能用RS指令進行命令傳送的。

    如果你使用的是ADPRW:用於於和MODBUS主站所對應從站進行通訊(資料的讀出/寫入)的指令時,則不需要進行轉換,我們可以直接在指令中輸入十進位制數如5000。中間的轉換過程在指令中已經完成,不需要我們手動程式設計進行了。相比於RS指令方便的多了,而且還不需要計算校驗碼。

  • 3 # 工控程式設計

    通訊流程的回顧。

    我們可以回顧下,PLC與變頻器,或者是其他硬體之間,例如觸控式螢幕與PLC等,

    在進行RS232或RS485通訊前,第一步要做什麼?

    對的,設定兩者間的通訊引數。

    波特率,停止位,效驗位等等,必須保持一致。

    我們引數設定了,也僅僅是設定了,自己編寫程式時並不需要關心這些引數。

    這是設定給系統低層軟硬體用的。

    我們知道在低層硬體上,資料是按二進位制位(bit)傳送和接收。

    這些二進位制資料收發如何保持同步,如何實現,由系統根據設定的通訊引數實現。

    所以我們程式設計時並不需要理會。

    通訊程式的編寫。

    資料傳遞過程是以二進位制形式進行的,但資料的具體的表現格式是比較隨意的。

    比如一個通訊幀由哪幾個部分組成,校驗碼放在哪個部分,

    是以ASCII碼資料表示,還是16進位制資料表示,

    都可以任意人為的規定。

    比如profi_bus,mod_bus,ai_bus是廠家開發的協議,

    我們要透過這些協議實現硬體通訊,

    編寫程式時,就得按照協議規定來辦事。

    協議規定要用ACSII碼,我們也沒的選擇。

    比如永宏PLC規定要用ASCII來通訊。

    又比如宇電的AI_BUS規定要使用十六進位制格式來通訊。

    再比如我們透過觸控式螢幕的宏指令來實現與C++自由通訊時,

    通訊格式就可以由我們自個兒任意規定,

    兩端的資料按自己的約定來打包與解析就好。

    為什麼plc向變頻器寫頻率時不用轉換成ACSII碼的?

    有了以上的瞭解,就比較好理解這個問題了。

    需不需要轉換成ASCII碼,就得看變頻器硬體廠家的通訊協議規定了。

    只有按照變頻器的的規定向它傳送資料,人家才能夠知道如何解析指令。

    例如三菱變頻器DR-D700,使用MODBUS_RTU通訊規格。

    我們知道Modbus協議對於序列連線,

    有分Modbus RTU,Modbus ASCII兩種。

    Modbus RTU是一種緊湊的,採用二進位制表示資料的方式,

    Modbus ASCII是一種人類可讀的,冗長的表示方式。

    人家不使用ASCII形式,我們自然就不用再將資料轉換成ACSII碼了。

  • 中秋節和大豐收的關聯?
  • 女士哈倫褲怎樣選?