An example of usage of the X-NUCLEO-PLC01A1 Programmable Logic Controller Expansion Board.

Dependencies:   X_NUCLEO_PLC01A1

PLC with the X-NUCLEO-PLC01A1 Expansion Board

This application provides a simple example of usage of the X-NUCLEO-PLC01A1 Programmable Logic Controller Expansion Board.
It shows how to use one PLC connected to the board, driving the status of each output channels according to the status of each input channels.

Files at this revision

API Documentation at this revision

Comitter:
Davidroid
Date:
Thu Jul 13 16:44:30 2017 +0000
Parent:
5:321e4e37ba1c
Child:
7:b7f0a8b4bf19
Commit message:
Aligning to ARM mbed coding style.

Changed in this revision

X_NUCLEO_PLC01A1.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/X_NUCLEO_PLC01A1.lib	Wed Feb 24 10:54:02 2016 +0000
+++ b/X_NUCLEO_PLC01A1.lib	Thu Jul 13 16:44:30 2017 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/ST/code/X_NUCLEO_PLC01A1/#e97bbb97aa43
+http://developer.mbed.org/teams/ST/code/X_NUCLEO_PLC01A1/#de3fc5f5f065
--- a/main.cpp	Wed Feb 24 10:54:02 2016 +0000
+++ b/main.cpp	Thu Jul 13 16:44:30 2017 +0000
@@ -40,7 +40,7 @@
 /* Includes ------------------------------------------------------------------*/
 
 /* expansion board specific header files. */
-#include "x_nucleo_plc01a1_class.h"
+#include "XNucleoPLC01A1.h"
 
 
 /* Definitions ---------------------------------------------------------------*/
@@ -52,12 +52,12 @@
 /* Variables -----------------------------------------------------------------*/
 
 /* Array for input data from Digital Input Termination Device */
-uint8_t inputArray[2] = {0x00, 0x00};
+uint8_t input_array[2] = {0x00, 0x00};
 /* Array for output data to Solid State Relay */
-uint8_t outputArray[2] = {0x00, 0x00};
+uint8_t output_array[2] = {0x00, 0x00};
 
 /* Number of channels in ON state */
-uint8_t Ch_On = 0x00;
+uint8_t ch_on = 0x00;
 
 
 /* Functions -----------------------------------------------------------------*/
@@ -67,9 +67,9 @@
   * @param  None
   * @retval None
 */
-void DigitalInputArrayHandler(X_NUCLEO_PLC01A1 &plc)
+void digital_input_array_handler(XNucleoPLC01A1 &plc)
 {
-  plc.plcInput().DigInpArray_GetInput(inputArray);
+  plc.plc_input().dig_inp_array_get_input(input_array);
 }
 
 /** 
@@ -77,27 +77,27 @@
   * @param None
   * @retval None
 */
-void SsrelayHandler(X_NUCLEO_PLC01A1 &plc)
+void ssrelay_handler(XNucleoPLC01A1 &plc)
 {
-  /* Set outputArray as DigInpArray RxBuffer */
-  outputArray[1] = plc.signalMirror(inputArray[1]);
+  /* Set output_array as DigInpArray RxBuffer */
+  output_array[1] = plc.signal_mirror(input_array[1]);
   
   /* Uncomment the relevant function as required */                                                       
-  //outputArray[1] = plc.signalMirror(0xFF);
-  //outputArray[1] = plc.outputFreeze(0xFF,5000);
-  //outputArray[1] = plc.outputRegroup(0xFF);
-  //Ch_On = plc.inputSum(&outputArray[1],0xFF);
-  //outputArray[1] = plc.setOutput(0xFF);
-  //outputArray[1] = plc.inputsAND(0xFF,0x0F);
-  //outputArray[1] = plc.inputsOR(0xF0,0x0F);
-  //outputArray[1] = plc.inputsNOT(0x00);
-  //outputArray[1] = plc.inputsXOR(0xFF,0x00);
+  //output_array[1] = plc.signal_mirror(0xFF);
+  //output_array[1] = plc.output_freeze(0xFF,5000);
+  //output_array[1] = plc.output_regroup(0xFF);
+  //ch_on = plc.input_sum(&output_array[1],0xFF);
+  //output_array[1] = plc.set_output(0xFF);
+  //output_array[1] = plc.inputs_and(0xFF,0x0F);
+  //output_array[1] = plc.inputs_or(0xF0,0x0F);
+  //output_array[1] = plc.inputs_not(0x00);
+  //output_array[1] = plc.inputs_xor(0xFF,0x00);
   
   /* Parity bits calculation */
-  plc.outputParityBits(outputArray);
+  plc.output_parity_bits(output_array);
  
   /* Send output information to solid state relay */
-  plc.plcOutput().Ssrelay_SetOutput(outputArray);
+  plc.plc_output().ssrelay_set_output(output_array);
 }
 
 void setup(SPI &spi, int bits, int mode = 0, int frequency_hz = 1E6)
@@ -113,26 +113,29 @@
 int main()
 {
     /*----- Initialization. -----*/
+
+    /* Printing to the console. */
+    printf("PLC Control Application Example\r\n\n");
         
     /* Initializing SPI bus. */
     SPI spi(X_NUCLEO_PLC01A1_PIN_SPI_MOSI, X_NUCLEO_PLC01A1_PIN_SPI_MISO, X_NUCLEO_PLC01A1_PIN_SPI_SCLK);
     setup(spi, X_NUCLEO_PLC01A1_PIN_SPI_BITS);
 
     /* Initializing X_NUCLEO_PLC01A1 IO Channels Component. */
-    X_NUCLEO_PLC01A1 plc(X_NUCLEO_PLC01A1_PIN_SPI_CS1, X_NUCLEO_PLC01A1_PIN_SPI_CS2, X_NUCLEO_PLC01A1_PIN_OUT_EN, spi);
+    XNucleoPLC01A1 plc(X_NUCLEO_PLC01A1_PIN_SPI_CS1, X_NUCLEO_PLC01A1_PIN_SPI_CS2, X_NUCLEO_PLC01A1_PIN_OUT_EN, spi);
 
     while(1) {
-        plc.plcInput().SetReadStatus(1);
+        plc.plc_input().set_read_status(1);
         /* Polling input device to refresh input state */
-        if(plc.plcInput().GetReadStatus()) {
+        if(plc.plc_input().get_read_status()) {
 
-            plc.plcInput().SetReadStatus(0);
+            plc.plc_input().set_read_status(0);
 
 #ifdef OUTPUT_CYCLING
-            plc.outputCycling();
+            plc.output_cycling();
 #else
-            DigitalInputArrayHandler(plc);
-            SsrelayHandler(plc);
+            digital_input_array_handler(plc);
+            ssrelay_handler(plc);
 #endif /* OUTPUT_CYCLING */
         }
         wait_ms(10);
--- a/mbed.bld	Wed Feb 24 10:54:02 2016 +0000
+++ b/mbed.bld	Thu Jul 13 16:44:30 2017 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/252557024ec3
\ No newline at end of file
+https://mbed.org/users/mbed_official/code/mbed/builds/22da6e220af6
\ No newline at end of file