GX Works2 SLMP(MCプロトコル)設定

 from https://qiita.com/satosisotas/items/38f64c872d161b612071



GX Works2でSLMP通信を試すための内蔵Ethernet設定

三菱電機のPLC MELSEC-Qシリーズで、ホストPCと、Ethernet接続にてSLMPで簡単な通信をするためのPLC側の設定方法についてのメモです。GX Works2を使用しました。

PLCの準備

PLCのCPUユニットは、初期設定の状態で、ホストPCに直接接続されているものとします。
image.png

GX Works2による設定

PLCの設定は専用のツールから行います。今回はGX Works2 (version 1.567R)を使用しました。

USB接続

まずUSBで接続して、EthernetのIPアドレスを設定する必要があります。
GX Works2を起動したら、メニューから「オンライン」 → 「PC読出し」を選択します。
image.png

下記のダイアログが出ます。
Qシリーズなので「QCPU(Qモード)」を選択しました。
image.png

下記の画面が出ます。
image.png

デフォルトのままでシリアル通信になっていると思いますが、次のように設定します。

  • パソコン側I/F → シリアルUSB
  • シーケンサ側I/F → CPUユニット
  • 他局指定 → 他局指定なし

「通信テスト」をクリックして正常に接続できているか確認します。
問題なければ「~との接続に成功しました」というダイアログが出ます。

「OK」をクリックします。
オンラインデータ操作というダイアログが出ますが、これは何もせず閉じます。

下記のように左側にプロジェクトツリーが表示されます。
image.png

プロジェクト設定

左のプロジェクトツリーから、「パラメータ」→「PCパラメータ」をダブルクリックします。
image.png

開いたダイアログ画面で、「内蔵Ethernetポート設定」タブを選択します。
image.png

PLCのIPアドレスを設定します。
また、次の設定をチェックします。

  • バイナリコード交信: 今回はバイナリモードで交信します
  • RUN中書込を許可する: PLCレジスタへ書き込みをする場合はチェックが必要です

次に、同じダイアログで「オープン設定」をクリックします。
image.png

以下の設定を追加します。

プロトコルオープン方式自局ポート番号
UDPMCプロトコル1025
TCPMCプロトコル1026
  • オープン方式はSLMPがないのでMCプロトコルを選択します。SLMPの拡張機能を使わなければほぼ同じです。
  • ポート番号は何でもよいです。(設定範囲:1025~4999,5010~65534)

終わったら「設定終了」をクリックして、Qパラメータ設定を閉じます。

PLCへの設定書き込み

メニューから「オンライン」→「PC書込」を選択します。
image.png

「対象」の項目で「パラメータ」をチェックします。
「実行」をクリックすると、PLCに設定が書き込まれます。

この後、PLCを再起動(電源OFF→ON)してください。
プロジェクトを保存しておきます。

Ethernet接続の確認

LANケーブルを接続します。
USBケーブルも接続したままにしておきます。

念のため、GX Works2を再起動します。
先ほどのプロジェクトを開きます。

メニューから「診断」→「Ethernet診断」を選択します。
image.png

このような画面が表示されて、先ほど設定したIPアドレスが表示されていたらPLCのEthernet設定は成功です。
SLMP通信が可能になりました。

Ethernet接続

USB接続をせず、Ethernet接続だけでGX Works2からPLCのCPUユニットを制御できるようにします。
※この操作は、SLMP通信の設定とは関係ありません
image.png

USBケーブルを抜き、LANケーブルだけが接続された状態にします。
GX Works2を再起動し、メニューから「オンライン」 → 「PC読出し」を選択します。
image.png

次のように設定します。

  • パソコン側I/F → Ethernetボード
  • シーケンサ側I/F → CPUユニット
  • 他局指定 → 他局指定なし

次に、CPUユニットのアイコンをダブルクリックします。
表示されたダイアログで、「ハブ経由接続」を選択し、PLCのIPアドレスを設定して「OK」をクリックします。
image.png

「通信テスト」をクリックして正常に接続できているか確認します。
問題なければ「~との接続に成功しました」というダイアログが出ます。
「OK」をクリックします。

オンラインデータ操作というダイアログが出ます。
image.png

「パラメータ」をチェックし、「実行」をクリックすると、先ほどPLCに書き込んだパラメータをプロジェクトに読み出します。
プロジェクトを保存して設定は完了です。



from https://kilean.pixnet.net/blog/post/304348793-%E4%B8%89%E8%8F%B1-mc-protocol

設定PLC的通訊

請開GX Work2 建立新程式

 

選擇PLC 系列 與 Type

 

連線設定

 

各種連線方式都可以,先要連的上PLC


 

在專案中選擇PLC 參數

 

設定IP,通訊資料碼維持在二進制 ,下面介紹會以二進制格式講解

 

按 Open Setting,設定MC Protocol 通訊協定


 

將參數寫入到PLC

 

寫完之後要斷電重開

 

通訊測試(二進制 3E frame format)

PC端我用C# 寫Socket程式

 

我直接從結果介紹起,如果讀者傳送這個指令都沒有回碼了,就不用繼續往下測了。

送碼 (讀兩筆資料)

500000FFFF03000C00010001040000000000A80200

回碼 (正常回應兩筆資料)

D00000FFFF03000600000000000000

指令結構(二進制格式)

5000 00 FF FF03 00 0C00 0100 0104 0000 000000 A8 0200

標頭(Header),E71模組會自動添加,因此這邊送碼不用加 +

副標頭(Subheader) +

網路編號(Network No.) +

PC編號(PC No.) +

請求目標模組I/O編號(Request destination module I/O No.) +

請求目標模組站號(Request destination module station No.) +

請求資料長度(Request data length) +

監視計時器(Monitoring timer) + 

指令(Command) +

子指令(Subcommand) +

暫存器位址(Device number) +

暫存器代碼(Device code) +

暫存器數(Number of device points) 

 

D000 00 FF FF03 00 0600 0000 0000 0000

標頭(Header),E71模組會自動添加,因此這邊送碼不用加 +

副標頭(Subheader) +

網路編號(Network No.) +


PC編號(PC No.) +

請求目標模組I/O編號(Request destination module I/O No.) +

請求目標模組站號(Request destination module station No.) +

請求資料長度(Request data length) +

錯誤碼(Error code) + 

資料1(Data1) +

資料2(Data2)

 

詳細解說格式

 

請求主要由6個區塊組成

Header + Subheader + Access route + Request data length + Monitoring timer + Request data

 

標頭區塊,0 Byte (Header)

E71模組會自動添加,因此這邊送碼不用加

 

子標頭區塊,2 Byte (Subheader)

3E frame 固定送碼 5000,固定回碼D000

 

存取路徑區塊,5 Byte (Access route)

網路編號 + PC編號 + 請求目的模組I/O編號 + 請求目的模組站號

(Network No. + PC No. + Request destination module I/O No. + Request destination module station No.)


一對一訪問時,網路編號指定00、PC編號指定FF

沒使用請求目的模組時,請求目的模組I/O編號固定FF03,請求目的模組站號固定00

 

請求資料長度區塊,2 Byte (Request data length)

後面兩個區塊(Monitoring timer + Request data)的Byte數,注意:Low Byte 先放

 

監視計時器區塊,2 Byte

單位為250 ms,注意:Low Byte 先放

 

請求資料區塊,(讀取指令10 Byte,寫入指令10+2N Byte)

讀取Word資料指令(2 + 2 + 3 + 1 + 2  Byte): 指令+子指令+暫存器位址+暫存器代碼+暫存器數

寫入Word資料指令(2 + 2 + 3 + 1 + 2 + 2 * N Byte): 指令+子指令+暫存器位址+暫存器代碼+暫存器數+資料

注意:2 Byte 及 3Byte 的資料 Low Byte 先放

 

暫存器代碼

例 D1000 暫存器:

D暫存器代碼 = A8,

1000轉16進制 = 03E8,注意:Low Byte 先放

送碼中的暫存器位址+暫存器代碼 = E80300A8

 

3E 指令表

例如寫Word資料:

指令 = 0401,注意:Low Byte 先放

子指令 = 0000,注意:Low Byte 先放

送碼中的指令+子指令 = 01040000

  參考資料

留言

熱門文章