プロトコルの概要
1.1 MODBUS合意内容の一致GB/Z 19582.1/2/3-2004(IEC60870-5)標準的な& nbsp;;;
1.2この協定は工場に適用される。LWQZガスインテリジェントタービントラフィック計、 LLQZインテリジェントなルーツメーター、 LUXZインテリジェント旋回渦トラフィック
カウント、 EVC体積補正器などの製品。
1.3主な特徴
デバイスのプロパティ:トラフィック計はMODBUS通信バス上のスレーブです
通信モード: RTU
通信メディア:RS 485
アドレス: 1- 24 7
ボーレート:1200 、2400 、48 0 0、96 00、19200 bps
データサイズ:8 bit
チェック·ビット:チェックなし(2ストップビット)、偶数チェック(1ストップビット)、奇数チェック(1ストップビット)
1.4 特殊性は
本プロトコルはトラフィック計用に開発され、マルチバイトのバイナリ、 ASCII文字列、 BCDコードなどのタイプ変数のデータ通信をサポートします。通信はMODBUSの03H 、07H機能コードを使用し、ユーザー定義の66H機能コードを追加します。
サポートされたMODBUS関数コードの特徴
機能コード、データフレームフォーマットは次のとおりです。
2.1 関数コードの特徴03読み取り開始アドレスはstart_addrスタートアップ。Nデータの単語。テーブルを参照。1。
親局は、addr,03 start_addr_hi start_addr_low N_hi N_low CRCを送信します。
スレーブ応答addr 03 num data 0. data num-1 CRC
例外応答addr 83H error_code CRC
テーブル1。
| レジスター·アドレス | 変数名 | レジスタ数N | タイプの種類 | ユニットユニット |
| 0000H | 作業負荷の累積 | 4 | BIN | |
| 0004H | 基準状態の累積 | 4 | BIN | Nm3 |
| 0008H | 作業条件フロー | 2 | BIN | m3/h |
| 000AH | 標準フローの流れ | 2 | BIN | Nm3/h |
| 000CH | 気温は | 2 | BIN | ℃ |
| 000EH | 圧力は | 2 | BIN | kPa |
そのうち:
開始アドレス:start_addr_hi,start_addr_low
2バイトで構成され,順に開始アドレスのハイバイト,ローバイトである;開始アドレスは必ず表1の第1列の数値でなければならず,そうでなければフロー量計がアドレスを返信するエラー(error_code =2); N_hi,N_lowの2バイトで構成され,N個のワード(1個のワードは2個のバイトで構成される)のデータを読み取ることを示す;
:データの
error_codeコードを表4に示します。
例:例1 EqualLogicの出荷時のデフォルト: Codfor for01 ,Cdrfor for23 ,bpsfor for9600)
メインステーション送信:17 0 3 0 0 0 4 0 0 4 0 7 3 E
アドレス機能コード開始アドレスレジスタ数CRCチェックコード
ステーションからの応答: 17 0 3 0 8 0000003 941252 4 E 1 9 D 25
アドレス機能コードバイト数標準累積チェックコード
変数データは8バイトのバイナリ数で表される標準累積トラフィックで、上位が先にあり、そのうち最初の6バイトは整数部分で、最後の2つは
個は小数部であり、データは3752229である。144 nm3/h。
データパッケージの説明:
1)整数部16進数00 0 0 0 39 41 25は10進数で375 2229に等しい。
2)小数部16进数24E1 16 = 9441 10 / 65536= 0. 14405 10進法。
3)結果は375 2 2 2 9.14、単位: Nm3/hです。
例:例2レジスタデータの読み出し(この例ではカレント积算器に表示されるデータの読み出し)
メインステーション送信:17 0 3 0 0 0 0 0 10 46 F 0
アドレス機能コード開始アドレスレジスタ数CRCチェックコード
ステーションからの応答: 17 03 20 00 00 37 12 05 A 0 43 00 00 37 12 05 A 0 43
アドレス機能コード受信バイト数ケース累積基準累積
00 01 CB 6B 00 01 CB 89 00 00 14 00 00 00 65 53 BA 18
動作条件トラフィック条件トラフィック温度圧力チェックコード
注:ホストが送信したデータフレームがエラーになった場合、スレーブは応答error_codeコードに応答せず、この時点でホストがコマンドを送信し続けることを拒否する。
2.2 関数コードの特徴07トラフィック計を読む。1個のバイトの状態データ。テーブルを参照。2。
親局送信addr 07 CRC
スレーブ応答addr 07 status CRC
テーブル2。
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | ハードウェア障害がある。 | 低トラフィックアラーム。 | 高トラフィック警報の動作 | バッテリー低電圧1アラーム | バッテリー低電圧2アラーム | 瞬時トラフィックの低下 | キー操作中 | 外部電源あり。 |
| 0ハードウェア障害なし | 動作トラフィックがアラーム最小値を超える | 動作トラフィックがアラーム上限未満 | バッテリ电圧がアラーム限度1を超える | バッテリ电圧がアラーム限度2を超える | 瞬時トラフィックは正常 | ボタンなし。 | 外部電源なし |
2.3関数コードの特徴66Hトラフィック計の内部履歴データを読み取るためのユーザー定義機能コード。テーブルを参照。3。
テーブル3。
| レジスター·アドレス | 変数名 | レジスタ数N | タイプの種類 | 説明書は |
| 0063H | 記録開始時刻 | 1 | BCD | ノート1。 |
| 0064H | 現在の時刻。 | 3 | BCD | ノート2。 |
| 0067H | 計器生産情報 | 18 | ASCII | ノート3。 |
| 0079H | リアルタイム録音。 | 17 | BCD/BIN | ノート4。 |
| 008AH | 月の記録 | 5 | BCD/BIN | ノート5。 |
| 008FH | スタートストップレコード | 8 | BCD/BIN | 背番号6。 |
| 0097H | 切断防止レコード | 4 | BCD/BIN | ノート7。 |
2.3.1最新のM番目のライブ·レコード(1レコード)の読み取り
親局送信addr 66H 00 64H 02H M_hi M_low CRC
スレーブ局応答66H 22H pBIN BIN q0 BIN t BIN p BIN year month day hour minite sec CRC
2.3.2最新のM月レコードの読み取り(1レコード)
親局送信addr 66H 00 65H 02H M_hi M_low CRC
スレーブ応答addr 66H 0AH sum BIN year BCD month BCD CRC
2.3.3最近のM番目の開始/停止レコードを読むEVCは開始/停止レコードなし、1レコード
親局送信addr 66H 00 66H 02H M_hi M_low CRC
スレーブ応答addr 66H 10H sum BIN year BCD month BCD day BCD hour BCD
minite(BCD),sec(BCD), ssflag(byte),0, CRC
2.3.4最近M番目のセンサが切断または接続されたときの記録を読み取る1レコード、機械的カウンタを取り付けたインテリジェント積算計のみ適用マスター局送信addr 66H 00,67H 02H M_hi M_low CRC
スレーブ応答addr 66H 08H year BCD month BCD day BCD hour BCD
minite(BCD),sec(BCD), bkflag(byte),0, CRC
コメント:
Mはワードで、2バイトで表され、M_hiはハイバイト、M_lowはローバイトで、最も近いレコードを読み取る場合、M=1、
M=0以上の場合、トラフィック計はトラフィック計内部に保持されているレコード数を0とするシーケンスを返します。
psum BIN sum BIN:8バイト8桁の2進数で表される累積量。上位のビットが先、最初の6バイトが整数、次の2バイトが整数
バイトは小数、単位はm 3です。
q0(BIN):4バイト8桁の2進数で表される標準状態瞬時トラフィック。上位のビットが先で、最初の3バイトが整数で、次の1バイト
単位: Nm3/h。
t BIN:4バイト8桁の2進数で表された温度で、上位が先で、最初の3バイトは整数で、次の1バイトは小数です。
略称はC。
p BIN:4バイトの8桁の2進数で表される圧力。上位が先で、最初の3バイトは整数で、次の1バイトは小数である。
略称はKPA。
year,month,day,hour,minite,sec
年(2000年を起点とし、20は非表示)、月、日、時、分、秒を表すシングルバイトBCDコードである。
ssflagはスタート/ストップフラグであり、ssflag=55Hの場合はスタートレコードであることを示し、ssflag=0EEHの場合はストップレコードであることを示します。
bkflagは正常/切断フラグであり、bkflag=55Hの場合、この記録はセンサ線が正常に戻った時の記録であることを示します。bkflag=の場合。
0EEHの場合、この記録がセンサワイヤが切り取られたときの記録であることを示す。
注1:記録開始時間:リアルタイム記録の開始時間を指定するために使用されます。2バイト、時間-分。秒時間はデフォルトで0です。
注2::年月日时、6个バイト、コード、その中の年は1个バイト(2000年を起点とし、20は表示しない):注3:计器:36个バイト、ASCIIコード;その中のメーカーコードは10字、型番は12个バイト、连番は8个バイト、
ソフトウェアバージョン3バイト、日3バイト年月日;
タグ:リアルタイム記録
:一本のリアルタイムデータ記録はすべてで34バイトであり、状態累積量8バイト(8桁の2進数、単位:m3)、基準状況累積量8バイト(8桁の2進数、単位:m3)、瞬時トラフィック4バイト(8桁の2進数、単位:m3/h)、温度4バイト(8桁の2進数、単位:℃)、圧力4バイト(8桁の2進数、単位:kPa)、時間6バイト(BCDコード、年月日時秒)を含む。
注5:月次記録。
1つの月の記録は合計10バイト、標準状况累積量は8バイト(8桁の2進数、単位:m3)、時間は2バイト(BCDコード、年)
月のこと。
注6:発停:1本の発停はすべてで15バイト、标状况积算量は8バイト(8桁の二进数、単位:m3)、6ワード节(コード、年月日时)、発停1バイト(55Hはトラフィックが无から有を示し、EEHはトラフィックが有から无まで)、0(予约バイト);
注7:剪断防止記録:1本の剪断防止記録は8バイトで、時刻6バイト(BCDコード、年月日時秒)、剪断防止フラグ1バイト(55Hはセンサハーネスがオンで正常、EEHはセンサハーネスが切断され異常、記録時間はオンまたは切断された時間)、 0(予約バイト)である。
2.4通信フレームを受信してもトラフィック計が応答しない場合:
2.4.1受信データフレームの通信アドレスバイトがローカルアドレスと異なる場合;
2.4.2受信データフレームの通信アドレスバイト(0に等しい)がブロードキャストアドレスである場合;
2.4.3受信したデータフレームのCRCチェックがエラーになった場合;
2.5.4受信データフレームのコマンドコードが間違っている場合。
2.5 異常な応答
スレーブがローカルに送信されたデータフレームを受信し、 CRCが正しく、異常を検出すると、
スレーブ応答は次のとおりです。addr function_code +128 error_code CRC
注:function_code:ホストコマンドフレームの機能コード(2バイト目)、function_code +128が機能コードです。
バイトの最上位位置1は例外を示します。
テーブル4。
| 値の値 | 障害の意味 |
| 02 | 変数アドレスが無効です |
| 03 | 無効な数値 |
データ型
テーブル内のデータには、BIN 、BCD、ASCIIの3種類があります。
3.1 BIN:2進数、上位バイトが前、下位バイトが後、それぞれ4つのケースがあります。
1バイト小数なし、符号なし;
2バイト小数なし、符号なし;
4バイト(最后の1バイトは小数、最初のバイトの最上位ビットは符号ビット、1は负の数、0は正の数) 8バイト最后の2バイトは小数を表し、符号なしビット;リアルタイムレコードで表示される量と量の小数位の后の1ワード
セクションのデフォルトは00で、小数点以下は1バイト単位で計算されます。
BCDコード: 1バイトは2桁の値を表し、値の範囲は0-9です。
3.3 ASCIIコード:文字、8ビット、1バイトのASCIIコードで、英語の文字または数字を表します。
特別な注意事項
元のカスタムトラフィック計通信プロトコルと互換性を保つために、特別なコマンド形式を追加しました。
4.1データは8ビットで、パリティはありません。すなわち通信モードCodを10にする.
4.2、トラフィック計のアドレスADDRの出荷時デフォルト値は023、すなわち16進数で17です。
4.3 0 2測定パラメータの読み取り
4.3.1 、トップマシンはフローメータに送信:
55H, 55H, ADDR, 02 ,00, ChkSum
4.3.2トラフィック計が上位コンピュータに応答するデータフレーム:
55H, 55H, ADDR, 02, 18, DevStatus, DevErr, Qm, Qo, t, p, sum, ChkSum
コメント:
55H,55Hはデータフレームのガイド文字であり,データフレームの開始を示す;
ADDRはトラフィック計の通信アドレス、1バイト、値の範囲は1-247です。
02は通信コマンド番号、1バイト、読み取り測定パラメータです。
18はデータ长で、1バイトであり、その后に18Hバイトのデータがあることを示す。
Qm(動作トラフィック)、Qo(標準トラフィック)、t(温度)、p(圧力)、sum(累積量)。
ChkSumはチェックサムで、1バイトで、その値はAddressからChkSumまでの全データの和までの下位8ビットデータである。
DevStatus:ステータスコード、1バイト、各ビットの意味を表5に示します。
テーブル5。
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | コマンドが応答しない | コール警察に通報 | 睡眠は | 外部電源あり。 | 減衰要因補償 | ボタン付き。 | バッテリーの低電圧 | 流れが少ない。 |
| 0命令の応答 | 警察を呼ばない。 | 眠れない。 | 外部電源なし | 補償なし。 | ボタンなし。 | バッテリーは正常。 | 普通の流れ |
DevErr:障害コード、1バイト、各ビットの意味を表6に示す:
テーブル6。
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | 周波数回路の故障 | 温度センサーの異常 | 圧力センサーの異常 | A/D変换回路の | RAMの障害 | EEPROMエラー | シリアルポート通信障害 | クロック回路の故障 |
| 0周波数回路は正常 | 温度センサーは正常 | 圧力センサーは正常 | A/D変換回路は正常 | RAMは正常 | EEPROMは正常 | シリアル通信は正常 | 時計回路は正常 |
動作トラフィック、標準トラフィック、温度、圧力は、P、SMH、MM、Mの順に、4バイト(単精度)浮動小数点で表されます。
LをF Floatで表すFloatData = ± 0.MH-MM-ML* 2P
累積量は6バイトの浮動小数点数で表され、P、SMH、MM、ML、ML1、ML2の順にF(Float)で表される。
FloatData = ±0.MH-MM-ML-ML1-ML2*2P
ここで、P:順序コード、1バイト、16進数の補数で表されます。
SMH:仮数の上位バイト、1バイト、最上位ビット(第7ビット)は符号ビットSであり、S=1はデータが负であることを示し、S=0はデータが正であることを示し、残りの7ビットは小数点数仮数の仮数の上位7ビット、0から6ビットである。
MM:仮数のバイト、1バイト、7から14ビット。
ML:仮数の下位バイト、1バイト、15から23ビット。
ML1:仮数の下位バイト、1バイト、24から31ビット。
ML2:仮数の下位バイト、1バイト、32から39ビット。
例:例3:
上位コンピュータがトラフィック計に送信するデータフレーム:
55 55 17 02 00 19
55H 55H ADDR CMD Len1 ChkSum
トラフィック計がホストコンピュータに応答するデータフレーム:
55 55 17 02 18 15 00 00 00 00 00 00 00 00 00 05 50 00 00 07 65 4C CC
55H 55H ADDR 02 18 DevStatus DevErr Qm Qo t p
16 72 82 4A 49 25 E1
sum ChkSum
分数コードの10進数値を境界として仮数を整数と小数に分割し、バイナリから10進変換を行います。
データパッケージの説明:
55 55 17 02 18 ---
15
00
00 00 00 00 00 00 00 00 05 50 00 00
07 65 4C CC
--ステータスコード
---障害コード
---トラフィック=0
---標準状態瞬時トラフィック=0
---温度=0.10100 00000000000000000000000000 ×2∧0101=20
---圧力= 0.11001 01 0 1001 1001 100 ×2∧ 0 1 1 1 = 101.2999877 9
16 7 2 82 4 A 49 25----累積量= 0.1 1 10010100001001001001001001001001001001001 ×2∧10110 = 37 5 2229. 1428604125
E 1-チェックサム
4.3.3カスタムフローメータ通信プロトコル小数点数解析
4バイト浮動小数点数と6バイト浮動小数点数を解析する方法については、以下で詳しく説明します。
温度05 50 00 00データ型のにより、P= 05 H= 0101 2 = 5
SMH=(50)H=(01010000) 2 MM=00 ML=00
。SMHの最上位ビットが0なので、仮数は正です。順序コードPは10進数5に変換されるので、仮数が2進数に変換された後、最初の5桁は整数 部分、残りは小数部分です。
FloatData = 0 10100 00000000000000 0 10進数へ
正の整数部小数部
FloatData = 1×24 + 1×22 = 20
圧力07 65 4 C CCここでP= 07 H = 0111 2 =7 SMH = 65 H= 01100101 2 MM= 4C H= 01001100 2 ML= CC H= 11001100 2
SMHの最上位ビットは0なので、仮数は正であり、コードPは10進数に変換されるので、仮数が2進数に変換された後、7ビットは整数 部分であり、残りは小数部分です。
FloatData = 0 1100101 01001100 11001100 1100十進数へ
正の整数部小数部
FloatData= 1×26 + 1×25 + 1×22 + 1×20 + 1×2-2 + 1×2-5 + 1×2-6
+ 1×2-9 + 1×2- 10 + 1×2- 13 + 1×2- 14 = 101.29998779
累積:16 72 82 4 A 49 25ここでP=(16)H=(00010110)2 = 22 SMH=(72)H=(01110010)2 MM=(82)H=(1000010)2 ML=(4 A)H=(01001010)2 ML1=(49)H=(01001001)2 ML2 =(25)H=(00100101)2 SMHの最上位ビットは0であるので、仮数は正であり、符号Pは10進数に変換されるので、仮数が2進数の場合、22ビットは整数部で残りは小数部である。
FloatData = 0 1110010 1000010 0100101 0 01001001 001001 10進数への変換
正の整数部小数部
FloatData =1×221 + 1×220 + 1×219 + 1×216 + 1×214 + 1×28 + 1×25 + 1×22 + 1×20+ 1×2-3 + 1×2-6 + 1×2-9 + 1×2- 12 +1×2- 15 + 1×2- 17 = 3752229.1428604125
发表回复