Library to handle the X-NUCLEO-PLC01A1 Programmable Logic Controller Expansion Board based on the VNI8200XP (solid state relay) and CLT01-38SQ7 (octal digital termination array) components.

Dependents:   HelloWorld_PLC01A1

Programmable Logic Controller Library

Library to handle the X-NUCLEO-PLC01A1 Programmable Logic Controller Expansion Board based on the VNI8200XP (solid state relay) and CLT01-38SQ7 (octal digital termination array) components.

Information

For further details on VNI8200XP (Octal high side smart power solid state relay with serial/parallel selectable interface on chip) please refer to ST's web site.

For further details on CLT01-38SQ7 (High speed digital input current limiter) please refer to ST's web site.

SPI configuration

Pin D3 and D13 providing the SPI serial clock are short-circuited in the X-NUCLEO-PLC01A1 Expansion Board.

Please be aware that you may not drive the base board LED if it is connected to pin D13 (as it happens on STM32 Nucleo boards) or D3, otherwise you will get a conflict.

Platform compatibility

  • STM32 NUCLEO boards have been tested with the default configuration provided by the HelloWorld_PLC01A1 example.

return DSPI_HAL_ReadData(spi_address[obj->instance]);

X-NUCLEO-PLC01A1 board powering and startup

The following steps must be followed to run the X-NUCLEO-PLC01A1:

  1. Plug the X-NUCLEO-PLC01A1 onto a base board
  2. Connect the base board to a PC via a standard Type A / mini (or micro) B USB cable
  3. Download the firmware on the MCU hosted on the base board
  4. Supply 24 V to the X-NUCLEO-PLC01A1 board through the J8 connector
  5. The HelloWorld_PLC01A1 demonstration firmware is ready to run: connect any of the 8 inputs on the J8 connector to see the corresponding output on the J10 connector capable of driving a load (i.e. short-circuit input “x” with the 24 V and connect the corresponding output “x” to a load).
Committer:
apalmieri
Date:
Mon Jul 12 10:09:44 2021 +0000
Revision:
7:5d4336d0e372
Parent:
5:0845d4141a01
Update to mbed-os 6 (mbed-os-6.12.0)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 5:0845d4141a01 1 /**
Davidroid 5:0845d4141a01 2 ******************************************************************************
Davidroid 5:0845d4141a01 3 * @file PLCInput.h
Davidroid 5:0845d4141a01 4 * @author AST/CL
Davidroid 5:0845d4141a01 5 * @version V1.0.0
Davidroid 5:0845d4141a01 6 * @date Feb 4th, 2016
Davidroid 5:0845d4141a01 7 * @brief This file contains the abstract class describing the interface of a
Davidroid 5:0845d4141a01 8 * PLC input component.
Davidroid 5:0845d4141a01 9 ******************************************************************************
Davidroid 5:0845d4141a01 10 * @attention
Davidroid 5:0845d4141a01 11 *
Davidroid 5:0845d4141a01 12 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
Davidroid 5:0845d4141a01 13 *
Davidroid 5:0845d4141a01 14 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 5:0845d4141a01 15 * are permitted provided that the following conditions are met:
Davidroid 5:0845d4141a01 16 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 5:0845d4141a01 17 * this list of conditions and the following disclaimer.
Davidroid 5:0845d4141a01 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 5:0845d4141a01 19 * this list of conditions and the following disclaimer in the documentation
Davidroid 5:0845d4141a01 20 * and/or other materials provided with the distribution.
Davidroid 5:0845d4141a01 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 5:0845d4141a01 22 * may be used to endorse or promote products derived from this software
Davidroid 5:0845d4141a01 23 * without specific prior written permission.
Davidroid 5:0845d4141a01 24 *
Davidroid 5:0845d4141a01 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 5:0845d4141a01 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 5:0845d4141a01 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 5:0845d4141a01 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 5:0845d4141a01 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 5:0845d4141a01 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 5:0845d4141a01 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 5:0845d4141a01 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 5:0845d4141a01 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 5:0845d4141a01 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 5:0845d4141a01 35 *
Davidroid 5:0845d4141a01 36 ******************************************************************************
Davidroid 5:0845d4141a01 37 */
Davidroid 5:0845d4141a01 38
Davidroid 5:0845d4141a01 39
Davidroid 5:0845d4141a01 40 /* Define to prevent from recursive inclusion --------------------------------*/
Davidroid 5:0845d4141a01 41
Davidroid 5:0845d4141a01 42 #ifndef __PLCINPUT_CLASS_H
Davidroid 5:0845d4141a01 43 #define __PLCINPUT_CLASS_H
Davidroid 5:0845d4141a01 44
Davidroid 5:0845d4141a01 45
Davidroid 5:0845d4141a01 46 /* Includes ------------------------------------------------------------------*/
Davidroid 5:0845d4141a01 47
Davidroid 5:0845d4141a01 48 #include <Component.h>
Davidroid 5:0845d4141a01 49
Davidroid 5:0845d4141a01 50
Davidroid 5:0845d4141a01 51 /* Classes ------------------------------------------------------------------*/
Davidroid 5:0845d4141a01 52
Davidroid 5:0845d4141a01 53 /** An abstract class for PLCInput component.
Davidroid 5:0845d4141a01 54 */
Davidroid 5:0845d4141a01 55 class PLCInput : public Component
Davidroid 5:0845d4141a01 56 {
Davidroid 5:0845d4141a01 57 public:
Davidroid 5:0845d4141a01 58
Davidroid 5:0845d4141a01 59 /**
Davidroid 5:0845d4141a01 60 * @brief Get Read Status
Davidroid 5:0845d4141a01 61 * @param None
Davidroid 5:0845d4141a01 62 * @retval Status
Davidroid 5:0845d4141a01 63 */
Davidroid 5:0845d4141a01 64 virtual uint8_t get_read_status(void) = 0;
Davidroid 5:0845d4141a01 65
Davidroid 5:0845d4141a01 66 /**
Davidroid 5:0845d4141a01 67 * @brief Set Read Status
Davidroid 5:0845d4141a01 68 * @param Status
Davidroid 5:0845d4141a01 69 * @retval None
Davidroid 5:0845d4141a01 70 */
Davidroid 5:0845d4141a01 71 virtual void set_read_status(uint8_t status) = 0;
Davidroid 5:0845d4141a01 72
Davidroid 5:0845d4141a01 73 /**
Davidroid 5:0845d4141a01 74 * @brief Get Input Status
Davidroid 5:0845d4141a01 75 * @param None
Davidroid 5:0845d4141a01 76 * @retval Channels status corresponding to 8 inputs
Davidroid 5:0845d4141a01 77 */
Davidroid 5:0845d4141a01 78 virtual uint8_t get_input_data(void) = 0;
Davidroid 5:0845d4141a01 79
Davidroid 5:0845d4141a01 80 /**
Davidroid 5:0845d4141a01 81 * @brief Over Temperature Alarm bit
Davidroid 5:0845d4141a01 82 * @param None
Davidroid 5:0845d4141a01 83 * @retval Overtemperature bit, 1 in case of alarm
Davidroid 5:0845d4141a01 84 */
Davidroid 5:0845d4141a01 85 virtual uint8_t over_temp_alarm(void) = 0;
Davidroid 5:0845d4141a01 86
Davidroid 5:0845d4141a01 87 /**
Davidroid 5:0845d4141a01 88 * @brief Parity Check bits
Davidroid 5:0845d4141a01 89 * @param None
Davidroid 5:0845d4141a01 90 * @retval Parity bits for diagnosing inconsistency in data transmission
Davidroid 5:0845d4141a01 91 */
Davidroid 5:0845d4141a01 92 virtual uint8_t check_parity(void) = 0;
Davidroid 5:0845d4141a01 93
Davidroid 5:0845d4141a01 94 /**
Davidroid 5:0845d4141a01 95 * @brief Under Voltage Alarm bit
Davidroid 5:0845d4141a01 96 * @param None
Davidroid 5:0845d4141a01 97 * @retval Under voltage alarm bit, 1 in case of alarm
Davidroid 5:0845d4141a01 98 */
Davidroid 5:0845d4141a01 99 virtual uint8_t under_volt_alarm(void) = 0;
Davidroid 5:0845d4141a01 100
Davidroid 5:0845d4141a01 101 /**
Davidroid 5:0845d4141a01 102 * @brief Get input information from input channels component
Davidroid 5:0845d4141a01 103 * @param RX buffer
Davidroid 5:0845d4141a01 104 * @retval None
Davidroid 5:0845d4141a01 105 */
Davidroid 5:0845d4141a01 106 virtual void dig_inp_array_get_input(uint8_t *inputArray) = 0;
Davidroid 5:0845d4141a01 107
Davidroid 5:0845d4141a01 108 /**
Davidroid 5:0845d4141a01 109 * @brief Auxiliary method to enable or disable SPI CS pin.
Davidroid 5:0845d4141a01 110 * @param l flag to enable or disable SPI CS pin
Davidroid 5:0845d4141a01 111 */
Davidroid 5:0845d4141a01 112 virtual void set_input_spi(uint8_t l) = 0;
Davidroid 5:0845d4141a01 113
Davidroid 5:0845d4141a01 114 /**
Davidroid 5:0845d4141a01 115 * @brief Destructor.
Davidroid 5:0845d4141a01 116 */
Davidroid 5:0845d4141a01 117 virtual ~PLCInput() {};
Davidroid 5:0845d4141a01 118 };
Davidroid 5:0845d4141a01 119
Davidroid 5:0845d4141a01 120 #endif /* __PLCINPUT_CLASS_H */
Davidroid 5:0845d4141a01 121
Davidroid 5:0845d4141a01 122 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/