(3) FA-M3の電源を投入する。
F- BASIC Ver. 6.3による例
通信条件
伝送速度: 9600bps
パリティ: なし
データ長: 8ビット ストップビット: 1ビット
プロトコル: パソコンリンク(チェックサムなし)
STX$=CHR$(2)
'定義ETX$=CHR$(3)
'定義CR$=CHR$(13)
'定義LF$=chr$(10)
'定義RCVCHR$=""
'受信文字列初期化STOPFLAG=0
'終了フラグ初期化'
SEND$=STX$+"01010WRDD0001,02"+ETX$
'送信文字列作成'
BAUD 0,9600
'通信ボーレート設定open "COM0:(F8N1N7)" as #1
'通信ポートをオープンする'
interval 5
'タイムアウトタイマ設定on com(0) gosub *RECEIVECHR
'受信時の割込み処理指定on interval gosub *TIMEOUT
'タイムアウト時の割込み処理指定'
print #1,SEND$
'送信com(0) on
'受信時割込み許可interval on
'タイマ起動'
while STOPFLAG=0
'受信終了orタイムアウト待ちwaiti wend '
com(0) off
'受信時割込み許可close #1
'ポートをクローズする'
print ">"+SEND$
'送信文字列を画面に表示print "<"+RCVCHR$
'受信文字列を画面に表示end
'
'
=== サブルーチン ===*RECEIVECHR
'受信時割込み処理interval off
'タイマ起動RCVCHR$=RCVCHR$+input$(lof(#1),#1)
'受信バッファから文字列を取出すEND$=mid$(RCVCHR$,len(RCVCHR$),1)
select case END$
case LF$
'エコーバック対応RCVCHR$=""
'受信文字列初期化case CR$
'受信終了フラグSTOPFLAG=1
'受信終了フラグをたてるcase else end select
interval on
'タイマ起動return '
*TIMEOUT
'タイムアウト処理STOPFLAG=1
'タイムアウトフラグをたてるRCVCHR$="Time out ! (5 sec)"+CR$
'画面表示用文字列「Time out ! (5 sec)」return
IM 77C01E01-10
5. Modbus/RTU, ASCII通信プロトコルの解説
5.1 概要
Modbus通信を使用することで,パソコンやPLC(シーケンサ)などと通信を行うことができま す。この通信では,PR300の内部レジスタであるDレジスタへの読出し/書込みを行います。
これ以降の文章では,パソコンなどの上位機器を総称して「上位機器」と表現します。
RS-485通信 最大通信距離 1200m 最大子局接続台数 31台 上位機器
図5.1 Modbus通信接続の概略図
参照
Dレジスタについては,7章を参照してください。
PR300のModbus通信では,伝送モードにASCIIモードとRTUモード(バイナリ方式)を用意し ています。
表5.1ASCIIモードとRTUモード
項目 ASCIIモード RTUモード
データのビット数 7 bit(ASCII) 8 bit(バイナリ)
:(コロン) なし
メッセージの終了マーク メッセージの開始マーク
CR+LF (*2) なし メッセージの長さ (*1)
誤り検出
2N+1 N
データの時間間隔 1秒以下 フレーム間 3.5キャラクタ
水平冗長検査:LRC 周期冗長検査:CRC-16
*1: RTUモードのメッセージの長さを「N」とした場合,ASCIIモードでは2N+1となります。
*2: LFが次の信号を受けることができるようになったことを表す同期キャラクタです。RTUモードではキャラクタ間の 時間間隔で同期がなされます。次のキャラクタを受信するまでに3.5キャラクタの時間があった場合,次に受け取る メッセージは新しいフレームであると認識されます。
Modbus通信では,ステーション番号:01〜99で各PR300を判断します。
注 意
・ PR300には,2ワード単位のデータ(Dレジスタ)があります。
2ワードデータを読出し/書込みする場合は,同時に行ってください。
・ Dレジスタへの書込みデータが有効範囲外の場合,レスポンスは正常として返ります。
IM 77C01E01-10
5.1.1 メッセージ構成
上位機器からPR300に送信するメッセージは,下図のように構成されています。
要素 ステーション番号
(ST-NO)
ファンクション コード
RTUモードのバイト数 なし
ASCIIモードのバイト数 2 2
(1) (2) (3) (4) (5) (6)
メッセージ開始 マーク
データ エラーチェック メッセージ終了 マーク なし
1 2 2 4n
(可変長)
1 1 2n
(可変長) 2
(1) メッセージ開始マーク
メッセージの始まりを示します。ASCIIモードのみ「:(コロン)」が必要です。
(2) ステーション番号(01〜99)
上位機器が通信先のPR300を識別するための番号です(PR300個々の識別番号:メッセー ジ中では,16進表記)。
00:ブロードキャスティングモード(「5.1.5 ブロードキャスト指定」を参照)
(3) ファンクションコード(「5.2 メッセージ・レスポンス」を参照)
上位機器からの命令(ファンクションコード)を指定します。
(4) データ
ファンクションコードに応じてDレジスタ番号やDレジスタの個数,パラメータ値などを指定 します(メッセージ中では,16進表記)。
(5) エラーチェック
RTUモードの場合 周期冗長検査(CRC-16)方式で行います。
ASCIIモードの場合 水平冗長検査(LRC)方式で行います。
(6) メッセージ終了マーク
メッセージの終了を示します。ASCIIモードのみ「CR+LF」が必要です。
5.1.2 Dレジスタの指定
市販のSCADA等を使用する場合のDレジスタ指定とお客様作成の通信プログラムでのメッセージ のDレジスタ指定は,それぞれDレジスタ番号と異なり,注意が必要です。
お客様作成の通信プログラムの場合は,リファレンス番号から40001を引いた16進数で指定しま す。