untitled

Similar documents
/ / (FC 3)...

TC35短信发送程序设计

CC213

概述

用户大会 论文集2.2.doc

FY.DOC

T

目录

+00DE _01EN.book

Microsoft Word - InoTouch Editor编程软件手册 doc

SeTAQ 是 山 东 西 泰 克 仪 器 有 限 公 司 的 注 册 商 标 本 说 明 书 未 经 书 面 许 可 不 得 翻 印 修 改 或 引 用 警 告 : 请 专 业 人 员 检 测 和 维 修 本 设 备! 警 告 : 本 仪 表 使 用 24V 直 流 电 源, 请 务 必 正 确

Microsoft PowerPoint - OPVB1基本VB.ppt

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

3.1 num = 3 ch = 'C' 2

Microsoft Word - 小心翼翼的二十一點N.doc

6020

untitled

RS-232C [11-13] 1 1 (PLC) (HMI) Visual Basic (PLC) 402

《计算机应用基础》学习材料(讲义)

untitled

C/C++ - 文件IO

C/C++程序设计 - 字符串与格式化输入/输出

<B0B8C0FDCAD6B2E15FD3A1CBA2B0E6>

PTS7_Manual.PDF

四、通 讯 规 约

378高雄市都市計畫說明書

51 C 51 isp 10 C PCB C C C C KEIL

游戏厅捕鱼技巧_天天酷跑游戏技巧 2048游戏技巧,游戏厅打鱼技巧_

MCCB EMI EMI

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

TouchWin Human Machine Interface

untitled

勤 學 * 卓 越 * 快 樂 成 長 本 校 在 老 師 群 策 群 力 共 同 討 論 下, 型 塑 了 學 校 願 景 : 勤 學 卓 越 快 樂 成 長 ( 一 ) 勤 學 運 用 真 的 力 量 培 養 勤 學, 以 語 文 教 為 基 礎 紮 根 ( 二 ) 卓 越 利 用 美 的 感

(HMI) IO A

untitled

untitled

2. 下 列 理 解 和 分 析, 不 符 合 原 文 意 思 的 一 项 是 ( ) A. 水 手 在 伦 敦 讲 东 印 度 群 岛 的 所 见 所 闻, 匠 人 在 火 炉 边 讲 自 己 的 人 生 经 历, 他 们 讲 的 故 事 各 有 特 点, 但 同 属 于 传 统 故 事 模 式

Microsoft Word - 13院21号.doc

50-FB23-24_BES_V_ z1_ b

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

ISA-9620用户手册.PDF

untitled

通信工程

ABB Drives Modbus RMBA-01

Eaton kVA 用户指南

C/C++ - 函数

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

untitled


C语言的应用.PDF

Microsoft Word - Executive Summary _Chi_ V_6.doc

KPCI KPCI-815 TEL: Fax:

概述

2005.book

行业

MVB-1001.DOC

(W32) * (W32) WindowsWin32 API(DLL) Win32 API Visual Basic Visual C/C++ Windows XP/Server 2003/2000/NT/Me/98/95 (/) Windows XP / Server 2003 / 2000 /

<4D F736F F D20C9EEDBDACAD0BAA3D4C2CDA8D0C5B6AFCCACC3DCC2EBBDE2BEF6B7BDB0B82E646F63>

第壹拾篇

新・解きながら学ぶJava

前言

C

S 可编程控制器

instructions.PDF

untitled

bingdian001.com

KPCI KPCI-815

C/C++语言 - C/C++数据

E170C2.PDF

ARM JTAG实时仿真器安装使用指南

! "#$% & ())*! ++, +- +.)! ++ ())* / 0!!""#!

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

DPJJX1.DOC

untitled

B1B1z_ch_print.pdf

行业

行业

养鸭实用技术(三)

2 12

第7章-并行计算.ppt

CHAPTER 1

提纲


untitled

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

<4D F736F F D D342D3231D2C7B1EDCCD6C2DBB8E5B1E0D6C6CBB5C3F72E646F63>

Microsoft Word - 09.數學 docx

C C

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

nooog

LF 打印并走一行

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY

untitled

C/C++ 语言 - 循环

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

bingdian001.com

pdf

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

solutions guide

Transcription:

MODBUS 1

MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12 3.7 WRTMULTIBIT...13 3.8 WRTMULTIWORD...14 3.9 VERIFYPACK...15 4...17 5...17 5.1 VISUAL C++...17 5.2 VISUAL BASIC...21 5.3 BORLAND DELPHI...23 MODBUS...30...30...31...31 RTU...31 ASCII...32...33...33...34 ModBus...34...37...37 (0x01 Read Coil Status)...37 (0x02 Read Input Status)...38 0x03 Read Holding Registers...38 2

0x05 Force Single Coil...39 0x06 Preset Single Register...39...40 (0x0F Hex )Force Multiple Coils...45 (10 Hex) Preset Multiple Registers...45 0x80+...46 MODBUS...46...48 3

1 1.1 MODBUS 1.2 PLC PLC PLC PLC PLC. Modbus PLC PLC Modbus Modbus Windows 98/ME/2000/XP Win32 DLL Microsoft Visual C++Visual Basic Borland Delphi DLL Modbus PLC 1.3 PLC Programming Logic Controller 4

2 2.1 RS232 RS485 PLC PLC MODBUS MODBUS PLC Modbus RS232485 Modbus 2.2 MODBUS X86 PC CPU 300MHz 256MB 50MB 800*600*256 Windows 98/ME/2000/XP Microsoft Visual C++ Microsoft Visual Basic Borland Delphi 5

3 MODBUS DLL OpenSerial CloseSerial RdMultiBit RdMultiWord WrtOneBit WrtOneWord WrtMultiBit WrtMultiWord VerifyPack 3.1 OpenSerial [VC] long OpenSerial( int nserialno, int nbaud, int ndatabit, int nstopbit, int nparity, int nprotype, int nretrytime, int ntimeout ); [VB] OpenSerial( ByVal nserialno As Long, ByVal nbaud As Long, ByVal ndatabit As Long, 6

ByVal nstopbit As Long, ByVal Parity As Long, ByVal nprotype As Long, ByVal nretrytime As Long, ByVal ntimeout As Long ) As Long [Delphi] function OpenSerial( nserialno, nbaud, ndatabit, nstopbit, nparity, nprotype, nretrytime, ntimeout: Integer ):Integer; stdcall; nserialno nserialno=1 COM1 nbaud 1200/2400/4800/9600/19200/38400 ndatabit 4~8 nstopbit ONESTOPBIT 1 ONES5STOPBIT1.5 TWOSTOPBITS2 nparity NOPARITYODDPARITY EVENPARITY nprotype PROTOCOL_ASCIIASCII PROTOCOL_RTURTU nretrytime >0 ntimeout >0 0 MODBUS_INVALID_PARAM MODBUS_OPEN_FAILED OpenSerial 7

3.2 CloseSerial [VC] long CloseSerial( int nserialno ); [VB] CloseSerial( ByVal nserialno As Long ) As Long [Delphi] function CloseSerial( nserialno: Integer ):Integer; stdcall; nserialno OpenSerial 0 MODBUS_INVALID_PARAM CloseSerial 3.3 RdMultiBit [VC]long RdMultiBit( int nserialno, int nstationno, const char* ucstartaddr, int nnum, unsigned char* ucrefvalue ); [VB] RdMultiBit( ByVal nserialno As Long, 8

ByVal nstationno As Long, ByVal ucstartaddr As String, ByVal nnum As Long, ParamArray ucrefvalue()) As Long [Delphi] function RdMultiBit( nserialno, nstationno: Integer; ucstartaddr: pchar; nnum: Integer; ucrefvalue: pchar ) : Integer; stdcall; nserialno OpenSerial nstationno MODBUS ucstartaddr M23 YXMSM STCMODBUS nnum >0 MODBUS ucrefvalue nnum 0 ucrefvalue MODBUS_PORT_UNAVAILABLE - MODBUS_INVALID_PARAM 0x01 0x02 OpenSerial MODBUS 3.4 RdMultiWord 9

[VC]long RdMultiWord( int nserialno, int nstationno, const char* ucstartaddr, int nnum, short* srefvalue ); [VB] RdMultiWord( ByVal nserialno As Long, ByVal nstationno As Long, ByVal ucstartaddr As String, ByVal nnum As Long, ParamArray srefvalue()) As Long [Delphi] function RdMultiWord( nserialno, nstationno: Integer; ucstartaddr: pchar; nnum: Integer; srefvalue: psamllint) : Integer; stdcall; nserialno OpenSerial nstationno MODBUS ucstartaddr D0 DSDZTC MODBUS nnum >0 MODBUS ucrefvalue nnum 0 srefvalue MODBUS_PORT_UNAVAILABLE - MODBUS_INVALID_PARAM 0x01 10

0x02 OpenSerial MODBUS 3.5 WrtOneBit [VC] long WrtOneBit( int nserialno, int nstationno, const char* ucstartaddr, unsigned char ucvalue ); [VB] WrtOneBit( ByVal nserialno As Long, ByVal nstationno As Long, ByVal ucaddr As String, ByVal ucvalue As Byte) As Long [Delphi] function WrtOneBit( nserialno, nstationno: Integer; ucaddr: pchar; ucvalue: char) :Integer; stdcall; nserialno OpenSerial nstationno MODBUS ucstartaddr M23 YMSMST CMODBUS ucvalue 0 11

MODBUS_PORT_UNAVAILABLE - MODBUS_INVALID_PARAM 0x01 0x02 OpenSerial MODBUS 3.6 WrtOneWord [VC] long WrtOneWord( int nserialno, int nstationno, const char* ucstartaddr, short svalue ); [VB] WrtOneWord( ByVal nserialno As Long, ByVal nstationno As Long, ByVal ucaddr As String, ByVal ucvalue As Long) As Long [Delphi] function WrtOneBit( nserialno, nstationno: Integer; ucaddr: pchar; svalue: Word): Integer; stdcall; nserialno OpenSerial nstationno MODBUS ucstartaddr D0 DSDZTC MODBUS svalue 12

0 MODBUS_PORT_UNAVAILABLE - MODBUS_INVALID_PARAM 0x01 0x02 OpenSerial MODBUS 3.7 WrtMultiBit [VC] long WrtMultiBit( int nserialno, int nstationno, const char* ucstartaddr, int nnum, unsigned char ucvalue[] ); [VB] WrtMultiBit(ByVal nserialno As Long, ByVal nstationno As Long, ByVal ucstartaddr As String, ByVal nnum As Long, ParamArray ucvalue()) As Long [Delphi] function WrtMultiBit( nserialno, nstationno: Integer; ucstartaddr: PChar; nnum: Integer; ucvalue: PChar ): Integer; stdcall; nserialno OpenSerial 13

nstationno MODBUS ucstartaddr M23 YMSMST CMODBUS nnum 0 ucvalue nnum 0 MODBUS_PORT_UNAVAILABLE - MODBUS_INVALID_PARAM 0x01 0x02 OpenSerial MODBUS 3.8 WrtMultiWord [VC] long WrtMultiWord( int nserialno, int nstationno, const char* ucstartaddr, int nnum, short svalue[] ); [VB] WrtMultiWord( ByVal nserialno As Long, ByVal nstationno As Long, ByVal ucstartaddr As String, ByVal nnum As Long, ParamArray svalue()) As Long 14

[Delphi] function WrtMultiWord( nserialno, nstationno: Integer; ucstartaddr: pchar; nnum: Integer; ucvalue: psmallint ):Integer; stdcall; nserialno OpenSerial nstationno MODBUS ucstartaddr D0 DSDZTC MODBUS nnum 0 ucvalue nnum 0 MODBUS_PORT_UNAVAILABLE - MODBUS_INVALID_PARAM 0x01 0x02 OpenSerial MODBUS 3.9 VerifyPack [VC] long VerifyPack( int nserialno, int nstationno, 15

unsigned char ucverifycode, short* sdatafield ); [VB] VerifyPack( ByVal nserialno As Long, ByVal nstationno As Long, ByVal ucvericode As Long, DataField As Long) As Long [Delphi] function VerifyPack( nserialno, nstationno: Integer; ucvericode: Smallint; datafield: psmallint) :Integer; stdcall; nserialno OpenSerial nstationno MODBUS ucverifycode MODBUS sdatafield 0x00 0x01 0x04 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x12 CRC 0 MODBUS_PORT_UNAVAILABLE - MODBUS_INVALID_PARAM 0x01 0x02 16

OpenSerial MODBUS 4 Modbus 32 0 MODBUS_NOERROR 0 MODBUS_INVALID_FUNC 1 MODBUS_INVALID_REG 2 MODBUS_INVALID_COUNT 3 MODBUS_NO_LIB 100 MODBUS_NO_IMPL 99 MODBUS_INVALID_PARAM 98 MODBUS_OPEN_FAILED 97 MODBUS_PORT_UNAVAILABLE 96 MODBUS_LOW_MEM 95 MODBUS_NO_RESPONSE 94 MODBUS_BAD_RESPONSE 93 MODBUS_CRC_ERROR 92 CRC 5 5.1 Visual C++ Visual C++ Microsoft Visual Studio 6.0 17

<>\Include Visual C++ INCLUDE <>\Include\Modbus.H Visual C++ <>\Lib Visual C++ LIB <>\Lib\ModbusLib.lib Visual C++ 18

Bin\ ModbusLib.dll %WINDIR%\system32 %WINDIR% Windows Visual C++ #include Modbus.h #pragma comment( lib, ModbusLib.lib ) Visual C++ #include Modbus.h // 192008 1 RTU 3 1000ms long result = OpenSerial( 1, 19200, 8, ONESTOPBIT, PROTOCOL_RTU, 1, 1000 ); TRACE( "Open Result=%d\n", result ); if ( result!= MODBUS_NOERROR ) return; // 1 0x01 19

short ss = 0; result = VerifyPack( 1, 1, 0x01, &ss ); TRACE( "Restart comm option, result=%d\n", result ); // result = WrtOneBit( 1, 1, "M23", 1 ); TRACE( "WrtOneBit=%d\n", result ); // BYTE bvalues[10] = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; result = WrtMultiBit( 1, 1, "M24", 10, bvalues ); TRACE( "WrtMultiBit=%d\n", result ); // BYTE tmpresult[12]; memset( tmpresult, 0, sizeof(tmpresult) ); result = RdMultiBit( 1, 1, "M23", 12, tmpresult ); TRACE( "RdMultiBit=%d, value=(%d,%d,%d,%d,%d,%d,%d)\n", result, (int)tmpresult[0], (int)tmpresult[1], (int)tmpresult[2], (int)tmpresult[3], (int)tmpresult[4], (int)tmpresult[5], (int)tmpresult[6] ); // result = WrtOneWord( 1, 1, "D0", 12 ); TRACE( "WrtOneWord=%d\n", result ); // short svalues[10]; for ( int i=0; i<10; i++ ) 20

svalues[i] = (i+1)*2; result = WrtMultiWord( 1, 1, "D1", 10, svalues ); TRACE( "WrtMultiWord=%d\n", result ); // memset( svalues, 0, sizeof(svalues) ); result = RdMultiWord( 1, 1, "D0", 10, svalues ); TRACE( "RdMultiWord=%d, value=(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)\n", result, (int)svalues[0], (int)svalues[1], (int)svalues[2], (int)svalues[3], (int)svalues[4], (int)svalues[5], (int)svalues[6], (int)svalues[7], (int)svalues[8], (int)svalues[9] ); // result = CloseSerial( 1 ); TRACE( "Close=%d\n", result ); 5.2 Visual Basic Visual Basic Microsoft Visual Studio 6.0 <>\Include\Modbus.bas Visual Basic 21

Bin\ ModbusLib.dll %WINDIR%\system32 %WINDIR% Windows Visual Basic Dim lngresult As Long ' lngresult = OpenSerial( 1 19200 8 ONESTOPBIT, PROTOCOL_RTU, 3, 1000) If lngresult <> MODBUS_NOERROR Then Exit Sub lngresult = WrtOneBit(1, 1, M22, 1) Redim buf(100-1) For i=0 to 100-1 buf(i) = i+1 Next i lngresult = WrtMultiBit(1, 1, M23, 100, buf(0) ) 22

ReDim buf(100-1) lngresult = RdMultiBit(1, 1, M23, 100, buf(0) ) lngresult = WrtOneWord(1, 1, Y0, 1) ReDim m_intwrtvalue(100-1) lngresult = WrtMultiWord(1, 1, Y0, 100, m_intwrtvalue(0) ) lngresult = RdMultiWord(1, 1, Y0, 100, m_intrefvalue(0) ) Dim lngdata As Long lngresult = VerifyPack(1, 1, &H1, lngdata) lngresult = CloseSerial(1) 5.3 Borland Delphi Delphi Delphi 7.0 1 ModBusDLL.pas 23

1 AddProject 2 ModbusDll.pas 2 Open 3 Bin\ ModbusLib.dll Delphi 24

' procedure TMainFrm.OpenSerialBtnClick(Sender: TObject); var nresult:integer; begin ' :(RTUASCII) nresult:=openserial(1,19200,1,1,0,0,3,1000); if nresult <> MODBUS_NOERROR then begin abort; end; end; procedure TMainFrm.WrtOneBitBtnClick(Sender: TObject); var nresult:integer; cvalue:char; begin cvalue:=char(pchar( ff )); //* :*/ nresult:= WrtOneBit(1,1, Y0, cvalue); if nresult <> MODBUS_NOERROR then begin // Log end; end; procedure TMainFrm.WrtMultiBit BtnClick(Sender: TObject); var nresult:integer; 25

pvalue:pchar; begin // begin getmem(pvalue,nnum); pvalue^:=chr(hextoint(strleft)); i:=i+1; while StrRight<>'' do begin SplitString(StrRight,' ',StrLeft,StrRight); if i>nnum then continue; inc(pvalue); pvalue^:=chr(hextoint(strleft)); i:=i+1; end; // for i := 1 to 6 do begin Dec(pvalue,1); end; // end //* :*/ nresult:= WrtMultiBit(1,1, Y0,6,pvalue); if nresult <> MODBUS_NOERROR then begin // Log end; end; procedure TMainFrm. RdMultiBitBtnClick(Sender: TObject); var nresult:integer; 26

pvalue:pchar ; begin getmem(pvalue,6); //* :*/ nresult:= RdMultiBit (1,1, Y0,6, pvalue); if nresult <> MODBUS_NOERROR then begin // Log FreeMem(pValue,6); return; end; // FreeMem(pValue,6); end; procedure TMainFrm. WrtOneWordBtnClick(Sender: TObject); var nresult:integer; nvalue:integer ; begin nvalue:= HexToInt ( ff ); //* :,*/ nresult:= WrtOneWord (1,1, Y0, nvalue); if nresult <> MODBUS_NOERROR then begin // Log end; end; 27

procedure TMainFrm. WrtMultiWordBtnClick(Sender: TObject); var nresult:integer; psvalue:pword; begin // begin getmem(psvalue,nnum); psvalue ^:=HextoInt(StrLeft); i:=i+1; while StrRight<>'' do begin SplitString(StrRight,' ',StrLeft,StrRight); if i>nnum then continue; inc(psvalue); psvalue ^:=HextoInt(StrLeft); i:=i+1; end; // for i := 1 to 6 do begin Dec(pSValue,1); end; // end //* :*/ nresult:= WrtMultiWord (1,1, Y0,6, psvalue); if nresult <> MODBUS_NOERROR then begin // Log end; end; 28

procedure TMainFrm. RdMultiBitBtnClick(Sender: TObject); var nresult:integer; pvalue:pword; begin getmem(pvalue,6); //* :*/ nresult:= RdMultiWord (1,1, Y0,6, pvalue); if nresult <> MODBUS_NOERROR then begin // Log FreeMem(pValue,6); return; end; // FreeMem(pValue,6); end; procedure TMainFrm VerifyPackBtnClick(Sender: TObject); var nresult:integer; pvalue:pword; begin getmem(pvalue,2); //* :0x000x010x040x0a0x0b 0x0c0x0d0x0e0x0f0x12*/ nresult:= VerifyPack (1,1,0x00, pvalue); if nresult <> MODBUS_NOERROR then begin // Log 29

FreeMem(pValue,2); return; end; // FreeMem(pValue,2); end; procedure TMainFrm VerifyPackBtnClick(Sender: TObject); var nresult:integer; begin //* :*/ nresult:= CloseSerial (1,); if nresult <> MODBUS_NOERROR then begin // Log return; end; // end; Modbus Modbus modbus GCM GCM GCM PLC 30 1~31GCM PLC 30

30 GCM PLC 00 RS485 RS232 819200 bps,rtu38400 19200 bps9600 bps4800 bps2400 bps1200 bps 38400bps 2252ASII252RTU GCMPLC0MODBUS 1MODBUS RTU 19200 1.5 = 1/19200 *11*1.5*1000=0.86ms 3.5 = 1/19200 *11*3.5*1000=2ms 31

ASCII 32

MODBUS 1 2 3 33

0x80 ModBus 0x01 0x 02 ON/OFF 0x 03 0x 05 0x 06 0x 08 0x0f 0x10 00256 Y0Y255 (Discrete Output) 34

0120101456 X0X255 (Discrete Input) 0200104000 M0M1999 (Discrete M Relay) 0440104656 SM0M255 (Discrete M Relay) 0600106992 S0S991 (Discrete S Relay) 0800108256 T0T255 (Status of T0T255) 0920109456 C0C255 (Status of C0C255) 00001D0D7999 080018256 SD0SD255 085018516 Z0Z15 090019256 T0T255 (Current Value of T0T255) 095019700 C0C199 (Current Value of C0C19916-bit) 0970109812 C200C255 (Current Value of C200C25532-bit) 1 Modicon 01 0:xxxx YXMSMSTC 02 1:xxxx X 03 4:xxxx DSDZTC 05 0:xxxx YMSMSTC 06 4:xxxx DSDZTC 15 0:xxxx YMSMSTC 16 4:xxxx DSDZTC 0 1 4 xxxx 1-9999 1-9999 0 014 35

2PLC Modbus Y Y0-Y255 0000-0255 010515 X X0-X255 1200-01455 0000-0255 010515 02 M M0-M2000 2000-3999 010515 SM SM0-SM256 4400-4655 010515 S S0-S991 6000-6991 010515 T T0-T255 8000-8255 010515 T C C0-C255 9200-9455 010515 C D D0-D7999 0000-7999 030616 SD SD0-SD255 8000-8255 030616 Z Z0-Z15 8500-8515 030616 T T0-T255 9000-9255 030616 T C C0-C199 9500-9699 030616 C WORD C C200-C255 9700-9811 0316 C DWORD Modicon 0 Modicon 1 +1=Modicon M0 2000 Modicon 0:2001 M0 M2000 01 01 07 D0 00 01 FD 47 01 01 07 D0 07D0 2000 00 01 FD 47 CRC 36

SDSM SDSM (0x01 Read Coil Status) 2000 1 X Y Y 00000255 Y0Y255 1 256 02 1 Y 255 0 257 03 256 256 Y 0 256 256 M M 2000 3999M0M1999 2000 2000 2000 M 1 01H H L H L 2 8 0 37

01H Number of byte read Read data No.1 Read data No.n n B7 B6 B5 B4 B3 B2 B1 B0 (0x02 Read Input Status) 256 256 X 2 02H H L H L 2 8 0 02H Number of byte read Read data No.1 Read data No.n n B7 B6 B5 B4 B3 B2 B1 B0 0x03 Read Holding Registers 1 38

03H H L H L 2 Number of byte read Read data No.1 Read data No.n 03H n H L H L 0x05 Force Single Coil broadcast 1 05H H L H L 0xFF00(ON,1) 0x0000(OFF,0) 2 05H H L H L 0x06 Preset Single Register broadcast 1 39

06H H L H L 2 06H H L H L 0x00 Return Query Data 0x 01 Restart Comm Option 0x 04 Force Listen Only Mode LISTEN ONLY 0x0a Clear Ctrs and Diagnostic Reg 0x0b Return Bus Message Count 0x0c Return Bus Comm. Error Count CRC 0x0d Return Bus Exception Error Cnt 0x0e Return Slave Message Count 0x0f Return Slave No Response Cnt 0x12 Return Bus Char. Overrun Cnt 1 0x08H 0x00H 0x00H H L 2 40

0x08H 0x00H 0x00H H L 2 PLC 1 0x00 00 0xff 00 0x08H 0x00H 0x01H H L (CRC LRC) 2 0x08H 0x00H 0x01H H L (CRC LRC) LISTEN ONLY 1 0x08H 0x00H 0x04H 0x00H 0x00H 2 41

1 0x08H 0x00H 0x0AH 0x00H 0x00H 2 0x08H 0x00H 0x0AH 0x00H 0x00H CRC 1 0x08H 0x00H 0x0BH 0x00H 0x00H 2 0x08H 0x00H 0x0BH H L 42

CRC 1 0x08H 0x00H 0x0CH 0x00H 0x00H 2 0x08H 0x00H 0x0CH H L 1 0x08H 0x00H 0x0DH 0x00H 0x00H 2 0x08H 0x00H 0x0DH H L 1 43

0x08H 0x00H 0x0EH 0x00H 0x00H 2 0x08H 0x00H 0x0EH H L 1 0x08H 0x00H 0x0FH 0x00H 0x00H 2 0x08H 0x00H 0x0FH H L 1 0x08H 0x00H 0x12H 0x00H 0x00H 2 44

0x08H 0x00H 0x12H H L (0x0F Hex )Force Multiple Coils 1968 0x07b0, 1 No.1 No.N (CRC LRC) 0FH H L H L (n) B7 B6 B5 B4 B3 B2 B1 B0 2 0FH H L H L (10 Hex) Preset Multiple Registers 120 0x78 1 (CRC No.1 No.N LRC) 0x10H H L H L (n) H L H L 45

2 0x10H H L H L 0x80+ 0x80 MODBUS Modbus Modbus C C200-C255 C200-C255 0316 C C200-C202 C RTU 01 03 25 E4 00 06 8E F3 25 E4 9700 46

00 06 6 8E F3 9700 9791 C200 9700 16bit9701 16bit 01 03 25 E5 00 04 5E F2 25 E5 9701 01 83 02 C0 F1 01 03 25 E4 00 05 CE F2 25E4 5 01 83 03 01 31 PLC LONG INT D D3 D4 LONG INT EMERSON PLC D3 16 D4 16 MODBUS LONG INT EMERSON PLC LONG INT 32 FLOAT LONG INT 08 2000 1968 125 120 Y255 255X0 1200 Y Y0-Y255 0-255 Modicon 1-256 Y 256 01 CRC 1 01 01 00 00 01 00 3D 9A 01 0100 00 01 00 3D 9A 47

2 01 01 00 00 01 01 FC 5A 01 01 257 Y 01 81 03 00 51 257>256256 Y 3 01 01 00 64 00 A0 7D AD 00 64 100 00 A0 160 01 81 02 C1 91 100 Y 156 160 4 01 01 01 2C 00 0A 7C 38 01 2C 300 10 01 81 02 C1 91 300 5 01 04 00 02 00 0A D1 CD 04 01 84 01 82 C0 6 01 02 00 00 00 0A F8 0D X 00 00 10 X0-X9 01 02 02 00 00 B9 B8 02 00 00 7 01 01 04 B0 00 0A BC DA 04 B0 1200 10 X0-X9 01 01 02 00 00 B9 FC 02 00 00 X SMSD 48

49