Spidometr-LTD

 

Speedometer-LTD

 
   

 

Нужен контроллер для ЧПУ с программным обеспечением на ПК

 ДА
 НЕТ

 

 

 

 

 
   
 

Карта удаленния ввода/вывода по сети EtherCAT

 

 

  • По схеме подключения микросхемы сделать вывод о технической возможности использования указанных выводов микроконтроллера для следующих целей:
    - 16 выводов входа с функцией квадратурного энкодера.
    - 16 выходов
    - 2 аналоговых входа любой дискретности
    - 2 аналоговых выхода – любой дискретности
    - 4 выхода PWM на 16 бит.
    - SPI мост для плат расширения.

  • Реализовать взаимодействие STM32F103 >>> LAN9252
    - Инициализация микросхемы LAN9252
    - Автоматическое определение (интерпретация) данных от LAN на основе уже загруженного ESI со стороны EC master.
    - Автоматическая конфигурация LAN со стороны STM для последующего считывания их в файл ESI со стороны EC master.
    - Реализовать запись конфигурации I2C EEPROM находящейся на стороне LAN со стороны STM.
    - Автоматическая конфигурация ESI LAN на основе подключенных модулей SPI транзит.

Пояснения:
ESI ( SSI, XML) - это файлы конфигурации EC-slave устройств на основе которых мастер интерпретирует данные получаемые от LAN (данные находящиеся у LAN в буфере).
А микроконтроллеру позволяет правильно записывать данные от оконечных устройств в буфер LAN для последующей корректной передачи EC мастеру.
Большинство EC slave устройств позволяют конфигурироваться с обеих сторон. Но чаще используется вариант конфигурирования стороной STM так как она точно знает какая периферия у него имеется. А EC master считывает уже готовую конфигурацию из slave.


Пример считывания конфигурации ЕС мастером из EC slave на отладочном модуле STM32F407:
SM0: PhysAddr 0x1000, DefaultSize 128, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1080, DefaultSize 128, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1100, DefaultSize 2, ControlRegister 0x64, Enable 1
RxPDO 0x1601 "DO RxPDO-Map"
PDO entry 0x7010:01, 1 bit, "LED 1"
PDO entry 0x7010:02, 1 bit, "LED 2"
PDO entry 0x7010:03, 1 bit, "LED 3"
PDO entry 0x7010:04, 1 bit, "LED 4"
PDO entry 0x7010:05, 1 bit, "LED 5"
PDO entry 0x7010:06, 1 bit, "LED 6"
PDO entry 0x7010:07, 1 bit, "LED 7"
PDO entry 0x7010:08, 1 bit, "LED 8"
PDO entry 0x0000:00, 8 bit, "Gap"
SM3: PhysAddr 0x1400, DefaultSize 6, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "DI TxPDO-Map"
PDO entry 0x6000:01, 1 bit, "Switch 1"
PDO entry 0x6000:02, 1 bit, "Switch 2"
PDO entry 0x6000:03, 1 bit, "Switch 3"
PDO entry 0x6000:04, 1 bit, "Switch 4"
PDO entry 0x6000:05, 1 bit, "Switch 5"
PDO entry 0x6000:06, 1 bit, "Switch 6"
PDO entry 0x6000:07, 1 bit, "Switch 7"
PDO entry 0x6000:08, 1 bit, "Switch 8"
PDO entry 0x0000:00, 8 bit, "Gap"
TxPDO 0x1a02 "AI TxPDO-Map"
PDO entry 0x6020:01, 1 bit, "Underrange"
PDO entry 0x6020:02, 1 bit, "Overrange"
PDO entry 0x6020:03, 2 bit, "Limit 1"
PDO entry 0x6020:05, 2 bit, "Limit 2"
PDO entry 0x0000:00, 8 bit, "Gap"
PDO entry 0x1802:07, 1 bit, "TxPDOState"
PDO entry 0x1802:09, 1 bit, "TxPDO Toggle"
PDO entry 0x6020:11, 16 bit, "Analog input"

Скорее всего эти же данные вы должны увидеть и со стороны STM.
Что бы их правильно интерпретировать в LAN находится загруженный туда со стороны мастера ESI SSI EXL файл следующего содержимого.

<?xml version="1.0" ?>
<EtherCATInfo>
<!-- Slave 0 -->
<Vendor>
<Id>9</Id>
</Vendor>
<Descriptions>
<Devices>
 <Device>
<Type ProductCode="#x00009252" RevisionNo="#x00000001">LAN9252-EVB-HBI</Type>
<Name><![CDATA[LAN9252-EVB-HBI]]></Name>
<Sm Enable="1" StartAddress="#x1000" ControlByte="#x26" DefaultSize="128" />
<Sm Enable="1" StartAddress="#x1080" ControlByte="#x22" DefaultSize="128" />
<Sm Enable="1" StartAddress="#x1100" ControlByte="#x64" DefaultSize="2" />
<Sm Enable="1" StartAddress="#x1400" ControlByte="#x20" DefaultSize="6" />
<RxPdo Sm="2" Fixed="1" Mandatory="1">
<Index>#x1601</Index>
<Name>DO RxPDO-Map</Name>
<Entry>
<Index>#x7010</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>LED 1</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>LED 2</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>LED 3</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>4</SubIndex>
<BitLen>1</BitLen>
<Name>LED 4</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>5</SubIndex>
<BitLen>1</BitLen>
<Name>LED 5</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>6</SubIndex>
<BitLen>1</BitLen>
<Name>LED 6</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>7</SubIndex>
<BitLen>1</BitLen>
<Name>LED 7</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x7010</Index>
<SubIndex>8</SubIndex>
<BitLen>1</BitLen>
<Name>LED 8</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>8</BitLen>
</Entry>
</RxPdo>
<TxPdo Sm="3" Fixed="1" Mandatory="1">
<Index>#x1a00</Index>
<Name>DI TxPDO-Map</Name>
<Entry>
<Index>#x6000</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 1</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 2</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>3</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 3</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>4</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 4</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>5</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 5</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>6</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 6</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>7</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 7</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6000</Index>
<SubIndex>8</SubIndex>
<BitLen>1</BitLen>
<Name>Switch 8</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>8</BitLen>
</Entry>
</TxPdo>
<TxPdo Sm="3" Fixed="1" Mandatory="1">
<Index>#x1a02</Index>
<Name>AI TxPDO-Map</Name>
<Entry>
<Index>#x6020</Index>
<SubIndex>1</SubIndex>
<BitLen>1</BitLen>
<Name>Underrange</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>2</SubIndex>
<BitLen>1</BitLen>
<Name>Overrange</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>3</SubIndex>
<BitLen>2</BitLen>
<Name>Limit 1</Name>
<DataType>BIT2</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>5</SubIndex>
<BitLen>2</BitLen>
<Name>Limit 2</Name>
<DataType>BIT2</DataType>
</Entry>
<Entry>
<Index>#x0000</Index>
<BitLen>8</BitLen>
</Entry>
<Entry>
<Index>#x1802</Index>
<SubIndex>7</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDOState</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x1802</Index>
<SubIndex>9</SubIndex>
<BitLen>1</BitLen>
<Name>TxPDO Toggle</Name>
<DataType>BOOL</DataType>
</Entry>
<Entry>
<Index>#x6020</Index>
<SubIndex>17</SubIndex>
<BitLen>16</BitLen>
<Name>Analog input</Name>
<DataType>UINT16</DataType>
</Entry>
</TxPdo>
</Device>
</Devices>
</Descriptions>
</EtherCATInfo>

Это полный список доступных ячеек с указанием их форматов и имен.

На первом этапе необходимо научиться интерпретировать стороной STM данных загруженных со стороны EC-master в виде SII. Начальный файл ESI SII XML предоставляет заказчик.
Находить эти данные в буфере LAN. И забирать/помещать их туда/от туда.

На втором этапе научиться загружать эти данные в LAN со стороны STM.
Считываемый при этом мастером файл SII должен соответствовать исходному.

На третьем этапе необходимо изменять файл конфигурации в зависимости от подключенных/используемых модулей STM + SPI транзит.

Например:
В модуле заказчика имеется:
- 16 бит входных данных
- 16 бит выходных данных
- 1- PWM 16 бит (16 бит частота, 16 бит длительность )
- 2- PWM 16 бит (16 бит частота, 16 бит длительность )
- 3- PWM 16 бит (16 бит частота, 16 бит длительность )
- 4- PWM 16 бит (16 бит частота, 16 бит длительность )
- 1- DAC 12/16 бит (16 бит)
- 2- DAC 12/16 бит (16 бит)
- 1- ADC 12/16 бит (16 бит)
- 2- ADC 12/16 бит (16 бит)
- 16 бит входных данных SPI_T (16 бит данных полученных по расширению SPI_T)

Они будут интерпретированы в файле конфигурации как : ()
SM3: PhysAddr 0x1400, DefaultSize 6, ControlRegister 0x20, Enable 1
RxPDO 0x1601 "DO 1-8-Map"
PDO entry 0x7004:01, 1 bit, "LED 1"
PDO entry 0x7004:02, 1 bit, "LED 2"
PDO entry 0x7004:03, 1 bit, "LED 3"
PDO entry 0x7004:04, 1 bit, "LED 4"
PDO entry 0x7004:05, 1 bit, "LED 5"
PDO entry 0x7004:06, 1 bit, "LED 6"
PDO entry 0x7004:07, 1 bit, "LED 7"
PDO entry 0x7004:08, 1 bit, "LED 8"
PDO entry 0x0000:00, 8 bit, "Gap"
RxPDO 0x1602 "DO 9-16-Map"
PDO entry 0x7005:01, 1 bit, "LED 9"
PDO entry 0x7005:02, 1 bit, "LED 10"
PDO entry 0x7005:03, 1 bit, "LED 11"
PDO entry 0x7005:04, 1 bit, "LED 12"
PDO entry 0x7005:05, 1 bit, "LED 13"
PDO entry 0x7005:06, 1 bit, "LED 14"
PDO entry 0x7005:07, 1 bit, "LED 15"
PDO entry 0x7005:08, 1 bit, "LED 16"
PDO entry 0x0000:00, 8 bit, "Gap"

TxPDO 0x1a00 "DI 1-8-Map"
PDO entry 0x6000:01, 1 bit, "Switch 1"
PDO entry 0x6000:02, 1 bit, "Switch 2"
PDO entry 0x6000:03, 1 bit, "Switch 3"
PDO entry 0x6000:04, 1 bit, "Switch 4"
PDO entry 0x6000:05, 1 bit, "Switch 5"
PDO entry 0x6000:06, 1 bit, "Switch 6"
PDO entry 0x6000:07, 1 bit, "Switch 7"
PDO entry 0x6000:08, 1 bit, "Switch 8"
PDO entry 0x0000:00, 8 bit, "Gap"
TxPDO 0x1a01 "DI 9-16-Map"
PDO entry 0x6001:01, 1 bit, "Switch 9"
PDO entry 0x6001:02, 1 bit, "Switch 10"
PDO entry 0x6001:03, 1 bit, "Switch 11"
PDO entry 0x6001:04, 1 bit, "Switch 12"
PDO entry 0x6001:05, 1 bit, "Switch 13"
PDO entry 0x6001:06, 1 bit, "Switch 14"
PDO entry 0x6001:07, 1 bit, "Switch 15"
PDO entry 0x6001:08, 1 bit, "Switch 16"
PDO entry 0x0000:00, 8 bit, "Gap"

RxPDO 0x1603 "DO 9-16-Map"
PDO entry 0x7006:01, 16 bit, "PWM0_Freq"
PDO entry 0x7006:02, 16 bit, "PWM0_Duration"
PDO entry 0x7006:03, 16 bit, "PWM1_Freq"
PDO entry 0x7006:04, 16 bit, "PWM1_Duration"
PDO entry 0x7006:05, 16 bit, "PWM2_Freq"
PDO entry 0x7006:06, 16 bit, "PWM2_Duration"
PDO entry 0x7006:07, 16 bit, "PWM3_Freq"
PDO entry 0x7006:08, 16 bit, "PWM3_Duration"

RxPDO 0x1604 "DAC-Map"
PDO entry 0x7010:01, 16 bit, "DAC0"
PDO entry 0x7010:02, 16 bit, "DAC1"

RxPDO 0x1605 "DAC-Map"
PDO entry 0x7011:01, 16 bit, "ADC0"
PDO entry 0x7011:02, 16 bit, "ADC1"

TxPDO 0x1a00 "SPI_DI 1-8-Map"
PDO entry 0x6002:01, 1 bit, "Switch 1"
PDO entry 0x6002:02, 1 bit, "Switch 2"
PDO entry 0x6002:03, 1 bit, "Switch 3"
PDO entry 0x6002:04, 1 bit, "Switch 4"
PDO entry 0x6002:05, 1 bit, "Switch 5"
PDO entry 0x6002:06, 1 bit, "Switch 6"
PDO entry 0x6002:07, 1 bit, "Switch 7"
PDO entry 0x6002:08, 1 bit, "Switch 8"
PDO entry 0x0000:00, 8 bit, "Gap"
TxPDO 0x1a01 "SPI_DI 9-16-Map"
PDO entry 0x6003:01, 1 bit, "Switch 9"
PDO entry 0x6003:02, 1 bit, "Switch 10"
PDO entry 0x6003:03, 1 bit, "Switch 11"
PDO entry 0x6003:04, 1 bit, "Switch 12"
PDO entry 0x6003:05, 1 bit, "Switch 13"
PDO entry 0x6003:06, 1 bit, "Switch 14"
PDO entry 0x6003:07, 1 bit, "Switch 15"
PDO entry 0x6003:08, 1 bit, "Switch 16"
PDO entry 0x0000:00, 8 bit, "Gap"