GX Works2 SLMP(MCプロトコル)設定
from https://qiita.com/satosisotas/items/38f64c872d161b612071
三菱電機のPLC MELSEC-Qシリーズで、ホストPCと、Ethernet接続にてSLMPで簡単な通信をするためのPLC側の設定方法についてのメモです。GX Works2を使用しました。
PLCの準備
PLCのCPUユニットは、初期設定の状態で、ホストPCに直接接続されているものとします。
GX Works2による設定
PLCの設定は専用のツールから行います。今回はGX Works2 (version 1.567R)を使用しました。
USB接続
まずUSBで接続して、EthernetのIPアドレスを設定する必要があります。
GX Works2を起動したら、メニューから「オンライン」 → 「PC読出し」を選択します。
下記のダイアログが出ます。
Qシリーズなので「QCPU(Qモード)」を選択しました。
デフォルトのままでシリアル通信になっていると思いますが、次のように設定します。
- パソコン側I/F →
シリアルUSB
- シーケンサ側I/F →
CPUユニット
- 他局指定 →
他局指定なし
「通信テスト」をクリックして正常に接続できているか確認します。
問題なければ「~との接続に成功しました」というダイアログが出ます。
「OK」をクリックします。
オンラインデータ操作というダイアログが出ますが、これは何もせず閉じます。
プロジェクト設定
左のプロジェクトツリーから、「パラメータ」→「PCパラメータ」をダブルクリックします。
開いたダイアログ画面で、「内蔵Ethernetポート設定」タブを選択します。
PLCのIPアドレスを設定します。
また、次の設定をチェックします。
- バイナリコード交信: 今回はバイナリモードで交信します
- RUN中書込を許可する: PLCレジスタへ書き込みをする場合はチェックが必要です
以下の設定を追加します。
プロトコル | オープン方式 | 自局ポート番号 |
---|---|---|
UDP | MCプロトコル | 1025 |
TCP | MCプロトコル | 1026 |
- オープン方式はSLMPがないのでMCプロトコルを選択します。SLMPの拡張機能を使わなければほぼ同じです。
- ポート番号は何でもよいです。(設定範囲:1025~4999,5010~65534)
終わったら「設定終了」をクリックして、Qパラメータ設定を閉じます。
PLCへの設定書き込み
「対象」の項目で「パラメータ」をチェックします。
「実行」をクリックすると、PLCに設定が書き込まれます。
この後、PLCを再起動(電源OFF→ON)してください。
プロジェクトを保存しておきます。
Ethernet接続の確認
LANケーブルを接続します。
USBケーブルも接続したままにしておきます。
念のため、GX Works2を再起動します。
先ほどのプロジェクトを開きます。
メニューから「診断」→「Ethernet診断」を選択します。
このような画面が表示されて、先ほど設定したIPアドレスが表示されていたらPLCのEthernet設定は成功です。
SLMP通信が可能になりました。
Ethernet接続
USB接続をせず、Ethernet接続だけでGX Works2からPLCのCPUユニットを制御できるようにします。
※この操作は、SLMP通信の設定とは関係ありません
USBケーブルを抜き、LANケーブルだけが接続された状態にします。
GX Works2を再起動し、メニューから「オンライン」 → 「PC読出し」を選択します。
次のように設定します。
- パソコン側I/F →
Ethernetボード
- シーケンサ側I/F →
CPUユニット
- 他局指定 →
他局指定なし
次に、CPUユニット
のアイコンをダブルクリックします。
表示されたダイアログで、「ハブ経由接続」を選択し、PLCのIPアドレスを設定して「OK」をクリックします。
「通信テスト」をクリックして正常に接続できているか確認します。
問題なければ「~との接続に成功しました」というダイアログが出ます。
「OK」をクリックします。
「パラメータ」をチェックし、「実行」をクリックすると、先ほど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 先放
暫存器代碼
D暫存器代碼 = A8,
1000轉16進制 = 03E8,注意:Low Byte 先放
送碼中的暫存器位址+暫存器代碼 = E80300A8
3E 指令表
例如寫Word資料:
指令 = 0401,注意:Low Byte 先放
子指令 = 0000,注意:Low Byte 先放
送碼中的指令+子指令 = 01040000
留言
張貼留言