实例介绍
NMODBUS开发文档,支持C#语言,包括RTU和ASCII两种模式
通用AP 31 4.1. Dispose.....,…,…,,… 31 附錄A:錯誤訊息…….… 32 附錄B:A,AO型別轉換 35 MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 3 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com 1.關於手冊 此手冊對於 MOdbus中所使用的APl說明 什麼是 NMod bus? 利用 MOdbus可實現 Mod bus的通訊協定’它是山一群自願者所開發以及維護·並且 免費開放使用 CP DAS基於官方發佈的 MOdbus原始碼進行功能碓認與改善·程式開發員可以利用IP DAS發佈的DLL進行 Windows版PC或是 Wince版的 Mod bus程式開發。這個DLL具 備以下功能 a ModbuS/RTU Master/slave b Modbus/ASCll Master /slave C Modbus/TCP Master/Slave d Modbus /UDP Master/Slave 下載DLL與範例程式 a. Win Form版不 DL和文件: nModbusPC. dll, log4 net. dll 例程式(ForC#,VB.Net) b.WnCE版本 DLL和文件: n Mod buse.d,CABC.d,FC19dl 範例程式(F。rC#,VB.Net) 了解更多有關Modbus→htt:/www.icpdas.com/products/PAC/i-8000/modbusc.htm 適用 N Mod bus開發的PAC WinForm XPAC(WES 2009) Win8,Win7, Vista,Xp(需有 NET framework2(含)以上) WinCe View PAC(CE5 WinPAC(CE5) XPAC(CE6 MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 4 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com 2. MOdbus master api 建立 Master連線 設定 Retries 設定 ReadTimeout Master. read I Master Read coils Master. ReadInputs I Master. Read Holdingregisters 更新育料至U Master. ReadInputRegisters Master. Dispose 21. Creatert 建讠 modbus master rtu的連線 語法 C# Modbus Master CreateRtu SerialPort serialPort MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 5 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com 變數 serialPort serialport是由 new serialPort()建立,而序列埠必需先被 serial Port Open(開啟。 若 serial Port沒有指定值’則會由系統帶預設的值。例如:連接埠名稱為COM1 同位檢查為None,資料位元為8,停止位元為1 回傅值 回傅 Modbus serialMaster 範例 CH SerialPortserialPort new SerialPort(); //Create a new SerialPort object serialPort PortName=“COM1” serialPort BaudRate =115200 serialport data bits =8 serialPort. Parity Parity. None serialPort. Stop Bits= Stop Bits. One serialPort open (; ModbusSerialMaster master= Modbus SerialMaster createRtu(serialPort 2.2. Createasci 建立 mod bus master asci的連線 語法 C Modbus Master CreateAscii SerialPort serialPort 變數 seria∥Port MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 6 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com serialPort是由 new SerialPort()建立’而序列埠必需先被 serialPort. Open開畋。 回傅值 回傅 Modbusserialmaster 範例 C# SerialPort serialPort new SerialPort(); //Create a new SerialPort object serialPort PortName=“COM1” serialPort Baud Rate =115200: serialPort Data Bits =8 serialPort Parity Parity None serialPort. Stop Bits=Stop Bits. One serialPort Open (; ModbusSerial Master master=Modbus SerialMaster Create Ascii(serial Port) 2.3. Createlp(TcpClient) 建立 modbus master ip的連線。 語法 C# ModbuslpMaster createlp( Tcp Client tcpClient 孌數 tcpClient tcpClient是由 new Tcp Client(建立,而 tcpClient必需由 tcpClient Begin Connect(產生 連接 回傅值 回傳 ModbuslpMaster MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 7 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com 範例 [C# string ip Address=10.0.0.69 int tcpport= 502: Tcp Client tcp Client new Tcp Client(; // Create a new TcpClient object. tcp Client Begin Connect(ipAddress, tcp Port, null, null Modbuslp Master master=ModbuslpMaster Createlp(tcpClient); 若是斷線時要重新連線,請參考下列程式碼 [C#] [DIlmport( WININET CharSet =CharSet Auto) static extern bool InternetGetconnectedState(ref Internet Connection State lpdw Flags, int dw Reserved); enum internetconnection state int INTERNET CONNECTION MODEM= Ox1 NTERNET CONNECTION LAN Ox2 INTERNET CONNECTION PROXY= 0X4 INTERNET RAS INSTALLED = 0X10 INTERNET CONNECTION OFFLINE= 0x20 INTERNET CONNECTION CONFIGURED= 0x40 Tcp Client tcpClient Modbuslp Master master string ipAddress=10.0.0.69 int tcpPort =502 Date Time dtDisconnect= new Date Time(; Date Time dtNow= new Date Timeo bool networklsok= false private void btstart Click(object sender, EventArgs e) // when button clicked, connect to Modbus TCP Server Networklsok= Connect() timer 1. enabled true: private bool Connecto MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 8 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com if (master l= null) master. Dispose( if (tcpClient I= null tcpClient Close (); if ( CheckInternet() tcpClient new tcpclient( lAsyncResult asyncResult=tcp Client Begin Connect(ipAddress, tcpPort, null, null) asyncResult. AsyncWaitHandle WaitOne 3000, true); / wait for 3 sec if (lasyncResult. IsCompleted) tcpClient Close(; Console.Write Line(Date Time. Now ToString()+ Cannot connect to server. ) return false // create Modbus TCP Master by the tcpclient master= Modbuslp Master Createlp(tcp Client); master Transport Retries =0; //don't have to do retries master Transport readTimeout =1500 Console. WriteLine(DateTime. Now ToString(+: Connect to server. return true: catch(Exception ex) Console WriteLine(Date Time. Now ToString(+: Connect process "+ ex StackTrace ==> ex Message) return false return false private bool CheckInternet( //http://msdn.microsoftcom/en-us/library/windows/desktop/aa384702(v=vs.85).aspx MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 9 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com InternetConnection State flag =Internet Connection State. INTERNET CONNECTION LAN return Internet Get ConnectedState(ref flag, O private void timer1 Tickobject sender, EventArgs e) //start timer 1, timer1 Interval= 1000 ms try if(NetworklsOk #region Master to Slave //read AL, AO, DL, DO #endregion else //retry connecting dtNow= date time. now if ((dtNow-dt Disconnect)>TimeSpan. From Seconds(10)) Console. Write Line(Date Time. Now ToString()+ Start connecting ) Networklsok =Connect() if ( NetworklsOk Console.Write Line(Date Time. Now ToString()+ Connecting fail. Wait for retry "); dtDisconnect= DateTime. Now else Console. WriteLine(Date Time. Now ToString()+ Wait for retry connecting"; catch(Exception ex if (ex Source Equals("System")) MOdbus ap|手冊,v1.2 最後編輯2013.10 Page: 10 Copyright2013IcPDasCo.,Ltd.AllRightsReservedE-mail:service@icpdas.com 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论