Source code for wire_st_sdk.iolink.iolink_protocol

################################################################################
# COPYRIGHT(c) 2018 STMicroelectronics                                         #
#                                                                              #
# Redistribution and use in source and binary forms, with or without           #
# modification, are permitted provided that the following conditions are met:  #
#   1. Redistributions of source code must retain the above copyright notice,  #
#      this list of conditions and the following disclaimer.                   #
#   2. Redistributions in binary form must reproduce the above copyright       #
#      notice, this list of conditions and the following disclaimer in the     #
#      documentation and/or other materials provided with the distribution.    #
#   3. Neither the name of STMicroelectronics nor the names of its             #
#      contributors may be used to endorse or promote products derived from    #
#      this software without specific prior written permission.                #
#                                                                              #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"  #
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE    #
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE   #
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE    #
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR          #
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF         #
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS     #
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN      #
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)      #
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE   #
# POSSIBILITY OF SUCH DAMAGE.                                                  #
################################################################################


"""iolink_protocol

The iolink_protocol module contains definitions related to the IO-Link protocol.
"""


# IMPORT

from enum import Enum


# COMMAND STRINGS

[docs]class IOLinkProtocol(object): """This class lists the protocol's commands used for IO-Link communication. """ # Data transmission. BYTES_TRANSMISSION = True """If True, transmission of data is by bytes; by characters otherwise.""" # Common sequences. TERMINATOR_SEQ = '\r\n' """Terminator sequence.""" ACK = '1' """Acknowledgement.""" NACK = '0' """Non-Acknowledgement.""" # Commands to the masterboard. COMMAND_START = 'START' + TERMINATOR_SEQ """Open RS485 communication.""" COMMAND_WRC = 'WR_C' + TERMINATOR_SEQ """L6360 write curent mode.""" COMMAND_RDC = 'RD_C' + TERMINATOR_SEQ """L6360 read curent mode.""" COMMAND_WRS = 'WR_S' + TERMINATOR_SEQ """L6360 write sequential mode.""" COMMAND_RDS = 'RD_S' + TERMINATOR_SEQ """L6360 read sequential mode.""" COMMAND_ICM = 'MASTER' + TERMINATOR_SEQ """Master settings mode.""" COMMAND_ICD = 'DEVICE' + TERMINATOR_SEQ """IO-Link communication mode.""" COMMAND_NEW = 'COMMAND NEW' + TERMINATOR_SEQ """Continue programming on the same node.""" COMMAND_END = 'COMMAND END' + TERMINATOR_SEQ """Close actual programming mode and change node.""" COMMAND_ID = 'IDS' + TERMINATOR_SEQ """Get sensors list.""" COMMAND_SP = 'PRM' + TERMINATOR_SEQ """Get sensor's parameter.""" COMMAND_SP1 = 'SENSOR ACC PRM' + TERMINATOR_SEQ """Get accelerometer's data.""" COMMAND_SP2 = 'SENSOR ENV PRM' + TERMINATOR_SEQ """Get evironmental data.""" COMMAND_MEAS1 = 'MSR' + TERMINATOR_SEQ """Request for measurement.""" COMMAND_MEAS1_1 = 'RAW' + TERMINATOR_SEQ """RAW data.""" COMMAND_MEAS1_2 = 'TDM' + TERMINATOR_SEQ """Time domain data.""" COMMAND_MEAS1_3 = 'ENV' + TERMINATOR_SEQ """Environmental data.""" COMMAND_MEAS1_4 = 'FFT' + TERMINATOR_SEQ """Fast Fourier Transform data.""" COMMAND_GET = 'STS' + TERMINATOR_SEQ """Get sensor's status, vibration peak, RMS, or vibration overtoken.""" COMMAND_GET_1 = 'MCU' + TERMINATOR_SEQ """Microcontroller's identifier.""" COMMAND_SET1 = 'SENSOR CNF' + TERMINATOR_SEQ """Sensor configuration parameters.""" COMMAND_SET1_1 = 'SENSOR ACC CNF' + TERMINATOR_SEQ """Sensor configuration accelerometer parameters.""" COMMAND_SET1_2 = 'SENSOR ACC CPT' + TERMINATOR_SEQ """Sensor configuration computation parameters.""" COMMAND_SET = 'SET' + TERMINATOR_SEQ """Set sensor parameter.""" COMMAND_ODR = 'ODR' + TERMINATOR_SEQ """Set accelerometer's output data rate.""" COMMAND_FLS = 'FLS' + TERMINATOR_SEQ """Set accelerometer's full scale.""" COMMAND_SZE = 'SZE' + TERMINATOR_SEQ """Set accelerometer's input array size for FFT.""" COMMAND_SUB = 'SUB' + TERMINATOR_SEQ """Set accelerometer's number of subranges.""" COMMAND_ACQ = 'ACQ' + TERMINATOR_SEQ """Set accelerometer's total acquisition time (all types of analysis).""" COMMAND_OVL = 'OVL' + TERMINATOR_SEQ """Set accelerometer's overlapping percentage between two consecutive FFT analysis.""" # Requests from the masterboard. REQUEST_MOD = 'SELECT MASTER OR DEVICE' + TERMINATOR_SEQ REQUEST_IC = 'INSERT ADDRESS IC :' + TERMINATOR_SEQ REQUEST_OPM = 'INSERT OPERATING MODE :' + TERMINATOR_SEQ REQUEST_RADRS = 'INSERT REGISTER ADDRESS :' + TERMINATOR_SEQ REQUEST_RVAL = 'INSERT REGISTER VALUE :' + TERMINATOR_SEQ REQUEST_PARAMETER_NAME = 'INSERT PARAMETER NAME :' REQUEST_PARAMETER_VALUE = 'INSERT PARAMETER VALUE :' REQUEST_SLAVE = 'INSERT SLAVE NODE :' REQUEST_SENSOR_COMMAND = 'INSERT SENSOR COMMAND :' REQUEST_MEASURE_TYPE = 'INSERT MEASURE TYPE :' # Messages from the masterboard. MESSAGE_PROGRAMMING_DONE = 'PROGRAMMING DONE' + TERMINATOR_SEQ \ + TERMINATOR_SEQ MESSAGE_CONNECTED = 'CONNECTED' + TERMINATOR_SEQ MESSAGE_TRANSMISSION_COMPLETED = 'TRANSMISSION COMPLETED' + TERMINATOR_SEQ MESSAGE_SENSOR_FAILED = 'SENSOR FAILED' + TERMINATOR_SEQ MESSAGE_PARAMETER_UPDATED = 'PARAMETER UPDATED' + TERMINATOR_SEQ MESSAGE_PARAMETER_ERROR = 'PARAMETER ERROR' + TERMINATOR_SEQ
# PARAMETER VALUES
[docs]class ODR(Enum): """Allowed parameters' values for ODR. Accelerometer's output data rate.""" ODR_6660 = 6660 ODR_3330 = 3330 ODR_1660 = 1660 ODR_833 = 833 ODR_416 = 416 ODR_208 = 208 ODR_104 = 104 ODR_52 = 52 ODR_26 = 26 ODR_13 = 13
[docs]class FLS(Enum): """Allowed parameters' values for FLS. Accelerometer's full scale.""" FLS_2 = 2 FLS_4 = 4 FLS_8 = 8 FLS_16 = 16
[docs]class SZE(Enum): """Allowed parameters' values for SZE. Accelerometer's input array size for FFT.""" SZE_256 = 256 SZE_512 = 512 SZE_1024 = 1024 SZE_2048 = 2048
[docs]class SUB(Enum): """Allowed parameters' values for SUB. Accelerometer's number of subranges.""" SUB_8 = 8 SUB_16 = 16 SUB_32 = 32 SUB_64 = 64
# Allowed parameters' values for ACQ. # Accelerometer's total acquisition time. ACQ_MIN = 500 ACQ_MAX = 60000 # Allowed parameters' values for OVL. # Accelerometer's overlapping percentage between two consecutive FFT analysis. OVL_MIN = 5 OVL_MAX = 95