Loading...

Summer Research Fellowship Programme of India's Science Academies

Development of TVWS system for industrial automation

Abhipray Singh

Indian Institute of Technology Patna, Patna 801103

Dr. Rabindranath Bera

Professor, Department of ECE, Sikkim Manipal Institute of Technology, Sikkim 737136

Abstract

Cellular technology is mostly an urban technology that has been unable to serve rural areas well. This is because the traditional cellular models are not economical for areas with low user density and lesser revenues. It is about time to identify the root cause that has hindered the rural technology growth and analyse the possible options in 5G architecture to address this issue. We propose the development of TV BAND WHITE SPACE (TVWS) link dovetailed with 5G infrastructure for rural coverage and show that it can be used as a means of communication for Industrial Automation. Digitization and intelligentization of manufacturing process is the need for today’s industry. The manufacturing industries are currently changing from mass production to customized production. The rapid advancements in manufacturing technologies and applications in the industries help in increasing productivity. The term Industry 4.0 stands for the fourth industrial revolution which is defined as a new level of organization and control over the entire value chain of the life cycle of products and is geared towards increasingly individualized customer requirements. Presently, the Communication and IOT Industries has been geared up for the 4th Industrial Revolution with 5G TVWS (TV White Space) for rural internet connectivity for unreachable Home. We are developing a 5G TVWS system in the frequency domain around 1 GHz. The TVWS system is used to send Test Signals over a Local Cloud Server to test a DUT (Device under Test) and then display the results that whether the instrument is faulty or not. The whole system would be designed in MATLAB. One of our objective is to achieve INDUSTRY 4 TV Solution with and usable for ALL the Industries with Quality Product facilitated by the production cost saving of 20% or more which is due to 100% utilization of the Test Instrumentation. We are also trying to achieve the same goal using other automation software’s such as keysight, benchVue, SystemVue etc over a 28GHz 5G spectrum if possible.

Abbreviations

Abbreviations 
TVWS TV Band White Space
VSG Vector Signal Generator
GDP Gross Domestic Product
URC Ultra Reliable Communication
URLLC Ultra Reliable Low Latency Communication
M2M Machine to Machine Communication
ARQ Automatic Repeat Request
BS Base Station
EVM Error Vector Magnitude
ACPR Adjacent Channel Power ratio
VSWR Voltage Standing Wave Ratio
DUT Device Under Test

INTRODUCTION

Background/Rationale

What is TVWS

‘White space’ is a label indicating a part of the spectrum, which is available for a radiocommunication application (service, system) at a given time in a given geographical area on a non-interfering / non-protected basis with regard to other services with a higher priority on a national basis. Telecommunication Engineering Centre Radio Division 2 The TV White Space gets its name from the fact that it falls in the spectrum range of 470–890 MHz (ITU- Region 3 Frequency Allocations) which is the band allocated mainly for Broadcasting as the primary service. There are different ways in which TVWS can arise at any given location. The amount of spectrum available in the form of TVWS can vary significantly across different locations and will depend on various factors, including: geographical features, the level of interference potential to the incumbent TV broadcasting service, TV coverage objectives and related planning, and television channels utilization. The availability of TVWS can be mainly categorized as;

i)  Frequency: idle channels of a TV band plan in some geographical areas due to interference avoidance techniques like employing guard bands,

ii)  Height: defines the availability of TVWS at a given area in terms of the height of the TVWS transmission site and its antenna height, in relation to surrounding TV broadcasting coverage reception,

iii)  Space: geographical areas that are outside the current TV coverage and therefore no broadcasting signal is currently present. Also, those geographical separation areas (planned) between locations using the same TV channels,

iv)  Time domain: a TVWS could become available when a broadcasting emission is off-air; hence the licensed broadcasting transmitter is not using the assigned frequency channel during a specific period of time and so making it available for use as TVWS on non-interference basis.

Need for TVWS

Mentioned below are some of the key points that have led to the need for exploring alternative and more efficient ways of spectrum utilization like TVWS:

1) Growing uptake of data-intensive applications and rapid consumer absorption of novel mobile products. Figure 1 shows the rapidly growing mobile broadband usage in the world. In the presence of band-width bottlenecks, potential regulatory choices for addressing such issue would strive to achieve maximum spectrum efficiency through exploring forms of dynamic spectrum access (i.e. cognitive radio, spectrum aggregation), sound alternatives for spectrum sharing, and forward-looking spectrum planning and refarming (and avoidance of spectrum fragmentation).

2) The low consumer base characteristics of rural and remote regions, along with potentially more challenging geographical features, has contributed to the lack of connectivity in such areas. Reaching these regions by means of fixed-line infrastructure is capital-intensive. A wireless alternative is a more viable choice; especially those alternatives than can achieve large coverage areas with fewer base stations. This is where the TVWS technology comes into picture and can prove to be a better choice for pervasive communication infrastructure in far flung and rural areas.

1.png
    Worldwide growth of mobile broadbandTV White Spaces, a pragmatic approach (2013)

    TVWS with 5G architecture

     Based on rural coverage challenges, it is safe to articulate that the rural Internet solution has to be centred on (i) scalable topology, (ii) minimum infrastructure deployment, and (iii) use of unlicensed band. In this context, the use of TV band white space presents itself as a promising technology since it fulfils all these requirements. Over the years, the researchers have carried out miscellaneous experiments to utilize unused TV UHF band for various communication scenarios. The use of TVWS as a networking solution has been materialized in a variety of cases with different preferences, a few of which are listed in Table I. It is pertinent to highlight that to the best of our knowledge, TVWS implementation with infrastructure cost-effectiveness as its core concern has not been proposed till date. Moreover, for cellular networks, the most recent case of TVWS utilization has been demonstrated for Long Term Evolution (LTE) system [10]. In this case, an LTE base station makes use of TVWS and results have shown that downlink speeds up to 45 Mbps can be achieved successfully, albeit with specialized user equipment. The researchers have also advocated TVWS for rural connectivity by making use of optical fiber in selective villages to backhaul the aggregated data to a centralized point [17], however, this arrangement might not be an optimistic investment for a service provider on a large scale. In this context, we propose that the vista of using TVWS for rural Internet access can be utilized with the wireless backhaul of 5G architecture in a cost-effective manner. Since the 5G network makes use of C-RAN architecture due to resource pooling and centralization benefits, hence the Baseband Unit (BBU) of various BSs would be located at a centralized place. Therefore, the MBS cell sites would only house the Remote Radio Head (RRH).

    2.png
      PRIMARY TARGETS IN VARIOUS USE-CASES OF TVWS (Feasibility, Architecture and Cost Considerations of Using TVWS for Rural Internet Access in 5G.)

      Use case of ‘5G IOT’: Industry 4 with cyber automation

      3.png
        Use cases of 5G IOT (5G New Radio: &Things to know)

        Above figure is mainly describe the use cases of 5G, which is discussed below:

        Enhanced Mobile Broadband: The 5G standard promises to usher in the next era of immersive and cloud-connected experiences with faster, more uniform data rates at lower latency and lower cost per bit. The 5G standard will take mobile computing performance to the next level with high-speed, always-on, always-connected internet links with real-time responsiveness. The goal is to reach up to 20 Gb/s peak throughput and 1 Gb/s throughput in high mobility. The need for high-speed internet with real-time responsiveness is seen with virtual reality (VR) and augmented reality (AR) experiences.

        Massive Machine-Type Communications: One of the most anticipated 5G use cases is the ability to seamlessly connect embedded sensors in virtually everything. The industry foresees huge numbers — as many as 20.4 billion — of potential IoT devices in service by 2020. Industrial IoT is one area where 5G will play a major role, enabling smart cities, asset tracking, smart utilities, agriculture, and security infrastructure (e.g. alarms or geofencing).

        Ultra-Reliable Low-Latency Communications: This category includes new services that will transform industries with ultra-reliable/available low-latency links, such as remote control of critical infrastructure, and (popularly) self-driving vehicles. The level of reliability and latency will be vital to smart-grid control, industrial automation, robotics, and drone control and coordination.

        Statement of the Problems

        Basically, we have the following problems that we would need to address:

         ♦ The TVWS whitespace in India is largely unused and hence we have to see the methods most economical and optimal to use the wide bandwidth.

        ♦ We will be using 1 GHz spectrum to as a TVWS link for communication and will try to send data and test signals over this link.

        ♦ Since this link would be used for communication and mainly industrial automation purposes it has to be ultra reliable. This would be achieved by using the 5G architecture for URLLC communication. We have two options to explore increasing the reliability for this communication. The Cognitive Radio method or the ARQ diversity method.

        ♦ We need to record the performance of data transmission over this link.

        ♦ A parallel 28 GHz link would be used to compare performance during runtime to assess impact in performance link during rain etc.

        ♦ We will also try to use Keysight pathwave solutions with the 28Ghz 5G network link for industrial automation to compare its performance with the TVWS link.

        Objectives of the Research

        The main purpose of this project would be develop a reliable communication link in the TV-White Space for commercial use. The purpose of the link would be to provide high speed ultra reliable test signal transmission for industrial automation.

         The overall objective of this research is to tap this unused spectrum for an economical and reliable solution for industry 4.0. This will also help to demonstrate the increasing importance of 5G architecture which is yet to be introduced in India.

        Scope

        When fully completed and established, this link would provide a huge leap for Industry 4.0 solution realization. Industry 4.0 is definitely a revolutionary approach to manufacturing techniques. The concept will push global manufacturers to a new level of optimization and productivity. Not only that, but customers will also enjoy a new level of personally customized products that may have never been available before. The Server- based automation will reduce the cost and increase the speed of production. This will provide as the next step in the industrial revolution.

         Apart from industrial automation, the TVWS also offers rural network coverage. Right now, the Rural India contribute 50% to the GDP but they have no internet access. The TVWS will provide a cost – effective solution to provide 5G network access to them and help in their development.

        LITERATURE REVIEW

        Improving the Transmission Reliability in Smart Factory through Spatial Diversity with ARQ

        Yanan Gao, Tao Yang, Bo Hu, investigated the feasibility of URC over wireless M2M links by proposing a transmission scheme based on spatial diversity with cooperative ARQ. As the multiple antennas are installed at the control BS that is also used for data retransmission, this scheme is especially suited for resource-constrained M2M communications. The analysis describes the challenges of providing reliable real-time communications under the ultra-low latency requirement. It shows that cooperative ARQ improves the link quality significantly, while spatial diversity scheme further boosts the reliability. However, the improvement obtained by the proposed scheme depends on the accuracy of feedback channel. The uncertainty in a feedback channel would reduce the gain. Therefore, future work should focus more on PHY schemes, such as channel estimation, interference cancellation etc. to strengthen the system reliability.

        We on the other hand implemented the Frequency Diversity approach to deal with the reliability issues in the network. This means we will be simultaneously using two links, one the TVWS link and the other would be a28 Ghz 5G link. Depending on transmission quality and reception we would switch automatically between these two links. We can also say this is a part of Cognitive radio approach.

        Feasibility, Architecture and Cost Considerations of Using TVWS for Rural Internet Access in 5G

        Moshsin Khalil Et Al, weighed various options to explore the feasibility of providing Internet access to rural population using 5G network. Even though our research doesn’t focus much on the rural implementation of the TVWS network, we have adapted the 5G architecture explained in the paper. From an implementation viewpoint, main challenge of this approach would be to sustain good network performance in those areas which are although fed through a single gateway base station installed at the suburbs of a city, but also comprise of successive relay points within the network path.

        Industry 4.0-A Glimpse

        Saurabh Vaidya Et Al, focused on the concept of fourth industrial revolution, called Industry 4.0 which allows smart, efficient, effective, individualized and customized production at reasonable cost. With the help of faster computers, smarter machines, smaller sensors, cheaper data storage and transmission could make machines and products smarter to communicate with each and learn from each other. The nine pillars of industry 4.0 explained with the examples to understand the application of Industry 4.0 as well as used to identify the challenges and issues with the implementation of Industry 4.0.

        The main driving force behind the development of the TVWS link has been to establish and realize the Industry 4.0 solution. We will be automating the whole testing and checking process to speed up production using this server-based computation. Data collection from the production lines and optimization of that data for the use of effective machines, Energy Saving and Optimized maintenance scheduling.

        5G Manufacturer Reduces Test Time by 20X (KEYSIGHT PAHWAVE – CASE STUDY)

        Even though our research work predominantly focuses on the TVWS system development, we on the side-line have tried to realize the industry 4.0 realization throughout other softwares such as keysight pathwave solutions over a local cloud server operating on 5G 28GHz spectrum.

        Figure 3 shows the overall test solution architecture. Modular PXI hardware provides the necessary test signals and acquires the time and frequency data needed for the transceiver electronics; including power supplies, filters, digital, and RF sections.

        PathWave Test manages the test sequences across the various test stations. High powered network computers collect the data from the remote test stations to quickly compute the required measurement parameters; EVM, SEM, and ACPR using PathWave. Those results are available in a central database for easy access and analysis via PathWave Analytics software.

        4.png
          PathWave software provides significant test speed and asset utilization benefitsCase Study(2018) , 5G Manufacturer Reduces Test Time by 20X

          The new test architecture is more efficient, with measurement algorithms shared across test stations and easily updated to support new signal formats and hardware. Also, test station software is managed and updated remotely by authorized users. By reconfiguring the software, test stations are modified to test any device across a variety of signal formats from 3G to 5G. Pathwave test software provides fast measurements for every format via the cloud server. The solution increases manufacturing flexibility because each test station is used to test a wider variety of products.

          METHODOLOGY

          Concepts

          Establishing the TVWS link

          1.1 Transmission

          The advent of digital communications systems has led to the development of the Vector Signal generator (VSG), also known as a digital signal generator. These signal generators are capable of generating digitally- modulated radio signals that may use any of a large number of a large number of digital modulation formats. We will be transmitting a modulated carrier wave over the TVWS band and receive it at the other end to analyse its reception.

          1.2 Reception

          A Set-top Box is used at the receiving end that perform since the transmitted signal comes in range of the satellite transmission. The Set-top box performs demodulation and extracts the Baseband from the signal. At the receiver side, signal received by Rx antenna is directly connected to the above below satellite receiver IC. In this receiver, carrier is removed and we are tracing the baseband data from IQ demodulator present in the system.

           

          5.jpg
            Satellite Receiver

            In this way, we transmit a simple carrier wave over the TVWS . The whole process is automated and performed using MATLAB. Detailed explanation is given in the Methods Section.

            2) Sending a Test Signal Over this Link

            Now that the Link is established, we would like to send a Test Signal Over this link. This is done in order to check the reliability and faithfulness of the reception of the Test signal which would be used for carrying out various tests on the devices that are to be checked and verified for defects after their manufacture.

            For this purpose, we would be using Keysight SystemVue Software as a centralized platform. It will generate a test signal which would be downloaded in the VSG and then transmitted and received and further analysed for transmission errors. . The receiver uses a hybrid approach of using a frontend hardware receiver (IF and I-Q Demodulator IC of a satellite receiver) and backend SystemVue software for signal processing. The RF carrier is set to 1.422 GHz which is in the range of the commercial satellite receiver system. At the receiver side, signal received by Rx horn antenna is directly connected to the above commercial satellite receiver IC. In this receiver carrier is removed and we are tracing the baseband data from IQ demodulator present in the system.

            3) Performing a test analysis on a TVWS board for representing Industrial Automation

            Now we would like to see a demonstration of the application of establishing this TVWS link. We would send a test signal to check the various section of a simple TV board and the re-transmit the results back over the same link and compare them with standard outputs to check if the results are correct or faulty. The whole process would be automated and would stand as a example of the application of this link in the Industry.

            6_1.png
              Proposed TVWS board to be tested through automated test setup.

              There are three major parts to check in a TV board:

              A. RF Testing

              B. Digital baseband Testing

              C. Power section testing

              The following figure shows an example of RF Testing and analyzation.

              11.png
                Condition for Fault Detection

                ✸ Black graph representing the actual test data of RF section of TVWS board which will be saved in local or cloud server.

                ✸ Red graph is representing the faulty data.

                ✸ Analyzer tool will match the tested data with this predefined graph.

                ✸If match with the Black curve, the board will pass out from the production line, will mark as tested OK.

                If the curve will not match with black one, any discrepancy will come like RED graph, and then it will go back to the production line as a faulty set.

                Methods

                The TVWS LINK

                In our case, we would be using a Agilent N5-182A (100KHz–3GHz) MSR as shown in Fig.1 to transmit all the required signals over the TVWS bandwidth.

                45.jpg
                  MXG Vector Signal Generator

                  The TVWS bandwidth is of around 400–900 MHz but due to limitations of instruments we instead use a 1GHz carrier signal to establish a link in TVWS domain. This particular frequency is choosen because it is in the range of commercial satellite receiver system which is acting as a receiver part in our setup.

                  56.jpg
                    Horn Antenna

                    Horn- Antennas (As shown above) are used as the transmitting and receiving antennas for our Link.

                    The VSG sends a modulated carrier wave of frequency 1.422667GHz . The frequency is set so because the satellite receiver demodulates the signal with a LO frequency of 11172MHz. The satellite receiver demodulates the signal and outputs a baseband signal of frequency 1KHz .

                     The Satellite receiver system outputs a 1Khz sinewave. The received waveform is then passed through a VSWR meter(fig 11) to filter out any noise and outputs a 1KHz sinewave on a Oscilloscope as shown in figure 12.

                     

                    456.jpg
                      VSWR meter
                      4564.jpg
                        Oscilloscope

                        The Set-Top Box is also connected to a TV display to set the LO frequency of 11172MHz And the sampling speed as 2000Ks/s

                        55.jpg
                          Satellite Receiver Monitor

                          To automate this whole process, we use a MATLAB program. The program first sets the necessary parameters and configures the VSG for transmission. Then, once the signal is transmitted it takes the data from the Oscilloscope and analyses it, calculating it’s frequency and amplitude. Also, it stores the power received in dbM for power loss analysis.

                           The MATLAB code is given below:

                          1. clear all
                          2. % Open a VISA connection or a raw TCPIP/GPIB connection to the instrument(VSG)
                          3. % deviceObject = visa('agilent','TCPIP0::A-N5182A-80056.dhcp.mathworks.com::inst0::INSTR');
                          4. % deviceObject = gpib('agilent',8,19);
                          5. deviceObject = tcpip('172.16.2.240',5025);
                          6. % Set up the output buffer size to hold at least the number of bytes we are
                          7. % transferring
                          8. %deviceObject.OutputBufferSize = 100000;
                          9. % Set output to Big Endian with TCPIP objects, because we do the interleaving
                          10. % and the byte ordering in code. For VISA or GPIB objecs, use littleEndian.
                          11. %deviceObject.ByteOrder = 'bigEndian';
                          12. % Adjust the timeout to ensure the entire waveform is downloaded before a
                          13. % timeout occurs
                          14. %deviceObject.Timeout = 10.0;
                          15. % Open connection to the instrument
                          16. fopen(deviceObject);
                          17. % Some more commands to make sure we don't damage the instrument
                          18. fprintf(deviceObject,':OUTPut:STATe OFF')
                          19. fprintf(deviceObject,':SOURce:RADio:ARB:STATe OFF')
                          20. fprintf(deviceObject,':OUTPut:MODulation:STATe OFF')
                          21. % Set the instrument source freq
                          22. fprintf(deviceObject, 'SOURce:FREQuency 1422667000');
                          23. % Set the source power
                          24. fprintf(deviceObject, 'POWer 10');
                          25. % Write out the ASCII LF character
                          26. %fprintf(deviceObject,'');
                          27. % Wait for instrument to complete download
                          28. % If you see a "Warning: A timeout occurred before the Terminator was reached."
                          29. % warning you will need to adjust the deviceObject.Timeout value until no
                          30. % warning results on execution
                          31. commandCompleted = query(deviceObject,'*OPC?');
                          32. % Some more commands to start playing back the signal on the instrument
                          33. fprintf(deviceObject,':SOURce:RADio:ARB:STATe ON')
                          34. %fprintf(deviceObject,':OUTPut:MODulation:STATe ON')
                          35. fprintf(deviceObject,':OUTPut:STATe ON')
                          36. %fprintf(deviceObject,[':SOURce:RADio:ARB:WAV "ARBI:' ArbFileName '"']);
                          37. % Close the connection to the instrument
                          38. fclose(deviceObject); delete(deviceObject); clear deviceObject
                          39. % Now after setting vsg we acquire data from the CRO
                          40. visaObj = visa('agilent','TCPIP0::172.16.3.65::inst0::INSTR');
                          41. % Set the buffer size
                          42. visaObj.InputBufferSize = 100000;
                          43. % Set the timeout value
                          44. visaObj.Timeout = 10;
                          45. % Set the Byte order
                          46. visaObj.ByteOrder = 'littleEndian';
                          47. % Open the connection
                          48. fopen(visaObj);
                          49. % for i=1:1
                          50. %% Instrument control and data retreival
                          51. % Now control the instrument using SCPI commands. refer to the instrument
                          52. % programming manual for your instrument for the correct SCPI commands for
                          53. % your instrument.
                          54. % Reset the instrument and autoscale and stop
                          55. fprintf(visaObj,':AUTOSCALE');
                          56. fprintf(visaObj,':STOP');
                          57. % Specify data from Channel 1
                          58. fprintf(visaObj,':WAVEFORM:SOURCE CHAN1');
                          59. % Set timebase to main
                          60. fprintf(visaObj,':TIMEBASE:MODE MAIN');
                          61. % Set up acquisition type and count.
                          62. fprintf(visaObj,':ACQUIRE:TYPE NORMAL');
                          63. fprintf(visaObj,':ACQUIRE:COUNT 1');
                          64. % Specify 5000 points at a time by :WAV:DATA?
                          65. fprintf(visaObj,':WAV:POINTS:MODE RAW');
                          66. fprintf(visaObj,':WAV:POINTS 5000');
                          67. % Now tell the instrument to digitize channel1
                          68. fprintf(visaObj,':DIGITIZE CHAN1');
                          69. % Wait till complete
                          70. operationComplete = str2double(query(visaObj,'*OPC?'));
                          71. while ~operationComplete
                          72. operationComplete = str2double(query(visaObj,'*OPC?'));
                          73. end
                          74. % Get the data back as a WORD (i.e., INT16), other options are ASCII and BYTE
                          75. fprintf(visaObj,':WAVEFORM:FORMAT WORD');
                          76. % Set the byte order on the instrument as well
                          77. fprintf(visaObj,':WAVEFORM:BYTEORDER LSBFirst');
                          78. % Get the preamble block
                          79. preambleBlock = query(visaObj,':WAVEFORM:PREAMBLE?');
                          80. % The preamble block contains all of the current WAVEFORM settings.
                          81. % It is returned in the form <preamble_block><NL> where <preamble_block> is:
                          82. % FORMAT : int16 - 0 = BYTE, 1 = WORD, 2 = ASCII.
                          83. % TYPE : int16 - 0 = NORMAL, 1 = PEAK DETECT, 2 = AVERAGE
                          84. % POINTS : int32 - number of data points transferred.
                          85. % COUNT : int32 - 1 and is always 1.
                          86. % XINCREMENT : float64 - time difference between data points.
                          87. % XORIGIN : float64 - always the first data point in memory.
                          88. % XREFERENCE : int32 - specifies the data point associated with
                          89. % x-origin.
                          90. % YINCREMENT : float32 - voltage diff between data points.
                          91. % YORIGIN : float32 - value is the voltage at center screen.
                          92. % YREFERENCE : int32 - specifies the data point where y-origin
                          93. % occurs.
                          94. % Now send commmand to read data
                          95. fprintf(visaObj,':WAV:DATA?');
                          96. % read back the BINBLOCK with the data in specified format and store it in
                          97. % the waveform structure. FREAD removes the extra terminator in the buffer
                          98. waveform.RawData = binblockread(visaObj,'uint16'); fread(visaObj,1);
                          99. % Read back the error queue on the instrument
                          100. instrumentError = query(visaObj,':SYSTEM:ERR?');
                          101. while ~isequal(instrumentError,['+0,"No error"' char(10)])
                          102. disp(['Instrument Error: ' instrumentError]);
                          103. instrumentError = query(visaObj,':SYSTEM:ERR?');
                          104. end
                          105. % Close the VISA connection.
                          106. %% Data processing: Post process the data retreived from the scope
                          107. % Extract the X, Y data and plot it
                          108. % Maximum value storable in a INT16
                          109. maxVal = 2^16;
                          110. % split the preambleBlock into individual pieces of info
                          111. preambleBlock = regexp(preambleBlock,',','split');
                          112. % store all this information into a waveform structure for later use
                          113. waveform.Format = str2double(preambleBlock{1}); % This should be 1, since we're specifying INT16 output
                          114. waveform.Type = str2double(preambleBlock{2});
                          115. waveform.Points = str2double(preambleBlock{3});
                          116. waveform.Count = str2double(preambleBlock{4}); % This is always 1
                          117. waveform.XIncrement = str2double(preambleBlock{5}); % in seconds
                          118. waveform.XOrigin = str2double(preambleBlock{6}); % in seconds
                          119. waveform.XReference = str2double(preambleBlock{7});
                          120. waveform.YIncrement = str2double(preambleBlock{8}); % V
                          121. waveform.YOrigin = str2double(preambleBlock{9});
                          122. waveform.YReference = str2double(preambleBlock{10});
                          123. waveform.VoltsPerDiv = (maxVal * waveform.YIncrement / 8); % V
                          124. waveform.Offset = ((maxVal/2 - waveform.YReference) * waveform.YIncrement + waveform.YOrigin); % V
                          125. waveform.SecPerDiv = waveform.Points * waveform.XIncrement/10 ; % seconds
                          126. waveform.Delay = ((waveform.Points/2 - waveform.XReference) * waveform.XIncrement + waveform.XOrigin); % seconds
                          127. % Generate X & Y Data
                          128. waveform.XData = (waveform.XIncrement.*(1:length(waveform.RawData))) - waveform.XIncrement;
                          129. waveform.YData = (waveform.YIncrement.*(waveform.RawData - waveform.YReference)) + waveform.YOrigin;
                          130. data=[waveform.XData(:),waveform.YData(:)];
                          131. %figure
                          132. % Plot it
                          133. %p = waveform.XData/1000 ;
                          134. plot(waveform.XData,waveform.YData);
                          135. set(gca,'XTick',(min(waveform.XData):waveform.SecPerDiv:max(waveform.XData)))
                          136. xlabel('Time (s)');
                          137. ylabel('Volts (V)');
                          138. title('Oscilloscope Data');
                          139. grid on;
                          140. hold on;
                          141. % end
                          142. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                          143. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                          144. % UNCOMMENT THE BELOW CODE IF YOU DIRECTLY WANT A SNAPSHOT FROM THE CRO
                          145. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                          146. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                          147. % %% Now let's also get the screenshot of the instrument and display it in MATLAB
                          148. % % Grab the screen from the instrument and display it
                          149. % % Set the buffer size to a large value sinze the BMP could be large
                          150. % visaObj.InputBufferSize = 10000000;
                          151. % % reopen the connection
                          152. % fopen(visaObj);
                          153. % % send command and get BMP.
                          154. % fprintf(visaObj,':DISPLAY:DATA? BMP, SCREEN, GRAYSCALE');
                          155. % screenBMP = binblockread(visaObj,'uint8'); fread(visaObj,1);
                          156. % % save as a BMP file
                          157. % fid = fopen('test1.bmp','w');
                          158. % fwrite(fid,screenBMP,'uint8');
                          159. % fclose(fid);
                          160. % % Read the BMP and display image
                          161. % figure; colormap(gray(256));
                          162. % imageMatrix = imread('test1.bmp','bmp');
                          163. % image(imageMatrix);
                          164. % % Adjust the figure so it shows accurately
                          165. % sizeImg = size(imageMatrix);
                          166. % set(gca,'Position',[0 0 1 1],'XTick' ,[],'YTick',[]); set(gcf,'Position',[50 50 sizeImg(2) sizeImg(1)]);
                          167. % axis off; axis image;
                          168. % % Delete objects and clear them.
                          169. % delete(visaObj); clear visaObj;
                          170. fclose(visaObj);

                          Test signal transmission

                          This system is designed in the SystemVue Software.

                          666.png
                            Polyphase Signal Generation 

                            P4 code like PN9 code is used here to test the link performance for its faithful reception.

                            P4 can be expressed as :

                            φi = π (i −1) (i − 1−M)/M, (1)

                            Where φi = ith order phase, M= no. of phase states=10, So Polyphase code length is 10.

                            This code is designed into SystemVue, which is capable to generate the equivalent bit stream of P4 design and then download it into VSG using a downloader application available in SystemVue for the specific hardware model. The hardware generated from P4 code is coming out from RF interface integrated with the VSG and transmitted over the 1GHz link using horn antenna. After IQ demodulation at the receiver, we are visualizing it using a Oscilloscope.

                            The results obtained are showed in Results Section 4.2.

                            Alternative Approach: Using the 28GHz System

                            Upto now we have solely focused on the development of the TVWS link and it’s applications But upto now we haven’t answered the question as to why we are using this link and what are it’s benefits in comparison to some other links available. In our ECE SMIT lab, we already have an established 28GHz 5G setup which can be used for comparison with the TVWS link and we can see if it’s feasible to use it.

                            Test analysis on TVWS baseband board (Using 28 GHz)

                            For this purpose, the 28Ghz 5G network is used. In this part we will only be testing the RF section of the TVWS Board. The VSG will supply a suitable frequency which will then sweep over the bandwidth of the RF section. The Sweeping frequency would help us to get the gain v/s frequency behaviour of the RF section.

                            The Antenna setup is the same as before as shown below:

                            565656.jpg
                              5G Antenna

                               The probes are connected to the RF section of the TV Board and show the output on a Oscilloscope.

                              5676867909.jpg
                                TV Board RF section connected to oscilloscope

                                 Again, the VSG here performs the function of generating a suitable signal and acts as a Input signal to the RF section. The response of the signal is displayed in the Oscilloscope as shown in Fig.18

                                 

                                777777777777777.jpg
                                  MXG Vector Signal generator providing the sweeping frequency
                                  676767865786799.jpg
                                    TV Board RF Output

                                     

                                    As we can see, it is the classical response of an RF section’s gain v/s frequency behaviour and hence the RF section is working correctly. Now this data has to be transmitted from say a factory to the cloud server for checking if it’s authentic or not. For that we again turn to Matlab.

                                    We set a Server Client protocol for this. We set the system such as the Server resides in the factory and we send data of the Oscilloscope from the server side to the Client computer over a local cloud. On the Client side the data is received and Waveform plotted and checked for it’s amplitude and other properties. If everything is OK the product is passed ad we can check for another TV board

                                     In this way we have created a test signal, applied it to our DUT(TV Board) and sent the signal over the local cloud for verification.

                                    The Matlab code for the above operation is given below:

                                    Server Side:

                                    1. %INITIALISING THE NETWORK AT SERVER SIDE FOR SENDING THE ACQUIRED DATA
                                    2. %tcpipServer = tcpip('192.168.205.2',55003,'NetworkRole','Server')
                                    3. tcpipServer = tcpip('172.16.3.106',55003,'NetworkRole','Server')
                                    4. set(tcpipServer,'InputBufferSize',3528);
                                    5. set(tcpipServer,'OutputBufferSize',100000); %8
                                    6. set(tcpipServer,'Timeout',30);
                                    7. fopen(tcpipServer);
                                    8. %tv = 1;
                                    9. %fileID1 = f open('C:\wamp\www\result1.txt','w');
                                    10. %if fileID1==-1
                                    11. % error('can not open file for writing');
                                    12. %end
                                    13. %fileID2 = fopen('C:\wamp\www\result2.txt','w');
                                    14. %if fileID2==-1
                                    15. % error('can not open file for writing');
                                    16. %end
                                    17. x=0:450;
                                    18. while 1
                                    19. %STARTING DATA ACQUISITION FROM CRO
                                    20. visaObj = visa('agilent','TCPIP0::172.16.3.104::inst0::INSTR');
                                    21. % Set the buffer size
                                    22. visaObj.InputBufferSize = 100000;
                                    23. % Set the timeout value
                                    24. visaObj.Timeout = 10;
                                    25. % Set the Byte order
                                    26. visaObj.ByteOrder = 'littleEndian';
                                    27. % Open the connection
                                    28. fopen(visaObj);
                                    29. % for i=1:1
                                    30. %% Instrument control and data retreival
                                    31. % Now control the instrument using SCPI commands. refer to the instrument
                                    32. % programming manual for your instrument for the correct SCPI commands for
                                    33. % your instrument.
                                    34. % Reset the instrument and autoscale and stop
                                    35. %fprintf(visaObj,'*RST; :AUTOSCALE');
                                    36. fprintf(visaObj,':STOP');
                                    37. % Specify data from Channel 1
                                    38. fprintf(visaObj,':WAVEFORM:SOURCE CHAN1');
                                    39. % Set timebase to main
                                    40. fprintf(visaObj,':TIMEBASE:MODE MAIN');
                                    41. % Set up acquisition type and count.
                                    42. fprintf(visaObj,':ACQUIRE:TYPE NORMAL');
                                    43. fprintf(visaObj,':ACQUIRE:COUNT 1');
                                    44. % Specify 5000 points at a time by :WAV:DATA?
                                    45. fprintf(visaObj,':WAV:POINTS:MODE RAW');
                                    46. fprintf(visaObj,':WAV:POINTS 5000');
                                    47. % Now tell the instrument to digitize channel1
                                    48. fprintf(visaObj,':DIGITIZE CHAN1');
                                    49. % Wait till complete
                                    50. operationComplete = str2double(query(visaObj,'*OPC?'));
                                    51. while ~operationComplete
                                    52. operationComplete = str2double(query(visaObj,'*OPC?'));
                                    53. end
                                    54. % Get the data back as a WORD (i.e., INT16), other options are ASCII and BYTE
                                    55. fprintf(visaObj,':WAVEFORM:FORMAT WORD');
                                    56. % Set the byte order on the instrument as well
                                    57. fprintf(visaObj,':WAVEFORM:BYTEORDER LSBFirst');
                                    58. % Get the preamble block
                                    59. preambleBlock = query(visaObj,':WAVEFORM:PREAMBLE?');
                                    60. % The preamble block contains all of the current WAVEFORM settings.
                                    61. % It is returned in the form <preamble_block><NL> where <preamble_block> is:
                                    62. % FORMAT : int16 - 0 = BYTE, 1 = WORD, 2 = ASCII.
                                    63. % TYPE : int16 - 0 = NORMAL, 1 = PEAK DETECT, 2 = AVERAGE
                                    64. % POINTS : int32 - number of data points transferred.
                                    65. % COUNT : int32 - 1 and is always 1.
                                    66. % XINCREMENT : float64 - time difference between data points.
                                    67. % XORIGIN : float64 - always the first data point in memory.
                                    68. % XREFERENCE : int32 - specifies the data point associated with
                                    69. % x-origin.
                                    70. % YINCREMENT : float32 - voltage diff between data points.
                                    71. % YORIGIN : float32 - value is the voltage at center screen.
                                    72. % YREFERENCE : int32 - specifies the data point where y-origin
                                    73. % occurs.
                                    74. % Now send commmand to read data
                                    75. fprintf(visaObj,':WAV:DATA?');
                                    76. % read back the BINBLOCK with the data in specified format and store it in
                                    77. % the waveform structure. FREAD removes the extra terminator in the buffer
                                    78. waveform.RawData = binblockread(visaObj,'uint16'); fread(visaObj,1);
                                    79. % Read back the error queue on the instrument
                                    80. instrumentError = query(visaObj,':SYSTEM:ERR?');
                                    81. while ~isequal(instrumentError,['+0,"No error"' char(10)])
                                    82. disp(['Instrument Error: ' instrumentError]);
                                    83. instrumentError = query(visaObj,':SYSTEM:ERR?');
                                    84. end
                                    85. % Close the VISA connection.
                                    86. %% Data processing: Post process the data retreived from the scope
                                    87. % Extract the X, Y data and plot it
                                    88. % Maximum value storable in a INT16
                                    89. maxVal = 2^16;
                                    90. % split the preambleBlock into individual pieces of info
                                    91. preambleBlock = regexp(preambleBlock,',','split');
                                    92. % store all this information into a waveform structure for later use
                                    93. waveform.Format = str2double(preambleBlock{1}); % This should be 1, since we're specifying INT16 output
                                    94. waveform.Type = str2double(preambleBlock{2});
                                    95. waveform.Points = str2double(preambleBlock{3});
                                    96. waveform.Count = str2double(preambleBlock{4}); % This is always 1
                                    97. waveform.XIncrement = str2double(preambleBlock{5}); % in seconds
                                    98. waveform.XOrigin = str2double(preambleBlock{6}); % in seconds
                                    99. waveform.XReference = str2double(preambleBlock{7});
                                    100. waveform.YIncrement = str2double(preambleBlock{8}); % V
                                    101. waveform.YOrigin = str2double(preambleBlock{9});
                                    102. waveform.YReference = str2double(preambleBlock{10});
                                    103. waveform.VoltsPerDiv = (maxVal * waveform.YIncrement / 8); % V
                                    104. waveform.Offset = ((maxVal/2 - waveform.YReference) * waveform.YIncrement + waveform.YOrigin); % V
                                    105. waveform.SecPerDiv = waveform.Points * waveform.XIncrement/10 ; % seconds
                                    106. waveform.Delay = ((waveform.Points/2 - waveform.XReference) * waveform.XIncrement + waveform.XOrigin); % seconds
                                    107. % Generate X & Y Data
                                    108. waveform.XData = (waveform.XIncrement.*(1:length(waveform.RawData))) - waveform.XIncrement;
                                    109. waveform.YData = (waveform.YIncrement.*(waveform.RawData - waveform.YReference)) + waveform.YOrigin;
                                    110. data=[waveform.XData(:),waveform.YData(:)];
                                    111. %figure
                                    112. % Plot it
                                    113. %subplot(2,1,1);
                                    114. plot(waveform.XData,waveform.YData);
                                    115. set(gca,'XTick',(min(waveform.XData):waveform.SecPerDiv:max(waveform.XData)))
                                    116. xlabel('Time (s)');
                                    117. ylabel('Volts (V)');
                                    118. title('Oscilloscope Data');
                                    119. grid on;
                                    120. hold on;
                                    121. % end
                                    122. fclose(visaObj);
                                    123. %% CONVERTING DATA IN A SINGLE DOUBLE ARRAY FOR TRANSMISSION
                                    124. D = [ waveform.YData waveform.XData'] ;
                                    125. plot(D);
                                    126. ('D');
                                    127. %disp(waveform.YData);
                                    128. fwrite(tcpipServer , D(:) , 'double');
                                    129. end

                                    Client Side:

                                    1. %INITTIALISING THE CLIENT FOR RECEPTION OF WAVEFORM
                                    2. tcpipClient = tcpip('172.16.3.109',55003,'NetworkRole','Client');
                                    3. set(tcpipClient,'OutputBufferSize',3528);
                                    4. set(tcpipClient,'InputBufferSize',100000); %8
                                    5. fopen(tcpipClient);
                                    6. while 1
                                    7. xdata = fread(tcpipClient,441,'double');
                                    8. plot(xdata);
                                    9. end
                                    10. fclose(tcpipClient);
                                    11. %%%%%%%%%%%%%%%
                                    12. %NOW THAT WE haVE ACQUIRED AND RECEIVED A DAT WE CAN APPLY THE TEST
                                    13. %SEQUENCIES AND DO A VARIETY OF TESTS ON THE WAVEFORM AND CHECK IF ITS
                                    14. %FAULTY OR NOT
                                    15. %%%%%%%%%%%%%%%%%%

                                    The recorded waveform is shown in Results Section 4.3

                                    Reliability comparison of 28GHz and 1GHz TVWS on RAIN ATTENUATION

                                    666666666666666666666666666666666.png
                                      Comparison between the two systems

                                      Now we compare the power loss of the 28Ghz transmission system v/s the 1 Ghz TVWS system. During rain, a Matlab Program constantly stores data of 1Ghz at a preset interval and plots it against the data of 28GHz system which is stored simultaneously.

                                      The 28GHz system has its own independent system which records data 24/7 and can be obtained as an XML file. As for the 1Ghz system, we can enter the duration and the frequency of obtaining data. The data is stored on a MAT file and then we can compare these two pieces of information by plotting them side by side.

                                      The data stored her is the power received in dbM so that we can compare that during rain conditions which link has less power loss and hence more reliable.

                                      The Matlab Code for storing the data from CRO is given below:

                                      1. % This example demonstrates generation of a custom waveform and download to
                                      2. % an Agilent RF Signal Generator
                                      3. %
                                      4. % Copyright 2009 The MathWorks, Inc.
                                      5. % Clear the workspace
                                      6. clear all
                                      7. % Open a VISA connection or a raw TCPIP/GPIB connection to the instrument
                                      8. % deviceObject = visa('agilent','TCPIP0::A-N5182A-80056.dhcp.mathworks.com::inst0::INSTR');
                                      9. % deviceObject = gpib('agilent',8,19);
                                      10. deviceObject = tcpip('172.16.2.240',5025);
                                      11. % Set up the output buffer size to hold at least the number of bytes we are
                                      12. % transferring
                                      13. %deviceObject.OutputBufferSize = 100000;
                                      14. % Set output to Big Endian with TCPIP objects, because we do the interleaving
                                      15. % and the byte ordering in code. For VISA or GPIB objecs, use littleEndian.
                                      16. %deviceObject.ByteOrder = 'bigEndian';
                                      17. % Adjust the timeout to ensure the entire waveform is downloaded before a
                                      18. % timeout occurs
                                      19. %deviceObject.Timeout = 10.0;
                                      20. % Open connection to the instrument
                                      21. fopen(deviceObject);
                                      22. % Some more commands to make sure we don't damage the instrument
                                      23. fprintf(deviceObject,':OUTPut:STATe OFF')
                                      24. fprintf(deviceObject,':SOURce:RADio:ARB:STATe OFF')
                                      25. fprintf(deviceObject,':OUTPut:MODulation:STATe OFF')
                                      26. % Set the instrument source freq
                                      27. fprintf(deviceObject, 'SOURce:FREQuency 1422667000');
                                      28. % Set the source power
                                      29. fprintf(deviceObject, 'POWer 10');
                                      30. % Write out the ASCII LF character
                                      31. %fprintf(deviceObject,'');
                                      32. % Wait for instrument to complete download
                                      33. % If you see a "Warning: A timeout occurred before the Terminator was reached."
                                      34. % warning you will need to adjust the deviceObject.Timeout value until no
                                      35. % warning results on execution
                                      36. commandCompleted = query(deviceObject,'*OPC?');
                                      37. % Some more commands to start playing back the signal on the instrument
                                      38. fprintf(deviceObject,':SOURce:RADio:ARB:STATe ON')
                                      39. %fprintf(deviceObject,':OUTPut:MODulation:STATe ON')
                                      40. fprintf(deviceObject,':OUTPut:STATe ON')
                                      41. %fprintf(deviceObject,[':SOURce:RADio:ARB:WAV "ARBI:' ArbFileName '"']);
                                      42. % Close the connection to the instrument
                                      43. fclose(deviceObject); delete(deviceObject); clear deviceObject
                                      44. %% Example to connect to and download waveform data from an oscilloscope
                                      45. % This example connects to an Agilent scope using VISA and sends SCPI
                                      46. % commands to initiate acquisition and downloads the data and displays it
                                      47. % in MATLAB
                                      48. %
                                      49. % Note that this demo requires you to have Agilent IO Libraries installed.
                                      50. % The VISA resource string to the oscilloscope is to be obtained from
                                      51. % Agilent connection expert.
                                      52. %
                                      53. % Copyright 2010 The MathWorks, Inc
                                      54. %% Interface configuration and instrument connection
                                      55. % The second argument to the VISA function is the resource string for your
                                      56. % instrument
                                      57. Check_Point = 0;
                                      58. Loop_Count = 60;
                                      59. Time_Count = 60; %Seconds
                                      60. format shortg
                                      61. c = clock;
                                      62. i = 1;
                                      63. %C = ones(10,1);
                                      64. B = ones(Loop_Count,3);
                                      65. example = matfile('example.mat','Writable',true);
                                      66. save example.mat B -v7.3;
                                      67. visaObj = visa('agilent','TCPIP0::172.16.3.65::inst0::INSTR');
                                      68. % Set the buffer size
                                      69. visaObj.InputBufferSize = 100000;
                                      70. % Set the timeout value
                                      71. visaObj.Timeout = 10;
                                      72. % Set the Byte order
                                      73. visaObj.ByteOrder = 'littleEndian';
                                      74. % Open the connection
                                      75. fopen(visaObj);
                                      76. while i<(Loop_Count+1)
                                      77. format shortg
                                      78. c = clock;
                                      79. %% Instrument control and data retreival
                                      80. % Now control the instrument using SCPI commands. refer to the instrument
                                      81. % programming manual for your instrument for the correct SCPI commands for
                                      82. % your instrument.
                                      83. % Reset the instrument and autoscale and stop
                                      84. %fprintf(visaObj,'*RST; :AUTOSCALE');
                                      85. fprintf(visaObj,':AUTOSCALE');
                                      86. fprintf(visaObj,':STOP');
                                      87. % Specify data from Channel 1
                                      88. fprintf(visaObj,':WAVEFORM:SOURCE CHAN1');
                                      89. % Set timebase to main
                                      90. fprintf(visaObj,':TIMEBASE:MODE MAIN');
                                      91. % Set up acquisition type and count.
                                      92. fprintf(visaObj,':ACQUIRE:TYPE NORMAL');
                                      93. fprintf(visaObj,':ACQUIRE:COUNT 1');
                                      94. % Specify 5000 points at a time by :WAV:DATA?
                                      95. fprintf(visaObj,':WAV:POINTS:MODE RAW');
                                      96. fprintf(visaObj,':WAV:POINTS 5000');
                                      97. % Now tell the instrument to digitize channel1
                                      98. fprintf(visaObj,':DIGITIZE CHAN1');
                                      99. % Wait till complete
                                      100. operationComplete = str2double(query(visaObj,'*OPC?'));
                                      101. while ~operationComplete
                                      102. operationComplete = str2double(query(visaObj,'*OPC?'));
                                      103. end
                                      104. % Get the data back as a WORD (i.e., INT16), other options are ASCII and BYTE
                                      105. fprintf(visaObj,':WAVEFORM:FORMAT WORD');
                                      106. % Set the byte order on the instrument as well
                                      107. fprintf(visaObj,':WAVEFORM:BYTEORDER LSBFirst');
                                      108. % Get the preamble block
                                      109. preambleBlock = query(visaObj,':WAVEFORM:PREAMBLE?');
                                      110. % The preamble block contains all of the current WAVEFORM settings.
                                      111. % It is returned in the form <preamble_block><NL> where <preamble_block> is:
                                      112. % FORMAT : int16 - 0 = BYTE, 1 = WORD, 2 = ASCII.
                                      113. % TYPE : int16 - 0 = NORMAL, 1 = PEAK DETECT, 2 = AVERAGE
                                      114. % POINTS : int32 - number of data points transferred.
                                      115. % COUNT : int32 - 1 and is always 1.
                                      116. % XINCREMENT : float64 - time difference between data points.
                                      117. % XORIGIN : float64 - always the first data point in memory.
                                      118. % XREFERENCE : int32 - specifies the data point associated with
                                      119. % x-origin.
                                      120. % YINCREMENT : float32 - voltage diff between data points.
                                      121. % YORIGIN : float32 - value is the voltage at center screen.
                                      122. % YREFERENCE : int32 - specifies the data point where y-origin
                                      123. % occurs.
                                      124. % Now send commmand to read data
                                      125. fprintf(visaObj,':WAV:DATA?');
                                      126. % read back the BINBLOCK with the data in specified format and store it in
                                      127. % the waveform structure. FREAD removes the extra terminator in the buffer
                                      128. waveform.RawData = binblockread(visaObj,'uint16'); fread(visaObj,1);
                                      129. % Read back the error queue on the instrument
                                      130. instrumentError = query(visaObj,':SYSTEM:ERR?');
                                      131. while ~isequal(instrumentError,['+0,"No error"' char(10)])
                                      132. disp(['Instrument Error: ' instrumentError]);
                                      133. instrumentError = query(visaObj,':SYSTEM:ERR?');
                                      134. end
                                      135. % Close the VISA connection.
                                      136. %% Data processing: Post process the data retreived from the scope
                                      137. % Extract the X, Y data and plot it
                                      138. % Maximum value storable in a INT16
                                      139. maxVal = 2^16;
                                      140. % split the preambleBlock into individual pieces of info
                                      141. preambleBlock = regexp(preambleBlock,',','split');
                                      142. % store all this information into a waveform structure for later use
                                      143. waveform.Format = str2double(preambleBlock{1}); % This should be 1, since we're specifying INT16 output
                                      144. waveform.Type = str2double(preambleBlock{2});
                                      145. waveform.Points = str2double(preambleBlock{3});
                                      146. waveform.Count = str2double(preambleBlock{4}); % This is always 1
                                      147. waveform.XIncrement = str2double(preambleBlock{5}); % in seconds
                                      148. waveform.XOrigin = str2double(preambleBlock{6}); % in seconds
                                      149. waveform.XReference = str2double(preambleBlock{7});
                                      150. waveform.YIncrement = str2double(preambleBlock{8}); % V
                                      151. waveform.YOrigin = str2double(preambleBlock{9});
                                      152. waveform.YReference = str2double(preambleBlock{10});
                                      153. waveform.VoltsPerDiv = (maxVal * waveform.YIncrement / 8); % V
                                      154. waveform.Offset = ((maxVal/2 - waveform.YReference) * waveform.YIncrement + waveform.YOrigin); % V
                                      155. waveform.SecPerDiv = waveform.Points * waveform.XIncrement/10 ; % seconds
                                      156. waveform.Delay = ((waveform.Points/2 - waveform.XReference) * waveform.XIncrement + waveform.XOrigin); % seconds
                                      157. % Generate X & Y Data
                                      158. waveform.XData = (waveform.XIncrement.*(1:length(waveform.RawData))) - waveform.XIncrement;
                                      159. waveform.YData = (waveform.YIncrement.*(waveform.RawData - waveform.YReference)) + waveform.YOrigin;
                                      160. data=[waveform.XData(:),waveform.YData(:)];
                                      161. %figure
                                      162. % Plot it
                                      163. D = [waveform.YData waveform.XData'] ;
                                      164. len = length(waveform.YData);
                                      165. fs = 44100;
                                      166. n = 0:len-1;
                                      167. N=n*fs/(len-1);
                                      168. y = fft(waveform.YData);
                                      169. %subplot(4,1,1);
                                      170. %plot(N,abs(y));
                                      171. %grid on;
                                      172. disp(max(abs(y)));
                                      173. %dBm = 10*log10((max(abs(y))));
                                      174. %disp(dBm)
                                      175. %plot(D);
                                      176. %subplot(4,1,2);
                                      177. %plot(waveform.XData,waveform.YData);
                                      178. %drawnow;
                                      179. %set(gca,'XTick',(min(waveform.XData):waveform.SecPerDiv:max(waveform.XData)))
                                      180. %xlabel('Time (s)');
                                      181. %ylabel('Volts (V)');
                                      182. %title('Oscilloscope Data');
                                      183. %grid on;
                                      184. %hold on;
                                      185. [Pxx,f] = pwelch(waveform.YData,[],[],[],44100);
                                      186. newdata = [f,Pxx];
                                      187. %subplot(4,1,3);
                                      188. %plot(f,Pxx);
                                      189. %grid on;
                                      190. [~,loc] = max(Pxx);
                                      191. FREQ_ESTIMATE = f(loc);
                                      192. %FREQ_ESTIMATE = FREQ_ESTIMATE/43.0064;
                                      193. fprintf('Frequency = %g kHz \n',FREQ_ESTIMATE);
                                      194. fprintf('Amplitude = %g V \n',(max(waveform.YData)-min(waveform.YData)));
                                      195. RMS = (max(waveform.YData)-min(waveform.YData))*0.3535;
                                      196. pow = (RMS*RMS)/50;
                                      197. dBm = 10*log10(1000*pow);
                                      198. disp(dBm);
                                      199. %save('pqfile1.mat','dBm');
                                      200. example.B(i,1) =dBm ;
                                      201. example.B(i,2) = FREQ_ESTIMATE;
                                      202. example.B(i,3) = c(4)+(c(5)/100)+ (c(6)/10000);
                                      203. if example.B(i,1) < 0.3
                                      204. Check_Point = 1;
                                      205. end
                                      206. i= i+1;
                                      207. disp(Check_Point);
                                      208. pause(Time_Count);
                                      209. %disp(max(Pxx)*10000);
                                      210. %csvwrite('newsrf.csv',FREQ_ESTIMATE,0,0);
                                      211. %csvwrite('newsrf.csv',(max(waveform.YData)-min(waveform.YData)),1,1);
                                      212. end
                                      213. %subplot(4,1,4);
                                      214. plot(example.B(:,3),example.B(:,1));
                                      215. copyfile example.mat SRFP_2019
                                      216. cd SRFP_2019
                                      217. File_Name = input('File_Name' , 's');
                                      218. movefile('example.mat',File_Name);
                                      219. % %% Now let's also get the screenshot of the instrument and display it in MATLAB
                                      220. % % Grab the screen from the instrument and display it
                                      221. % % Set the buffer size to a large value sinze the BMP could be large
                                      222. % visaObj.InputBufferSize = 10000000;
                                      223. % % reopen the connection
                                      224. % fopen(visaObj);
                                      225. % % send command and get BMP.
                                      226. % fprintf(visaObj,':DISPLAY:DATA? BMP, SCREEN, GRAYSCALE');
                                      227. % screenBMP = binblockread(visaObj,'uint8'); fread(visaObj,1);
                                      228. % % save as a BMP file
                                      229. % fid = fopen('test1.bmp','w');
                                      230. % fwrite(fid,screenBMP,'uint8');
                                      231. % fclose(fid);
                                      232. % % Read the BMP and display image
                                      233. % figure; colormap(gray(256));
                                      234. % imageMatrix = imread('test1.bmp','bmp');
                                      235. % image(imageMatrix);
                                      236. % % Adjust the figure so it shows accurately
                                      237. % sizeImg = size(imageMatrix);
                                      238. % set(gca,'Position',[0 0 1 1],'XTick' ,[],'YTick',[]); set(gcf,'Position',[50 50 sizeImg(2) sizeImg(1)]);
                                      239. % axis off; axis image;
                                      240. % % Delete objects and clear them.
                                      241. % delete(visaObj); clear visaObj;
                                      242. fclose(visaObj);

                                      The plot is shown in results section 4.4.

                                      RESULTS AND DISCUSSION

                                      Results obtained for the TVWS link Setup

                                      999999999999999999999999.png
                                        Matlab output from received signal

                                        The above fig. demonstrates the waveform that we obtained after running the MATLAB program. We have sent this waveform in the TVWS band in clear channel conditions. As we can clearly see, we have got a near-perfect sinewave of frequency 1KHz.

                                        Hence, we can purposefully say that we have established a rudimentary TVWS link through which we can reliably transmit and receive simple data and it can be used for further purposes. This can be made better and used for more and more purposes.

                                        Results for the Test Signal Transmission over 1GHz link

                                          NB-IoT waveform is generated using SystemVue and realized in VSG, transmitted and received through the 1 GHz Link. The corresponding spectrum out of the hardware LINK set up are recorded.

                                        90909090.png
                                          NB-IoT Transmitted and Received spectrum 

                                          As we can see the spectrums are almost similar with little variations due to transmission losses. The results for the actual received waveform is shown below:

                                           

                                          000000000000009999999999999.png
                                            Polyphase Code Transmission and Reception

                                            As we can see, the received waveform have some losses, however behaviour of the waveform has been almost preserved. Hence, we can say that on further development we can improve the performance of the reception of the test signal and then it can be used for transmitting test signals and eventually developing into a reliable link for industrial communication

                                            Results for TVWS Board Testing

                                             The following result was obtained and plotted on the client side:

                                            88888888888888888888888888.jpg
                                              Matlab output from TVWS Board RF section

                                              As it can be clearly seen, we have obtained the correct waveform that has to be expected from the DUT. Now that we have the waveform, all forms of analysis can be done on this and we can obtain the amplitude, frequency etc. Hence, the 28GHz link is also a reliable way to send and receive test signals and data for its application in the industry sector.

                                              Results on Rain Comparison

                                               The behaviour and the rain attenuation for both the links are estimated and plotted in figure 8. It is interesting to note that rain attenuation is severe in case of 28 GHz as compared to 1 GHz link. This is exploited in the design of the combined diversity reception scheme which we talked during our discussion of the literature review where the rain intensity is getting sensed at 1 GHz and switched to 28 GHz link for excellent performance during non-rain period whereas, during rain , the data reception and control using 1 GHz link.

                                              hihihihi.png
                                                Attenuation of received signal amplitudes during rain 

                                                From the graph it is clear that the 1GHz link is more reliable during rainy conditions than the 28GHz spectrum. Hence, we can use the 1Ghz as a pilot signal and use it to set a switching threshold in case we want to transmit data from the TVWS system instead of the 5G 28GHz system.

                                                Major steps are taken to reduce the out of band interference and noises from this pilot tone after passing through a 1 KHz narrowband Matched Filter hardware. The rain intensity is getting sensed very accurately with precision by this pilot signal and its amplitude is reduced with rain intensity. Further a threshold detector is implemented on this received pilot when the intensity of the pilot reduced due to rain and automatic switching is implemented to accept data from 1 GHz link instead of 28GHz during severe rain.

                                                4444444444444444444444.png
                                                  Block Diagram of Combined Link at 28/1 GHz

                                                   In the above fig. two links are simultaneously in operation as in figure above both have its own Ethernet Switch whose power will be cut off/on after threshold rain sensing by pilot. Another COMMON Ethernet switch is also used at the output of two individual ethernet switches which will pass either 28GHz or 1 GHz data. The decoders are used after this switch.

                                                   CONCLUSION AND RECOMMENDATIONS

                                                  Conclusion

                                                  • We have seen the development and deployment of the TVWS system and the measure of its reliability. As we have shown it is more reliable than some other alternative systems like the 28GHz 5G system. Also, we have established a switching scheme with increase in reliability by frequency diversion from 28 GHz to 1 GHz during rain. The combined system is highly usable in E-crane operation for a smart factory like TISCO. The percentage outage and reliability improvement will be measured in future. Additionally, the Latency will be improved in the same link by adapting mini slots in 5G NR operation which will be tried in future.
                                                  • The TVWS link is especially a more better option for industries due to its low traffic and high reliability even during extreme weather conditions.

                                                  Future Scope

                                                  As we have seen, we were not able to replicate a perfect signal while sending a test signal over the TVWS link. This is a shortcoming that needs rapid improvement. One of the main reasons was the use of different instruments that led to a difference in the respective Sample Rates and it would create even more problem while transferring a junk of data

                                                  Also, in our project we have just sent a Test Signal. Once the link is fully developed, we will be able to send more commands and complex signals like video audio over this link. Hence, boosting the development of our Industrial Solution.

                                                  Paper Publication

                                                  We have also submitted a paper titled 5G URLLC Communication System with Cognitive Radio and Frequency Diversity Reception for improving Reliability in Smart Factory E-cranes operation for the IMARC confrence 2019 and to be published at the confrence, organised by IIT Bombay and IEEE.
                                                  Authors: Jayanta Kumar Ray, Abhipray Singh, Quazi Md. Alfred, Subhankar Shome and Rabindranath Bera.

                                                  REFERENCES

                                                  1.)  Mohsin Khalil, Junaid Qadir, Oluwakayode Onireti, Muhammad Ali Imran, Shahzad Younis,Feasibility, Architecture and Cost Considerations of Using TVWS for Rural Internet Access in 5G, IEEE ICIN (5GUA), 2017 .

                                                  2.)  R.R. Gulati, Monochrome and Colour Television (Second Edition), NEW AGE INTERNATIONAL (P) LIMITED, PUBLISHERS, 2005.

                                                  3.)  Yanan Gao, Tao Yang, Bo Hu , Improving the Transmission Reliability in Smart Factory through Spatial Diversity with ARQ , IEEE/CIC International Conference on Communications in China (ICCC), 2016

                                                  4.)  Saurabh Vaidya, Prashant Ambad, Santosh Bhosle, Industry 4.0 – A Glimpse, Science Direct 2nd International Conference on Materials Manufacturing and Design Engineering, 2018.​

                                                  5.)   Chen, J. Wan, L. Shu, P. Li, M. Mukherjee and B. Yin, Smart Factory of Industry 4.0: Key Technologies, Application Case, and Challenges,  IEEE Access, 2018.

                                                  6.)  Kesavan Ulaganathen1, Tharek Adbul Rahman & Md. Rafiqul Islam, Rain Fade Mitigation Using Frequency Diversity Technique, Advanced Journal of Technical and Vocational Education 93-96, 2017

                                                  7.) https://connectlp.keysight.com/APM_eng_DTS-Other_Pathwave-Analytics

                                                  ACKNOWLEDGEMENTS

                                                  At the outset, I would like to thank Dr. Rabindranath Bera for the continuous guidance and patience. I had lot of things to learn and the amount of knowledge and experience I have gained from him is matchless. He was encouraging throughout the project. I owe my sincere thanks to him.

                                                   I thank Mr. Shubhankar Shome for his guidance in lab and overall for making it a great learning experience. I would thank him for helping me at every step. I would like to also thank Mr. Preman Chettri for his support and discussions.

                                                   I also thank Indian Academy of Sciences for their support throughout the programme and for giving me the great opportunity. The learning experience would have not been possible without this programme.

                                                   I would also like to thank Sikkim Manipal Institute of Technology for providing accommodation and other requirements hence making my stay comfortable.

                                                  Source

                                                  • Fig 1: Marco Zennaro & Ermanno Pietrosemoli (2013). TV White Spaces, a pragmatic approach . ICTP
                                                  • Fig 2: Mohsin Khalil, Junaid Qadir, Oluwakayode Onireti, Muhammad Ali Imran, Shahzad Younis(2017).Feasibility, Architecture and Cost Considerations of Using TVWS for Rural Internet Access in 5G. IEEE ICIN 2017.
                                                  • Fig 3: Mombasawala Mohmedsaaed(2018),5G New Radio: &Things to know
                                                  • Fig 4: Case Study(2018) , 5G Manufacturer Reduces Test Time by 20X , Keysight Technologies
                                                  More
                                                  Written, reviewed, revised, proofed and published with