Advertisement
Guest User

Programmable powerstrip modbus slave

a guest
Jul 1st, 2013
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.88 KB | None | 0 0
  1. /* -----------------------------------------------------------------------------------
  2. A sketch for the modbus RTU USB power strip based on the arduino-modbus-slave library by Jason Vreeland released on 3/7/2010 under GNU license
  3. Rev: 6 June 2013, by Ayush Sagar for GSoc 2013
  4. -----------------------------------------------------------------------------------*/
  5.  
  6. #include <modbus.h>
  7. #include <modbusDevice.h>
  8. #include <modbusRegBank.h>
  9. #include <modbusSlave.h>
  10.  
  11. /*
  12. 9600 baud to be chosen with 8 data bits, no parity, 1 stop bit (8N1).
  13. */
  14.  
  15. //Setup register bank
  16. //All of the data accumulated will be stored here
  17. modbusDevice regBank;
  18. //Create the modbus slave protocol handler
  19. modbusSlave slave;
  20.  
  21. void setup()
  22. {  
  23.  
  24. //Assign the modbus slave ID.  
  25.   regBank.setId(1);
  26.  
  27. /*
  28. modbus registers follow the following format
  29. 00001-09999  Coils (Digital Outputs), A master device can read and write to these registers
  30. 10001-19999  Discrete Inputs (Digital Inputs), A master device can only read the values from these registers
  31. 30001-39999  Input Registers (Analog Inputs), A master device can only read the values from these registers
  32. 40001-49999  Holding Registers (Analog Outputs), A master device can read and write to these registers
  33.  
  34. Analog values are 16 bit unsigned words stored with a range of 0-32767
  35. Digital values are stored as bytes, a zero value is OFF and any nonzer value is ON
  36.  
  37. */
  38.  
  39. //Add Digital Output registers (Coils) 00001-00016 to the register bank
  40.   regBank.add(1);
  41.   regBank.add(2);
  42.   regBank.add(3);
  43.   regBank.add(4);
  44.   regBank.add(5);
  45.   regBank.add(6);
  46.   regBank.add(7);
  47.   regBank.add(8);
  48.   regBank.add(9);
  49.   regBank.add(10);
  50.   regBank.add(11);
  51.   regBank.add(12);
  52.  
  53. /*
  54. Assign the modbus device object to the protocol handler
  55. This is where the protocol handler will look to read and write
  56. register data.  Currently, a modbus slave protocol handler may
  57. only have one device assigned to it.
  58. */
  59.   slave._device = &regBank;  
  60.  
  61. // Initialize the serial port for coms at 9600 baud  
  62.   slave.setBaud(9600);  
  63.  
  64. // Initialize Aruino IO pins
  65.   pinMode(2, OUTPUT);
  66.   pinMode(3, OUTPUT);
  67.   pinMode(4, OUTPUT);
  68.   pinMode(5, OUTPUT);
  69.   pinMode(6, OUTPUT);
  70.   pinMode(7, OUTPUT);
  71.   pinMode(8, OUTPUT);
  72.   pinMode(9, OUTPUT);
  73.   pinMode(10, OUTPUT);
  74.   pinMode(11, OUTPUT);
  75.   pinMode(12, OUTPUT);
  76.   pinMode(13, OUTPUT);
  77. }
  78. void loop()
  79. {
  80.   digitalWrite(2,regBank.get(1));
  81.   digitalWrite(3,regBank.get(2));
  82.   digitalWrite(4,regBank.get(3));
  83.   digitalWrite(5,regBank.get(4));
  84.   digitalWrite(6,regBank.get(5));
  85.   digitalWrite(7,regBank.get(6));
  86.   digitalWrite(8,regBank.get(7));
  87.   digitalWrite(9,regBank.get(8));
  88.   digitalWrite(10,regBank.get(9));
  89.   digitalWrite(11,regBank.get(10));
  90.   digitalWrite(12,regBank.get(11));
  91.   digitalWrite(13,regBank.get(12));
  92.   slave.run();
  93. }
  94. /*-----------------------------------------------------------------------------------*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement