{"id":1022,"date":"2011-07-30T21:58:33","date_gmt":"2011-07-30T20:58:33","guid":{"rendered":"http:\/\/netrix.org.pl\/?page_id=1022"},"modified":"2024-03-15T21:39:22","modified_gmt":"2024-03-15T20:39:22","slug":"modbus-emulator","status":"publish","type":"page","link":"http:\/\/netrix.org.pl\/index.php\/programy\/modbus-emulator\/","title":{"rendered":"Modbus Emulator"},"content":{"rendered":"<p><a href=\"http:\/\/netrix.org.pl\/wp-content\/2011\/01\/modbusEmulator.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; margin: 5px 5px 6px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;\" title=\"modbusEmulator\" src=\"http:\/\/netrix.org.pl\/wp-content\/2011\/01\/modbusEmulator_thumb.png\" alt=\"modbusEmulator\" width=\"244\" height=\"169\" align=\"right\" border=\"0\" \/><\/a><\/p>\n<p>Jest to aplikacja napisana w ramach zaj\u0119\u0107 z Informatycznych System\u00f3w Sterowania. Program jest emulatorem urz\u0105dze\u0144 master i slave protoko\u0142u\u00a0<a href=\"http:\/\/pl.wikipedia.org\/wiki\/Modbus\" target=\"_blank\" rel=\"noopener\">Modbus<\/a>\u00a0 komunikuj\u0105cych si\u0119 za pomoc\u0105 po\u0142\u0105czenia szeregowego (porty szeregowe RS-232).<\/p>\n<p>Aplikacja jest napisana w C# i korzysta z Windows Forms oraz klasy SerialPort (kt\u00f3ra za\u0142atwia ca\u0142\u0105 komunikacj\u0119 po porcie COM). Ca\u0142o\u015b\u0107 implementacji bazuje na specyfikacji Modbusa znajduj\u0105cej si\u0119 <a href=\"www.modbus.org\/docs\/Modbus_Application_Protocol_V1_1b.pdf\" target=\"_blank\" rel=\"noopener\">tutaj<\/a>. Opr\u00f3cz tego podczas pisania wykorzystywa\u0142em r\u00f3wnie\u017c kilka aplikacji:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.eterlogic.com\/Products.VSPE.html\" target=\"_blank\" rel=\"noopener\">Virtual Serial Ports Emulator (VSPE)<\/a> \u2013 aplikacja emuluj\u0105ca pary port\u00f3w COM,<\/li>\n<li><a href=\"http:\/\/www.modbustools.com\/modbus_poll.asp\" target=\"_blank\" rel=\"noopener\">Modbus Poll<\/a> \u2013 aplikacja emuluj\u0105ca urz\u0105dzenie Master dla protoko\u0142u Modbus,<\/li>\n<li><a href=\"http:\/\/www.modbustools.com\/modbus_slave.asp\" target=\"_blank\" rel=\"noopener\">Modbus Slave<\/a> \u2013 aplikacja emuluj\u0105ca urz\u0105dzenie Slave dla protoko\u0142u Modbus.<\/li>\n<\/ul>\n<p>Dwie ostatnie aplikacje pos\u0142u\u017cy\u0142y mi jako referencja implementacji protoko\u0142u, poniewa\u017c sama specyfikacja nie zawiera informacji o sposobie liczenia CRC i LRC, wi\u0119c trzeba by\u0142o do tego doj\u015b\u0107 metod\u0105 pr\u00f3b, b\u0142\u0119d\u00f3w i Google.<\/p>\n<p>Program obs\u0142uguje sze\u015b\u0107 pierwszych, publicznych funkcji protoko\u0142u Modbus dla obu urz\u0105dze\u0144 (Master i Slave) przesy\u0142aj\u0105c dane w trybie ASCII lub RTU. Urz\u0105dzenie Slave posiada podgl\u0105d rejestr\u00f3w Coils, Discrete Inputs, Input Registers oraz Holding Registers, po 4096 sztuk ka\u017cdy (wszystkie Read-Only, generowane na podstawie seed = 0). Aplikacja posiada r\u00f3wnie\u017c podgl\u0105d wysy\u0142anych i otrzymywanych ramek w postaci logu transmisji.<\/p>\n<p>Program wraz z kodem \u017ar\u00f3d\u0142owym znajduj\u0105 si\u0119 <a href=\"http:\/\/netrix.org.pl\/content\/blog\/ModbusEmulator.7z\">tutaj<\/a> (wymaga .NET Framework 2.0) .<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jest to aplikacja napisana w ramach zaj\u0119\u0107 z Informatycznych System\u00f3w Sterowania. Program jest emulatorem urz\u0105dze\u0144 master i slave protoko\u0142u\u00a0Modbus\u00a0 komunikuj\u0105cych si\u0119 za pomoc\u0105 po\u0142\u0105czenia szeregowego (porty szeregowe RS-232). Aplikacja jest napisana w C# i korzysta z Windows Forms oraz klasy SerialPort (kt\u00f3ra za\u0142atwia ca\u0142\u0105 komunikacj\u0119 po porcie COM). Ca\u0142o\u015b\u0107 implementacji bazuje na specyfikacji Modbusa znajduj\u0105cej [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":15,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/pages\/1022"}],"collection":[{"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1022"}],"version-history":[{"count":5,"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/pages\/1022\/revisions"}],"predecessor-version":[{"id":1639,"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/pages\/1022\/revisions\/1639"}],"up":[{"embeddable":true,"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/pages\/15"}],"wp:attachment":[{"href":"http:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}