AN 이더넷을 새로 시작하는 방법
5025 단어 EthercatArtifactNoise
이 기사는 저자가 판매하는 상품의 일부(PR)다.
다른 설비도 똑같이 처리할 수 있을 것 같지만 본 보도는 저자의 상품을 주제로 한다.
사전에 양해해 주십시오.
이더넷의 시작 방법
이 기사는 며칠 전부터 발매된 아두노가 이더넷으로 차단하는 사용법을 정리했다.
지금까지는'업무 중에 이더넷을 접촉해야 한다','다음 개발에는 이더넷을 사용해야 하기 때문에 입문기를 원한다'는 사용법이라고 생각했습니다.
이번에 발매되는 아두노방패는'처음 사용하는 사람'이 많아질 것 같아 개발 절차와 평가 방법을 총결산했다.
준비기재
· 랩베리 Pi3 또는 4
·아두노 우노(호환기도 가능)
・AN-203 이더넷 차폐 평가 기판[5V용]
https://www.switch-science.com/catalog/6658/
스위치 과학 판매 가격: 1210엔(세 포함)
・AN-2016 7단 x5방패 탑재
https://www.switch-science.com/catalog/6660/
스위치 과학 판매 가격: 4400엔(세 포함)
차리다
RaspberryPi에 표준 OS(Rasbian)를 넣고 부팅 여부를 확인합니다.
모니터를 사용하거나 SSH를 통해 테스트할 수 있습니다.
SSH를 사용하는 경우 Wi-Fi를 통해 로그인하십시오.(이더넷에서 유선 사용)
Arduino에 이더넷 실드를 설치합니다.
머리핀은 구부러지기 쉬워 플러그에 꽂혀 있는 것처럼 보이지 않을 때도 있으니 주의가 필요하다.
Aeduno에 USB 케이블을 연결하여 이더넷이 차단한 POWER-DLED가 켜져 있는지 확인합니다.
■ 연결
Raspberry Pi가 켜지고 OS가 부팅된 상태에서 수행됩니다.
아두노에 USB 케이블을 연결해 LED 불을 확인한다.
이더넷 CAT 실드의 A 측면에 LAN 케이블을 연결합니다.
RaspberryPi의 유선 LAN에 LAN 케이블을 연결합니다.
연결이 잘 되면 이더넷 실드의 ACKLED가 깜박입니다.
이 상태에서 통신할 수 있다.
RaspberryPi 면 설정
■ 라이브러리 및 샘플 프로그램 다운로드
git clone https://github.com/pyEtherCAT/Test-Source
cd Test-Source/
Arduino UNO 면을 설정합니다.■ 샘플 스케치 작성
git clone https://github.com/ArtifactNoise/AN-7SEGx5-Shield-V1
폴더 내의/example/EtherCAT_7SEG/
의 스케치, Arduino에 기록된 경우 동일한 동작입니다.
7단에 숫자 나오면 오케이!
처음에 표시된 숫자는 이더넷 칩이 가지고 있는 RAM 값으로 초기 값이 일정하지 않다.
Arduino 시퀀스에는 다음 내용이 표시됩니다.
===============================================
EtherCAT Testing.
===============================================
ID_REV[0x0050]: 0x92520001
BYTE_TEST[0x0064]: 0x87654321
FREE_RUN[0x009C]: 0x3A3F29D9
Type_Register[0x0000]: 0x000002C0
Product_ID[0x0E00]: 0x92520001
Vendor_ID[0x0E08]: 0x000004D8
Process_Data_RAM[0x1000]: 0x000BCBE3
이더넷 차폐에 설치된 LAN9252의 레지스터 내용이다.실행하다
■ Raspberry Pi 실행 프로그램 사용
이 프로그램은 첫 번째 이더넷이 디바이스의 처리 RAM에서 수치를 기록하고 7세그먼트에 수치를 표시합니다.
sudo python3 pdetatest.py
sudo는 필수입니다.pi@raspberrypi:~/Github/Test-Source$ sudo python3 pdetatest.py
[0x0120]= 0x0002
[0x0120]= 0x0002
[0x0120]= 0x0004
[0x0120]= 0x0008
[0x1000]= 0x1234
[0x1010]= 0x466A86C8
동작 원리!먼저, 이더 CAT가 어떤 구조인지에 대해서는 향후 제작예정인 동인지를 읽어주시기 바랍니다.
여기에는 주의해야 할 부분만 설명한다.
이번에는 래스퍼리피와 아두노를 연결하기 위해'프로그램 램'이라는 영역을 사용해 정보를 주고받고 있다.
우선 이더넷 CAT의 종착역에 4Kbyte의 영역을 부여한다.
장치에서 이 4KByte를 사용하여 데이터를 인계합니다.
이 4KByte는 이더리움 컴파일링과 마이크로컴퓨터 컴파일링의 방해를 방지하기 위해 DPRAM을 사용했다.
따라서 마이크로컴퓨터 측은 비동기 특유의 처리(잠금 대기 또는 WE/RE 로고 처리)를 하지 않고 마이크로컴퓨터는 좋아하는 시간에 RAM을 처리하여 쓸 수 있다.
또 4KByte는 최대 사이즈로 통신량 감축을 고려해 필요한 최소한의 사이즈로 통신한다.
원래 이 부근의 용량과 주소 등은 XML 파일과 EEPROM에 기재해야 하지만, 확인 동작이 비교적 간단할 때는 이를 통해 화제를 추진한다.
예를 들어, 4KByte의 첫 번째 32비트가 7세그먼트 표시 값인 경우
주인의 랩베리피에서
ADDR = 0x1000
DATA[0] = 0xFF & (cnt>>0)
DATA[1] = 0xFF & (cnt>>8)
DATA[2] = 0xFF & (cnt>>16)
DATA[3] = 0xFF & (cnt>>32)
cat.APWR(IDX=0x00, ADP=cat.ADP, ADO=ADDR, DATA=DATA)
Arduino에서는 샘플과 유사한 데이터 집합입니다.addr = Process_Data_RAM;
rdata = LAN9252_EtherCAT_CSR_READ(CSR_SIZE_32bit,addr);
sprintf(S1,"%05lu",rdata);
SEG7_DATA(S1);
Process_Data_RAM은 0x1000호로 통용된다.물론 8비트든 16비트든 8비트 x40의 배열은 4KByte에 수용할 수 있다면 문제없다.
종속을 자유롭게 사용할 수 있는 공간이니 자유롭게 디자인하세요.
그렇다면 4Kbyte의 프로그램 램 영역의 사용법을 결정한 후 다음은 주인 쪽이다.
앞서 말한 바와 같이 원래 조작된 주소는 XML 파일과 EEPROM이 관리하기 때문에 주인은 설정 파일만 읽으면 되는 거죠?이렇게 말하지만
이번에는 설명을 위해 손으로 기술했다.
우선 RaspberryPi에 연결된 1대는 다음과 같은 접근이 가능하다.
이더넷 칩에 기술된 번지의 데이터를 보아라.
이 상태에서는 프로그램 RAM의 시작 부분에서 32비트에 데이터를 씁니다.
어때요?7절에 같은 숫자가 표시되지 않습니까?
★ 동영상을 찍었는데 괜찮으면 보세요!
https://www.youtube.com/watch?v=y9F-PaW4kj4
뒷말
그럼 샘플이 움직였어요.
개조하고 싶어!그거랑 이거랑 연동하고 싶어!
그렇게 생각하시죠?
2020년 총결산 원고로 이더넷용 자작고의 참고서를 만들고 싶다.
절차에 따라 공지했지만 기대해주세요.
그럼
@nonNoise
Reference
이 문제에 관하여(AN 이더넷을 새로 시작하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nonNoise/items/7345a48a30c7fcb7969d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)