2018. 7. 4. 12:18
반응형

에러코드

명칭

상세명칭

10

부족전압             

제어회로전원전압저하             

12

메모리이상1(RAM)      

RAM 이상1                  

13

클럭이상             

제어클럭이상1                 

14

제어처리이상           

제어처리이상1                  

15

메모리이상2 (EEP-ROM) 

전원투입시EEP-ROM 이상           

16

엔코더초기통신이상1       

엔코더초기통신수신데이터이상1        

17

기판이상             

기판이상1                   

19

메모리이상3 (FLASH-ROM)

FLASH-ROM 이상1            

1A

서보모터조합이상         

서보모터조합이상1               

1E

엔코더초기통신이상2       

엔코더고장                   

1F

엔코더초기통신이상3       

엔코더미대응                  

20

엔코더통상통신이상1       

엔코더통신수신데이터이상1           

21

엔코더통상통신이상2       

엔코더데이터이상1               

24

주회로이상            

하드웨어검출회로에의한지락검출         

25

절대위치소실           

서보모터엔코더절대위치소실           

27

초기자극검출이상         

초기자극검출시이상종료(ABEND)      

28

리니어엔코더이상2        

리니어엔코더환경이상              

2A

리니어엔코더이상1        

리니어엔코더이상1-1             

2B

엔코더카운터이상         

엔코더카운터이상1               

30

회생이상             

회생발열량이상                 

31

과속도               

모터회전속도이상/모터속도이상        

32

과전류              

하드웨어검출회로에의한과전류검출(운전중) 

33

과전압              

주회로전압이상                 

35

지령주파수이상          

지령주파수이상                 

37

파라미터이상           

파라미터설정범위이상               

3A

돌입전류억제회로이상       

돌입전류억제이상                 

42

서보제어이상           

위치편차에의한서보제어이상           

45

주회로소자과열          

주회로소자온도이상1              

46

서보모터과열           

서보모터온도이상1               

47

냉각팬이상            

냉각팬정지이상                  

50

과부하1             

운전시과부하서멀이상1              

51

과부하2             

운전시과부하서멀이상3              

52

오차과대             

누적펄스과대1                  

54

발진검지             

발진검지이상                   

56

강제정지이상           

강제정지시오버스피드              

63

STO 타이밍이상        

STO1 OFF                  

70

기계단엔코더           

기계단엔코더초기통신수신데이터이상1     

71

기계단엔코더           

기계단엔코더통신수신데이터이상1        

72

기계단엔코더           

기계단엔코더데이터이상1            

 

미쓰비시 서보 모터 에러코드

반응형
Posted by PureHolic
2018. 7. 2. 22:36
반응형
2010/10/06 - [전기 & 전자] - Panasonic Servo Motor Error Code 1/2 (파나소닉 서보모터 에러코드 )

 

 


 

보호기능

Error code

원인

처치

아날로그
입력 과대
보호

39

아날로그 지령 입력에Pr71 설정치 이상의 전압이 인가되었다.
본보호 기능은 SPR/TRQR/SPL이 유요한 경우에 검출 됩니다. 구체적으로는 이하의 경우에 유효가 됩니다.

Pr71을 정확하게 설정한다. 커넥터의 x5의 접속 상태를 확인한다.
Pr57을 크게한다.
Pr71을 0으로 설정하고, 보호 기능을 무효로 한다.

엡솔루트
시스템 다운
이상 보호

40

17비트 엡솔루트 엔코더에의 공급전원 베터리 전원이 다운해, 내장 콘덴서 전압이 규정치 이하가 되었다.

베터리용 전원을 접속후, 엡솔루트 엔코더의 클리어를 실시한다. 엡솔루트 엔코더를 클리어하지 않으면 알람 클리어는 할 수 없습니다.

엡솔루트
카운터오버
이상 보호

41

17비트 엡솔루트 엔코더의 다회전 카운터가 규정치를 넘었다.

Pr0B 를 적절한 값으로 설정한다.
기계 원점에서의 이동량을 32767회전 이내로 한다.

엡솔루트
오버스피드
이상 보호

42

17비트 엡솔루트 엔코더에서 정전시, 배터리 전원만 공급시에, 모터 회전속도가 규정치를 넘었다.

엔코더측에서의 전원전압(5V±5%)을 확인한다.
커넥터 CN X6의 접속 상태를 확인한다.
엡솔루트 엔코더를 클리어하지 않으면 알람 클리어는 할 수 없습니다.

엡솔루트
1회전카운터
이상 보호

44

17비트 엡솔루트 엔코더가 1회전 카운터의 이상을 검출했다.
2500[p/r] 5개 시리얼 엔코더의 AB상 신호의 이상을 검출했다.

모터를 교환한다

엡솔루트
다회전카운터
이상 보호

45

17비트 엡솔루트 엔코더가 다회전 카운터의 이상을 검출했다.
2500[P/R] 5개 시리얼 엔코더의 AB상의 신호의 이상을 검출했다.

모터를 교환한다.

엡솔루트
스테이터스
이상 보호

47

전원 투입시, 17비트 엡솔루트 엔코더가 규정치 이상으로 회전했다.

전원 투입시에는, 모터가 움직이지 않도록 한다.

엔코더 Z상
이상보호

48

2500[P/R] 5개 시리얼 엔코더의 Z상 펄스 누락을 검출했다.

엔코더의 고장 가능성으로, 모터를 교환한다.

엔코더CS
신호이상
보호

49

2500[P/R] 5개 시리얼 엔코더 CS신호의 논리 이상을 검출했다.

엔코더의 고장 가능성으로, 모터를 교환한다.

외부 스케일
스테이터스0
이상 보호

50

외부 스케일의 에러코드의 비트 0이 1이 되었다.
외부 스케일의 사양을 확인해 주십시오.

이상 원인을 제거한 후, 전면 패널에서 외부 스케일의 에러를 클리어해 주십시오.
그 후, 일단 제어 전원을 차단하고 리셋해 주십시오.

외부 스케일 스테이터스1
이상 보호

51

외부 스케일의 에러코드의 비트 0이 2이 되었다.
외부 스케일의 사양을 확인해 주십시오.

외부 스케일 스테이터스2
이상 보호

52

외부 스케일의 에러코드의 비트 0이 3이 되었다.
외부 스케일의 사양을 확인해 주십시오.

외부 스케일 스테이터스3
이상 보호

53

외부 스케일의 에러코드의 비트 0이 4이 되었다.
외부 스케일의 사양을 확인해 주십시오.

외부 스케일 스테이터스4
이상 보호

54

외부 스케일의 에러코드의 비트 0이 5이 되었다.
외부 스케일의 사양을 확인해 주십시오.

외부 스케일 스테이터스5
이상 보호

55

외부 스케일의 에러코드의 비트 0이 6이 되었다.
외부 스케일의 사양을 확인해 주십시오.

CCWTL입력
과대보호

65

아날로그 지령입력에 ±10V를 초과한 전압이 인가되었다.
CCWTL이 유효시의 파라미터 설정시에 유효가 됨.

커넥터 CN X5의 접속 상태를 확인한다.
CCWTL의 전압을 ±10V 이내로 한다.

CWTL입력
과대 보호

66

아날로그 지령 입력(CWTL : CN X5 18핀)에 ±10를 초과한 전압이 인가되었다.
CWTL이 유효시의 파라미터 설정시에 유효가 됩니다.
위치 제어, 속도 제어, 풀클로즈 제어
Pr03=0의 경우.

커넥터 CN X5의 접속 상태를 확인한다.
CWTL의 전압을 ±10V 이내로 한다.

모터
자동인식
이상보호

95

모터와 앰프가 매치하지 않는다.

앰프에 맞는 모터로 교환한다.

기타이상

기타
번호

제어 회로가 과대한 노이즈 등으로 오동작했다.
앰프의 자기 진단 기능이 작동해 앰프 내부에 어떠한 이상이 발생했다.

한번 전원을 끄고, 재투입한다.
그래도, 표시가 나오고 에러가 발생하는 경우, 고장가능성이 있습니다.
사용을 중단하고, 모토, 앰프를 교환해 주십시오. 구입처에 조사(수리) 반환한다.


반응형
Posted by PureHolic
2018. 7. 2. 22:35
반응형
2010/10/17 - [전기 & 전자] - Panasonic Servo Motor Error Code 2/2 (파나소닉 서보모터 에러코드 )





보호기능

Error code

원인

처치

제어전원
부족
전압보호

11

제어 전원 컨버터부의 P-N간 전압이 저하해, 규정치 이하로 되었다.
1.전원 전압이 낮다. 순간 정전 발생
2.전원 용량 부족 주전원 온시의 돌입전류로 인해, 전원전압이 저하되었다.
3.앰프 고장(회로가 고장)

커넥터(L1C,L2C) 및 단자대(R,T) T선 사이의 전압을 측정
1.전원 전압의 용량 업. 전원을 바꾼다.
2.전원 용량을 업한다.
3.신품 앰프로 교체한다.

과전압
보호

12

컨버터부의 P-N사이의 전압이 규정치 이상으로 되었다.
1.전원 전압이 허용 입력 전압 범위를 넘었다. 진상 콘덴서나, UPS(무정전 전원장치)에 의한 전압의 이상
2.회생저항의 단선
3.외장형 회생저항이 부적절해 회생 에너지를 흡수할 수 없다.
4.앰프 고장(회로가 고장)

커넥터(L1,L2,L3)의 선간의 전압을 측정
1.바른 전압을 입력한다. 진상콘덴서를 제거한다.
2.앰프의 단자 P-B사이에 외장형 저항의 저항치를 TESTER로 측정해, 무한이면 단선. 외장형 저항을 교환한다.
3.지정된 회생저항치, W수로 변경한다.
4.신품 앰프로 바꾼다.

주전원
부족
전압보호

13

Pr65(주전원 오프시 LV트립 선택)=1의 경우에, L1-L3사이의 Pr6D(주전원 오프 검출시간)에 설정된 시간 이상 순간 정전했다. 혹은 서보온 중에 주전원 컨버터부의 P-N사이 전압이 저하해, 규정치 이하로 되었다.
1.전원 전압이 낮다. 순간 정전 발생
2.전원용량부족 주전원 온시의 돌입전류로 인해, 전원전압이 저하했다.
3.결상 3상 입력 사양의 앰프가 단상 전원으로 운전되었다.
4.앰프고장 (회로가 고장) OTL…..

커넥터(L1,L2,L3)의 선간 전압을 측정
1.전원의 전압의 용량 업,전원을 바꾼다.주전원의 전자접촉기가 떨어진 원인을 제거하고, 다시 전원을 투입한다.
2.Pr6D (주전원 오프 검출 시간) 의 설정을 길게 해 본다. 전원의 각상을 정확하게 설정한다.
3.전원용량을 업한다.
4.전원의 각상을 정확하게 접속한다.
5.신품앰프로 바꾼다…………….

과전류
보호

14

컨버터부에 흐르는 전류가 규정치를 넘었다.
1.앰프고장
2.모터선 단락
3모터선 지락
4.모터 소손
5.모터선 접촉불량
6.빈번한 서보온 오프로 의한 다이나믹 브레이크용 릴레이의 융착.
7.모터가 앰프에 적용하지 않고 있다.
8.펄스 입력과 서보온의 타이밍이 동시 내지 펄스 입력 쪽이 더빠르다.
9.다이나믹 브레이크 회로의 과열

1.모터선을 떼고 서보온해, 즉시 발생하면,신품의 앰프로 교환한다.
2.모터선의 접속이 단락되어 있지 않은지 커넥터의 리드선을 확인 모터선을 정확하게 접속한다.
3.모터선의 UVW의 모터 어스선간의 절연저항을 확인, 절연불량의 경우, 모터를 교환
4.모터의 각 선간 저항 밸런스를 확인하고, 언밸런스하면, 모터를 교환.
5.모터의 접속부 U,V,W의 커넥터 핀이 빠졌는지 확인하고, 느슨하거나, 빠져있으면, 확실하게 고정한다.
6.앰프를 교환한다.
7.모터 앰프 품번을 명판에서 확인하고, 앰프에 맞는 모터로 바꾼다.
8.서보온후 100ms이상 기다린 후 펄스를 입력한다.
9.서보온 오프로 운전 정지하지 않는다. 고속회전시에 다이나믹 브레이크가 동작한 경우는 3분간 정도 정지 시간을 둔다.

오버히트
보호

15

앰프 방열기, 파워 소자의 온도가 규정치 이상이 되었다.
1.앰프의 사용 온도가 규정치를 넘고 있다.
2.과부하

1.앰프의 사용 온도 및 냉각 조건을 개선한다.
2.앰프, 모터의 용량 업 가감속 시간을 길게 설정한다. 부하를 저감한다.

OVER-LOAD
보호
과부하
보호

16

토크 지령치가 Pr72에 설정되어 있는 과부하 레벨을 초과시, 시한 특성에 근거해 과부하 보호에 이른다.
1.부하가 무겁고, 실효 토크가 정격 토크를 초과한 상태에서, 오래 운전을 계속했다.
2.게인 조정 불량으로, 발진,헌팅 동작 모터의 진동, 이상소리 관성비 Pr20의 설정치가 이상
3.모터의 오배선, 단선
4.기계에 부딪치거나, 기계가 갑자기 무거워졌다. 기계의 뒤틀림.
5.전자 브레이크가 동작한 상태에서 운전
6.여러대를 배선중, 모터선을 다른축과 잘못 연결, 오배선되어 있다.
7.Pr72가 지나치게 낮다.

PANATERM의 파형 그래픽 화면에서 토크 파형이 발진, 상하로 크게 흔들리지 않는지 확인. 과부하 경고 표시 및 부하율을 PANATERM에서 확인,
1.앰프,모터의 용량 업 가감속 시간을 길게 설정한다. 부하를 저감한다.
2.게인을 재조정
3.모터선을 배선도 대로 접속한다. 케이블을 교환한다
4.기계의 뒤틀림을 제거한다. 부하를 가볍게 한다.
5.브레이크 단자의 전압을 측정.
6.모터선, 엔코더선을 각축 페어별 정확하게 배선한다.
7.Pr72를 0으로 한다 (앰프의 최대치 115%로 설정)

회생
과부하
보호

18

회생 에너지가 회생저항의 처리 능력을 넘었다.
1.부하관성이 커 감속중의 회생 에너지에 의해, 컨버터의 전압이 상승하여, 회생저항의 에너지 흡수 부족으로 이상 검출치까지 상승.
2.모터 회전수가 높기 때문에, 소정의 감속시간으로 회생 에너지를 전부 흡수할 수 없다.
3.외장형 저항의 동작 한계가 10%듀티로 제한되어 있다.

PANATERM의 모니터 화면에서 회생저항 부하율을 확인. 연속적인 회생 제동의 용도로는 사용할 수 없습니다.
1.운전패턴확인 (속도모니터) 회생저항 부하율 및 과회생 경고 표시를 확인. 모터 앰프 용량 업, 감속시간을 완만하게 한다. 회생저항을 외장한다.
2.회생저항 부하율 및 과회생 경고 표시를 확인.
3.Pr6c의 설정을 2로 한다.

엔코더
통신
이상보호

21

엔코더와 앰프의 통신이 일정 회수 끊어지고, 단선 검출 기능이 동작했다.

엔코더선의 결선을 접속도 대로 배선한다.
케넥터 핀의 잘못된 접속을 고친다.
엔코더 선은 X6 커넥터에 접속한다.
엔코더의 전원전압 DC5V±5%를 확보한다.
특히 엔코더선이 긴 경우에 주의해 주십시오.
모터선과 엔코더선이 함께 결속되어 있으면 분리한다.
실드를 FG에 접속한다.

엔코더통신
데이터이상
보호

23

엔코더로부터의 데이터가 통신 이상
주로 노이즈에 의한 데이터의 이상
엔코더 선은 연결되지만 통신 데이터가 이상.

위치 편차
과대 보호

24

위치 편차 펄스가 Pr70의 설정을 초과.
1. 지령에 대해 모터의 움직임이 추종되지 않음
2.Pr70의 값이 작다.

1. 위치지령 펄스에 따라, 모터가 회전하는지 확인. 토크 모니터에서 출력토크가 포화하지 않는 것을 확인. 게인을 조정한다. Pr5E,Pr5F를 최대로 한다.엔코더의 결선을 배선도 대로 한다.
가감속 시간을 길게한다.
부하를 가볍게 하고, 속도를 내린다.
2.Pr70의 설정치를 크게 한다. 또는 0으로 한다(무효)

하이브리드
편차 과대
보호

25

풀클로즈 제어시에, 외부 스케일에 의한 부하의 위치와 엔코더에 의한 모터의 위치가, Pr7B에 설정된 펄스수 이상 벗어났다.

모터와 부하의 접속을 확인한다.
외부 스케일과 앰프의 접속을 확인한다.
부하를 움직였을 시에, 모터위치의 변화와 부하위치의 변화가 같은 부호인 것을 확읺나다.
외부스케일 분주분자,분모 외부 스케일 방향 반전이 정확하게 설정되어 있는지를 확인한다.

과속도
보호

26

모터의 회전속도가 Pr73의 설정치를 넘었다.

과대한 속도 지령을 주지 않는다.
지령 펄스의 입력 주파수 및 분주 체배비를 확인
게인 조정 불량에 의한 OVER SHOOT가 생긴 경우, 게인조정을 실시한다.
엔코더선을 결선도 대로 배선한다.
Pr73을 0으로 한다.(모터의 최고회전수x1.2로 설정)

지령펄스
체배
이상보호

27

제1~제2지령 분주체배 분자 분모(Pr48~4B)에 설정되어 있는 분주 체배비가 적절하지 않다.

Pr48~4B의 설정치를 확인
분주 체배후의 지령 펄수 주파수가 편차 카운터 입력부에서 80Mpps, 지령 입력부에서 3Mpps 이하가 되도록 분주 체배비를 설정한다.

외부 스케일
통신 데이터
이상보호

28

외부 스케일로부터의 데이터가 통신 이상이 되었다.
주로 노이즈에 의한 데이터의 이상.
외부 스케일 접속 케이블은 연결되어 있지만 통신 데이터가 이상.

외부 스케일의 전원전압을 확보한다. 특히 외부 스케일 접속 케이블이 긴 경우에 주의해 주십시오.
모터선과 외부 스케일 접속 케이블이 함께 결속되어 있다면 분리한다.
실드를 FG에 접속한다. 외부스케일의 접속도를 참조.

편차 카운터
오버플로우
(OVERFLOW)
보호

29

편차 카운터의 값이 2^27(134217728)을 넘었다.

위치 지령 펄스에 따라, 모터가 회전하는지 확인.
토크 모니터에서 출력토크가 포화되지 않는 것을 확읺나다.
게인을 조정한다.
Pr5E (제1토크 리밋 설정) Pr5F(제2 토크 리밋 설정)를 최대로 한다.
엔코더의 결선을 배선도 대로 한다.

소프트웨어
리밋 보호

34

모터의 위치가 소프트웨어 리밋의 범위를 넘었다.
1.게인이 맞지 않는다.
2.Pr26 의 값이 작다.

1.게인 관성비를 확읺나다.
2.Pr26의 설정치를 크게 한다.

외부스케일
통신
이상보호

35

외부 스케일과 앰프의 통신이 일정 회수 끊어지고, 단선 검출 기능이 동작했다.

외부 스케일의 결선을 접속대로 배선한다.
커넥터 핀의 잘못된 접속을 고친다.

EEPROM
파라미터
이상보호

36

전원 투입시 EEPROM으로 부터 데이터 판독시 파라미터 보존지역의 데이터가 망가져 있다.

모든 파라미터를 재설정한다.
몇번이나 반복 발생하면, 고장 가능성이 있으므로, 앰프를 교환한다.

EEPROM
CHECK CODE
이상보호

37

전원 투입시 EEPROM으로부터 데이터 판독시, EEPROM 기입 확인 데이터가 망가져 있다.

고장 가능성이 있으므로, 앰프를 교환한다.
구입처에 조사 반환한다.

구동금지
입력 보호

38

Pr04(구동 금지입력 설정)=0의 경우에 CW/CCW구동 금지 입력(CWL 8핀/CCWL 9핀)이 모두 COM-와의 접속이 오픈되었다.
또는 Pr04=2의 경우 CW/CCW 구동금지 입력중 어느 것이 COM-와의 접속이 오픈 되었다.

CW/CCW 구동 금지 입력에 접속된 스위치, 전선, 전원에 이상이 없는지 확인. 특히, 제어용 신호 전원의 기동이 늦지 않는지 확인

반응형
Posted by PureHolic
2016. 7. 12. 18:14
반응형

3상 모터 콘덴서 (커패시터 ) 설치 용량 표 입니다.


자료 출처 :

https://www.kesco.or.kr/jisa/bbs/selectBoardArticle.do;jsessionid=B0eLvIogZTzTwH7zF8S2nMb-OndwqR_cbLAj5TO5iKTWsOIx_HO1!1179233570?searchNttNo=362651&nttNo=362651&pageIndex=221&bbsId=BBSMSTR_000000002001&bonbuCode=2100000&sub=2



【별표 6】콘덴서 설치용량 기준표 1. 단상  유도 전동기

 

설 치 용

량 (μF)

kW

HP

110V

220V

0.1

1/8

40

10

0.2

1/4

50

15

0.25

1/3

75

20

0.4

1/2

100

20

0.55

3/4

100

30

0.75

               1

120

30

 

2. 200V 교류 전호(電弧)  용접기

 

최대입력 (KVA)

3

5

7.5

10

15

20

25

30

35

40

45

50

설치용량 (μF)

100

150

250

300

450

600

700

900

1,000

1,100

1,300

1,450

교류 저항 용접기에 대하여는  위표의 1/2  용량을 사용할   .

 

3.  200V380V    도전

설치용량(μF)

설치용량(μF)

kW

HP

200V

380V

kW

HP

200V

380V

0.2

1/4

15

-

7.5

10

200

75

0.4

1/2

20

-

11

15

300

100

0.75

1

30

-

15

20

400

100

1.5

2

50

10

22

30

500

150

2.2

3

75

15

30

40

800

200

3.7

5

100

20

37

50

900

250

5.5

7.5

175

50

 

 

 

 

 

4. 3,300V 고압전동기

 

설 치 용 량(kVA)

kW

HP

37

50

15

55

75

25

75

100

30

110

150

50

150

200

75

 

5.  기타  기구  

 

부 하 종 별

콘덴서용량(최저 kVA)

380V 삼상으로 사용하는 

부하정격입력(kVA) 1/3

200V 삼상 또는 단상으로 사용하는 

부하정격입력(kVA) 1/4

100V 단상으로 사용하는 

부하정격입력(kVA) 1/5

기타의 전기기기

고객과 협의 결정

 

반응형
Posted by PureHolic
2016. 7. 8. 17:31
반응형

 NFPA (미국) 


심벌.dwg



반응형
Posted by PureHolic
2011. 6. 3. 21:58
반응형

IEC규격, 유럽 규격 (IEC204-1,EN60204-1)

보호도체: 녹색/노랑
전력 회로 중심선: 라이트 블루
교류 또는 직류의 전원 회로: 검정
교류의 제어회로: 빨강
직류의 제어회로: 파랑
외부 전원에서 공급된 인터록 회로: 주황

-보호도체와 혼동할 우려가 있을경우 에는 녹색 또는 노랑의 사용을 금지
-JIS규격도 이를 도입하고 있지만 실제 일본에서는 제어반 내 배선에 노랑을 사용한 경우가 많아 주의가 필요
반응형
Posted by PureHolic
2011. 4. 2. 13:51
반응형

분주 체배비
  분주란?
어느 주파수를 그것과 정수비를 이루는 저주파수로 체감하는 것. 이를 행하는 장치를 분주기라고 한다. 주파수 안정도가 높은 주발진기의 출력을 정수분의 1로 분주한 후에 고조파 발생기에 가해서 소요의 반송파를 얻는 반송 전류 공급 장치가 그 예이며, 이를 위해 궤환 분주기나 디지털 분주기가 사용된다.

-다음 백과사전 발췌 (http://enc.daum.net/dic100/contents.do?query1=15XXXX7529)


...... 서보 모터를 구동하기 위해 세팅을 하다보면 첫단계에 마주치게 되는 분주 체배비... 분주 체배비란 말로 검색
해도 정확한 의미따윈 나오진 않는다. 쉽게 말하면 입력된 주파수를 지령된 값으로 연산 과정을 거처 실제 모터 구동에
쓰이는 주파수로 변화 해주는 비율 정도 되겠다.



 실제 분주 체배비를 구하는 공식은

D=(△M*E*R)/L

D : 분주 체배비
△M : 위치 분해능
E :  ENCODER PULSE 수 E[P/r]
R : 감속비
L : 볼나사 리드

E 값은 (PANASONIC MOTOR 기준) INCREMENTAL 사양은 분해능이 10,000 이며 AbSOLUTE 사양은 131,072 이다.

그럼 실제로 저공식을 어떻게 사용 하고 세팅을 해줘어야 하는걸까? ..


일단 확인 하고 넘어가야 될사항!!!!!!

D=(Pr48x2^Pr4A)/Pr4b

이공식에서 PrXX 라고 명명 된것들이 파라메터 위치 이다.


실제로 세팅을 해보도록 하자


EX1) 볼스크류 리드가 10mm,  감속비 1 , 1펄스 입력시 0.01mm

D=(Pr48x2^Pr4A)/Pr4b

위 공식에서 분자값 Pr48x2^Pr4A 의 값은 엔코더의 공장출하시 엔코더 분해능으로 자동설정되어있다.즉 D=10,000/Pr4b 인 것이다. 하지만
엔코더 분해능은 꼭 필요치 않으면(기어비등 기타 기구적인 비율이 정수로 나누어 지지 않을때) 설정할 필요가 없다.

(Pr48x2^Pr4A) 값은 꼭 필요 하지 않으면, 특수한 경우를 제외하고는 손을 댈 필요가 없다!!!

 그렇게 되면 이제 세팅에 꼭 필요한 파라메타는 Pr4B 만 남게 되는데!. 이값의 공장 출하시 설정된 값또한 10,000 이다. 이것이 무슨 의미인가 하면, 10,000 펄스 입력시 모터가 1회전 한다는 뜻이다. 즉 1펄스당  1/1,000 mm 씩 볼스크류가 이동하게 된다.
즉 Pr4B가 1회전당 지령펄스수 라는 것이다.  그러면 1펄스당 0.01mm 씩 이동하게 하기위한 Pr4B 의 값은? 1000 인것이다.


결과적으로 D=(Pr48x2^Pr4A)/Pr4b  공식에서 Pr4B 의 값만 1000으로 바꾸어 주게 되면. 1펄스당 0.01mm씩 움직일수 있도록 제어가 가능한것이다.

그러면 요기서 드는 의문 , 제일 처음 말한 공식은 왜필요한가? 
D=(△M*E*R)/L 일단 이공식을 현제 주어진 조건으로 계산을 해보도록 하자  
D=(0.01*10,000*1)/10 
D=10
분주 체배비가  10이 나왔다. 이 값이 중요한 이유는 이값이 1/50~20의 범위를 벗어나게되면 진동 및 모터에 소음, 이상동작등을 발생할 확률이 높아지기 때문에 확인을 해주어야 하는 것이다.
즉 10mm 볼스크류에서 1펄스당 0.1을 움직이고 싶다고 하여 Pr4B에 100을 입력하게 되면 분주 체배비가 100이 나오게 된다. (아래식 참조) 이런 설정에서는 모터가 구동하지 않는다.
D=(0.1*10,000*1)/10
D=100

결론적으로 Pr4B값은 아래 공식으로 계산된다.
Pr4B=(L*R)/△M
△M : 위치 분해능
R : 감속비
L : 볼나사 리드


2015년 6월

추가 1

파나소닉 서보모터가 A5 로 올라가면서 기본 엔코더 성능이 좋아졌습니다.

인크리멘탈 사양 기준 2500 p/r 이던 엔코더 성능이 1048576 p/r 이 되었습니다.


변경 되면서 특이점은 예제에 나와 있는 볼스크류 10MM  기준으로 파라메터 값을 1000 설정시 서보드라이버가 에러가 발생합니다






2009/04/11 - [전기 & 전자] - Panasonic Servo Motor & Amp 관련 캐드 자료
2009/04/14 - [전기 & 전자] - [Panasonic AC Servo motor setting] 기본 파라메터 설정 제1부
2009/04/15 - [전기 & 전자] - [Panasonic AC Servo motor setting] 기본 파라메터 설정 제2부
2010/09/19 - [전기 & 전자] - Panasonic Servo Motor Driver 설정 프로그램 Panaterm 3.7 ver
2010/10/06 - [전기 & 전자] - Panasonic Servo Motor Error Code 1/2 (파나소닉 서보모터 에러코드 )
2010/10/17 - [전기 & 전자] - Panasonic Servo Motor Error Code 2/2 (파나소닉 서보모터 에러코드 )






반응형
Posted by PureHolic
2011. 3. 15. 19:12
반응형
약전을 설계할 때는 대충? awg 규격 표에 나와 있는 용량을 바탕으로 선재를 사용 하여도 무방하지만
강전 이상으 대용량을 설치 할때는... 설치 위치 환경. 등 고려해야될 사항 들이 많이 있다.
그에 대한 참조 자료



출처 : http://www.kesco.or.kr/



2010/08/25 - [전기 & 전자] - KIV 규격표 (전기 기기용 비닐 절연 전선)
2009/04/11 - [전기 & 전자] - AWG 전선 규격 표! American Wire Gauge

반응형
Posted by PureHolic
2010. 9. 19. 15:42
반응형




파나소닉 서보 드라이버의 설정 프로그램인 파나텀 입니다.
내부 파라메타및 오토튜닝등 전반적인 세팅을 할수 있는프로그램 입니다.
모터 구동중인 동작 상태를 그래프로 그려 분석할수도 있습니다.






Paraterm KOR.pdf

파나텀 Ver 3.7.zip

PANATERM설명서(영문).pdf


반응형
Posted by PureHolic
2010. 9. 5. 19:26
반응형

 

 

 

원어

문자기호

한국어

AirBlast Circuit Breaker

ABB

공기 차단기

Air Circuit Breaker

ACB

기중 차단기

Ammeter Change-over Switch

AS

전류계 전환 스위치

Botton Switch

BS

버튼 스위치

Circuit Breaker

CB

차단기

Change-Over Switch

COS

전환 스위치

Control Switch

CS

제어 스위치

Disconnecting Switch

DS

단로기

Emergency Switch

EMS

비상 스위치

Fuse

F

퓨즈

Field Circuit Breaker

FCB

계자 차단기

Float Switch

FLTS

플로트 스위치

Field Switch

FS

계자 스위치

Foot Switch

FTS

발밟음 스위치

Gas Circuit Breaker

GCB

가스 차단기

Hight-speed Circuit Breaker

HSCB

고속도 차단기

Knife switch

KS

나이프 스위치

limit switch

LS

리밋 스위치

level switch

LVS

레벨 스위치

magnetic blow-out circuit breaker

MBB

자기 차단기

electromagnetic contactor

MC

전자 접촉기

molded case circuit breaker

MCCB

배선용 차단기

oil circuit breaker

OCB

기름 차단기

over-speed switch

OSS

과속 스위치

power fuse

PF

전력 퓨즈

pressure switch

PRS

압력 스위치

rotary switch

RS

회전 스위치

switch

S

스위치

speed switch

SPS

속도스위치

tumbler switch

TS

텀블러 스위치

vacuum circuit breaker

VCB

진공 차단기

vacuum switch

VCS

진공 스위치

voltmeter change over switch

VS

전압계 전환 스위치

controller

CTR

제어기

master controller

MCTR

주 제어기

starter

STT

기동기

star-delta starter

YDS

스타델터 기동기

thermal relay

THR

열동 계전기

earth leakage circuit breaker

ELCB

누전 차단기

 

 


반응형
Posted by PureHolic
2010. 8. 25. 22:01
반응형

600V이하의 주로 일반전기공작물 제어용 전기 기기의 배선에 사용

 

도체

절연
두께
(㎜)

완성품 외경(약)

도체 저항(20℃)

절연 저항
(70℃)
(MΩ*Km)

(개산 중량)
(kg/km)

공칭
단면적
(㎟)

최대
소선경
(㎜)

외경(약)
(㎜)

상한

하한

도금 없음

도금 있음

(㎜)

(Ω/Km)

1.5

0.26

1.6

0.7

2.8

3.4

13.3

13.7

0.01

30

2.5

2.1

0.8

3.4

4.1

7.98

8.21

0.009

40

4

0.31

2.6

3.9

4.8

4.95

5.09

0.007

50

6

3.6

4.4

5.3

3.3

3.39

0.006

80

10

0.41

4.8

1

5.7

6.8

1.91

1.95

0.0056

130

16

6

6.7

8.1

1.21

1.24

0.0046

180

25

7.4

1.2

8.4

10.2

0.78

0.795

0.0044

280

35

8.7

9.7

11.7

0.554

0.565

0.0038

370

50

10.4

1.4

11.5

13.9

0.386

0.393

0.0037

500

70

0.51

12.5

13.2

16

0.272

0.277

0.0032

700

95

14.5

1.6

15.1

18.2

0.206

0.21

0.0032

970

120

16.2

16.7

20.2

0.161

0.164

0.0029

1200

150

18.2

1.8

18.6

22.5

0.129

0.132

0.0029

1490

185

20.2

2

20.6

24.9

0.106

0.108

0.0029

1850

240

23.3

2.2

23.5

28.4

0.0801

0.0817

0.0028

2440

 

2011/03/15 - [전기 & 전자] - 전선 선정 참고 자료 (전선의 허용전류)
2009/04/11 - [전기 & 전자] - AWG 전선 규격 표! American Wire Gauge

반응형
Posted by PureHolic
2009. 4. 15. 23:58
반응형

[표의 <> 의 setting 값이 공장 출하 시의 세팅 값입니다.]


PrNo. 40,41,42 는 지령 펄스 입력선택,지령펄스 회전 방향 설정,지령펄스 입력 모드 설정, 으로 상위 컨트롤러(ex. plc,mcu,motion controller) 의 지령 방식을 설정하게 됩니다.

PrNo.40
설정치 내용
<0> 포토 커플러 입력
1 라인 드라이버 전용 입력







 위의 표에 따라 상위 컨트롤러의 제어 방식에 맞추어 설정을 하게 됩니다.
EX.) 상위 plc potion card 의 설정이 Pule ,Sign 방식에 현재 모터 시운전시 도는 방향이 반대 방향이다.(상위컨트롤러의 프로그램 등에 의해 방향은 임의로 바꿀 수 있지만, 기존 프로그램에 세팅을 맞출시 Pr41의 세팅을 바꾸어 모터 회전 방향을 설정하게 됩니다.)  이렇게 세팅을 하기 위해서는 Pr 41 에 1로 세팅 pr42에 3으로 세팅 Pr40에 0을 세팅하게 됩니다.



참조 지령 펄스 입력 신호의 허용 입력 최대 주파수 및 최소 필요 시간 폭


반응형
Posted by PureHolic
2009. 4. 14. 22:15
반응형
표의 <> 안에 있는것이 공장 출하 시 기본 세팅 입니다.

servo motort 의 처음 세팅은 위치 제어냐 토크 제어냐 속도 제어냐 에 따른 제어 모드 설정을 해야 합니다.

panasonic servo motor의 제어 모드 세팅 파라미터는 PrNo.02 번으로 기본 공장 출하시 1로 세팅 되어 있습니다.



 
설정치 제어 모드
제1모드 제2모드
0 Position -
<1> Velocity -
2 Torque -
3 Position Velocity
4 Position Torque
5 Velocity Torque
6 Full_closed -


위 표에서 나와 있듯이 필요 한 설정치를 선택 세팅을 하게 됩니다.
( 이후의 세팅은 제가 주로 세팅해본 Position 을 기준으로 세팅하게 됩니다. )
제어 모드 설정후 다른 귀찮은 파라미터들은 쭉쭉 건너뛴다 간단히 축만을 이동하여 로봇을 만드는 경우는 그렇게 크게 손댈 건 없습니다.
파라미터를 쭈욱 따라 넘어가다 보면 계륵 같은 게 하나 걸리는데 PrNo. 21 real time auto tuning 이다. 이것이 계륵인 이유는 서보가 체결된 축의 관성부하의 변화에 따라 실시간으로 관성비등의 내부 세팅을 상시 추정 하고 약 30분마다 eeprom에 보존하게 되는데 이게 문제인 게 동작 패턴에 따라서는 실시간 추정으로 때문에 세팅값 변경으로 서보모터의 동작이 불안정해지는 경우가 발생합니다 :)  그래서 보통 제가 설정할 때는 유효 모드 즉 이기능을 off를 하게됩니다.

설정치 Real_time Auto_gain Tuning 동작중 부하 관성의 변화 정도
0 유효 -
<1> 통상모드 거의 변화하지 않음
2 변화가 완만
3 변화가 급
4 수직축 모드 거의 변화하지 않음
5 변화가 완만
6 변화가 급
7 게인 전환 없음 거의 변화하지 않음




 
반응형
Posted by PureHolic
2009. 4. 11. 12:40
반응형
중판 설계및 제작 시 사용 하는 AutoCad 파일 입니다 .



목록
MADDT1105
MADDT1107
MADDT1205
MADDT1207
        .
        .

    .    .



출처 : http://www.famotech.com/index.htm
반응형
Posted by PureHolic
2009. 4. 11. 12:35
반응형
2010/08/25 - [전기 & 전자] - KIV 규격표 (전기 기기용 비닐 절연 전선)
2011/03/15 - [전기 & 전자] - 전선 선정 참고 자료 (전선의 허용전류)



전선 굵기

전선 굵기를 표시할때 국내에서는 SI단위계를 사용하며 미국은 AWG 단위를사용한다.

참고로 국내에서 전선 케이블로 AWG 규격의 케이블을 많이 사용하고 있습니다.

다음은 AWG 단위표시에 대한 제원을 요약하였습니다.

 

AWG (American wire gauge)- 미국 전선 규격

AWG는 미국이나 그 밖의 지역에서 구리, 알루미늄 및 기타 전선의 굵기를 나타내는 단위로서, 전선의 지름 11.680 mm를 AWG 0으로, 0.127 mm를 AWG 36으로 하고, 그 사이를 39 단계로 나눈 번호 체계이다.

구리선은 대게 AWG 18 에서 AWG 26 사이의 굵기를 가지며, 전화망에서 주로 AWG 22, 24, 26 등이 사용된다.

 AWG에서는 숫자가 크면, 전선은 오히려 더 가늘다는 것을 의미한다. 전선이 굵으면 간섭의 영향을 받을 여지가 더 적다. 일반적으로, 지름이 더 가는 전선은 동일한 거리에서 굵은 전선이 전송할 수 있는 량 만큼의 전류를 전송하지 못한다.


 

AWG(American Wire Gauge)
AWG# Dia in mm AWG# Dia in mm AWG# Dai in mm AWG# Dai in mm
1 7.348 11 2.305 21 0.723 31 0.227
2 6.544 12 2.053 22 0.644 32 0.202
3 5.827 13 1.828 23 0.573 33 0.180
4 5.189 14 1.628 24 0.511 34 0.160
5 4.621 15 1.450 25 0.455 35 0.143
6 4.115 16 1.291 26 0.405 36 0.127
7 3.665 17 1.150 27 0.361 37 0.113
8 3.264 18 1.024 28 0.321 38 0.101
9 2.906 19 0.912 29 0.286 39 0.090
10 2.588 20 0.812 30 0.255 40 0.080
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AWG 선경표
AWG
지름(mm)
단면적(㎟)
AWG
지름(mm)
단면적(㎟)
AWG
지름(mm)
단면적(㎟)
6/0
14.73
170.46
5/0
13.11
134.92
11
2.311
4.196
26
0.4039
0.1284
4/0
11.68
107.22
12
2.057
3.325
27
0.3607
0.1022
3/0
10.41
85.16
13
1.828
2.627
28
0.320
0.08042
2/0
9.271
67.51
14
1.626
2.075
29
0.287
0.06470
1/0
8.255
53.52
15
1.448
1.646
30
0.2540
0.05067
1
7.341
42.22
16
1.295
1.318
31
0.2261
0.04041
2
6.553
33.93
17
1.143
1.026
32
0.2019
0.03203
3
5.817
26.57
18
1.016
0.8107
33
0.1803
0.02555
4
5.182
21.09
19
0.9144
0.6567
34
0.160
0.02010
5
4.623
16.78
20
0.8128
0.5189
35
0.1422
0.01587
6
4.115
13.30
21
0.7239
0.4156
36
0.1270
0.01267
7
3.658
10.507
22
0.6428
0.3243
37
0.1131
0.01005
8
3.251
8.302
23
0.574
0.2588
38
0.1016
0.008107
9
2.896
6.585
24
0.5105
0.2047
39
0.0889
0.006207
10
2.591
50272
25
0.4547
0.1624
40
0.0787
0.004870
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
주) 1."AWG"는 American Wire Gauge 임.
      2. 1CM (Circular Mill) = 0.0005067㎟
       1MCM = 1000 CM (1Mill = 1/10000 inch 임)
 
 
Cable AWG(American Wire Gauge)

AWG to Metric Conversion Chart

AWG Number

Ø [Inch]

Ø [mm]

Ø [mm²]

Resistance

[Ohm/m]
Allowable Current[A]

4/0 = 0000

0.460

11.7

107(100)

0.000161

298~280

3/0 = 000

0.410

10.4

85.0

0.000203

257~240

2/0 = 00

0.365

9.26

67.4(60.0)

0.000256

223

1/0 = 0

0.325

8.25

53.5

0.000323

190~175

1

0.289

7.35

42.4(38.0)

0.000407

165

2

0.258

6.54

33.6

0.000513

139~130

3

0.229

5.83

26.7(22.0)

0.000647

125

4

0.204

5.19

21.1

0.000815

107~98

5

0.182

4.62

16.8(14.0)

0.00103

94

6

0.162

4.11

13.3

0.00130

81~72

7

0.144

3.66

10.5

0.00163

70

8

0.128

3.26

8.36(8.0)

0.00206

62~55

9

0.114

2.91

6.63

0.00260

55

10

0.102

2.59

5.26(5.5)

0.00328

48~40

AWG Number

Ø [Inch]

Ø [mm]

Ø [mm²]

Resistance

[Ohm/m]
Allowable Current[A]

11

0.0907

2.30

4.17

0.00413

 

12

0.0808

2.05

3.31(3.5)

0.00521

35~28

13

0.0720

1.83

2.62

0.00657

 

14

0.0641

1.63

2.08(2.0)

0.00829

27~18

15

0.0571

1.45

1.65

0.0104

 

16

0.0508

1.29

1.31

0.0132

19~12

17

0.0453

1.15

1.04

0.0166

 

18

0.0403

1.02

0.823

0.0210

16~7

19

0.0359

0.912

0.653

0.0264

5.5

20

0.0320

0.812

0.518

0.0333

4.5

AWG Number

Ø [Inch]

Ø [mm]

Ø [mm²]

Resistance

[Ohm/m]
Allowable Current[A]

21

0.0285

0.723

0.410

0.0420

 

22

0.0253

0.644

0.326

0.0530

3A

23

0.0226

0.573

0.258

0.0668

 

24

0.0201

0.511

0.205

0.0842

588mA

25

0.0179

0.455

0.162

0.106

477

26

0.0159

0.405

0.129

0.134

378

27

0.0142

0.361

0.102

0.169

288

28

0.0126

0.321

0.0810

0.213

 

29

0.0113

0.286

0.0642

0.268

212

30

0.0100

0.255

0.0509

0.339

147

AWG Number

Ø [Inch]

Ø [mm]

Ø [mm²]

Resistance

[Ohm/m]
Allowable Current[A]

31

0.00893

0.227

0.0404

0.427

 

32

0.00795

0.202

0.0320

0.538

93

33

0.00708

0.180

0.0254

0.679

75

34

0.00631

0.160

0.0201

0.856

60

35

0.00562

0.143

0.0160

1.08

45

36

0.00500

0.127

0.0127

1.36

40

37

0.00445

0.113

0.0100

1.72

28

38

0.00397

0.101

0.00797

2.16

24

39

0.00353

0.0897

0.00632

2.73

19

40

0.00314

0.0799

0.00501

3.44

15 mA

 

Some rules of thumb helping you to learn AWG diameter by head.(간단한 주먹 구구식 계산법)

1) AWG 18 has a solid core diameter of about 1.0 mm.
( AWG 18을  단선의 굵기로 환산하면 약 1.0mm)이다.

2) Adding 6 to the AWG number halves the diameter; Subtracting 6 doubles.
(AWG의 값이 6이 증가하면, 전선의 지름은 절반이 된다.)

3) KS(Korean Standard) specified code is yellow marked.
KS에서 지정한 600V이하 비닐절연전선은 노랑색표시 부분이다.
- 10SQmm이하는 SQmm값에 7을 곱하면 허용전류의 근사값이된다.
- 10~20 SQmm사이는 SQmm값에 6을 곱하면 허용전류의 근사값이된다.
- 21~30 SQmm사이는 SQmm값에 5을 곱하면 허용전류의 근사값이된다.
- 31~40 SQmm사이는 SQmm값에 4을 곱하면 허용전류의 근사값이된다.
- 41SQmm이상의 경우는 SQmm값에 3을 곱하면 허용전류의 근사값이된다





ps. 이 자료는 1년 전 쯤 awg 가 먼가 해서 찾다가 발견한 자료로 퍼서 하드에 저장 되어있던 사본 입니다. 원출처가 어딘지는 저도 감감 ;;; 


반응형
Posted by PureHolic
2009. 4. 11. 12:31
반응형
/** \file */
/** \defgroup avr_stdio <stdio.h>: Standard IO facilities
    \code #include <stdio.h> \endcode

    <h3>Introduction to the Standard IO facilities</h3>

    This file declares the standard IO facilities that are implemented
    in \c avr-libc.  Due to the nature of the underlying hardware,
    only a limited subset of standard IO is implemented.  There is no
    actual file implementation available, so only device IO can be
    performed.  Since there's no operating system, the application
    needs to provide enough details about their devices in order to
    make them usable by the standard IO facilities.

    Due to space constraints, some functionality has not been
    implemented at all (like some of the \c printf conversions that
    have been left out).  Nevertheless, potential users of this
    implementation should be warned: the \c printf and \c scanf families of functions, although
    usually associated with presumably simple things like the
    famous "Hello, world!" program, are actually fairly complex
    which causes their inclusion to eat up a fair amount of code space.
    Also, they are not fast due to the nature of interpreting the
    format string at run-time.  Whenever possible, resorting to the
    (sometimes non-standard) predetermined conversion facilities that are
    offered by avr-libc will usually cost much less in terms of speed
    and code size.

    <h3>Tunable options for code size vs. feature set</h3>

    In order to allow programmers a code size vs. functionality tradeoff,
    the function vfprintf() which is the heart of the printf family can be
    selected in different flavours using linker options.  See the
    documentation of vfprintf() for a detailed description.  The same
    applies to vfscanf() and the \c scanf family of functions.

    <h3>Outline of the chosen API</h3>

    The standard streams \c stdin, \c stdout, and \c stderr are
    provided, but contrary to the C standard, since avr-libc has no
    knowledge about applicable devices, these streams are not already
    pre-initialized at application startup.  Also, since there is no
    notion of "file" whatsoever to avr-libc, there is no function
    \c fopen() that could be used to associate a stream to some device.
    (See \ref stdio_note1 "note 1".)  Instead, the function \c fdevopen()
    is provided to associate a stream to a device, where the device
    needs to provide a function to send a character, to receive a
    character, or both.  There is no differentiation between "text" and
    "binary" streams inside avr-libc.  Character \c \\n is sent
    literally down to the device's \c put() function.  If the device
    requires a carriage return (\c \\r) character to be sent before
    the linefeed, its \c put() routine must implement this (see
    \ref stdio_note2 "note 2").

    As an alternative method to fdevopen(), the macro
    fdev_setup_stream() might be used to setup a user-supplied FILE
    structure.

    It should be noted that the automatic conversion of a newline
    character into a carriage return - newline sequence breaks binary
    transfers.  If binary transfers are desired, no automatic
    conversion should be performed, but instead any string that aims
    to issue a CR-LF sequence must use <tt>"\r\n"</tt> explicitly.

    For convenience, the first call to \c fdevopen() that opens a
    stream for reading will cause the resulting stream to be aliased
    to \c stdin.  Likewise, the first call to \c fdevopen() that opens
    a stream for writing will cause the resulting stream to be aliased
    to both, \c stdout, and \c stderr.  Thus, if the open was done
    with both, read and write intent, all three standard streams will
    be identical.  Note that these aliases are indistinguishable from
    each other, thus calling \c fclose() on such a stream will also
    effectively close all of its aliases (\ref stdio_note3 "note 3").

    It is possible to tie additional user data to a stream, using
    fdev_set_udata().  The backend put and get functions can then
    extract this user data using fdev_get_udata(), and act
    appropriately.  For example, a single put function could be used
    to talk to two different UARTs that way, or the put and get
    functions could keep internal state between calls there.

    <h3>Format strings in flash ROM</h3>

    All the \c printf and \c scanf family functions come in two flavours: the
    standard name, where the format string is expected to be in
    SRAM, as well as a version with the suffix "_P" where the format
    string is expected to reside in the flash ROM.  The macro
    \c PSTR (explained in \ref avr_pgmspace) becomes very handy
    for declaring these format strings.

    \anchor stdio_without_malloc
    <h3>Running stdio without malloc()</h3>

    By default, fdevopen() requires malloc().  As this is often
    not desired in the limited environment of a microcontroller, an
    alternative option is provided to run completely without malloc().

    The macro fdev_setup_stream() is provided to prepare a
    user-supplied FILE buffer for operation with stdio.

    <h4>Example</h4>

    \code
    #include <stdio.h>

    static int uart_putchar(char c, FILE *stream);

    static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,
                                             _FDEV_SETUP_WRITE);

    static int
    uart_putchar(char c, FILE *stream)
    {

      if (c == '\n')
        uart_putchar('\r', stream);
      loop_until_bit_is_set(UCSRA, UDRE);
      UDR = c;
      return 0;
    }

    int
    main(void)
    {
      init_uart();
      stdout = &mystdout;
      printf("Hello, world!\n");

      return 0;
    }
    \endcode

    This example uses the initializer form FDEV_SETUP_STREAM() rather
    than the function-like fdev_setup_stream(), so all data
    initialization happens during C start-up.

    If streams initialized that way are no longer needed, they can be
    destroyed by first calling the macro fdev_close(), and then
    destroying the object itself.  No call to fclose() should be
    issued for these streams.  While calling fclose() itself is
    harmless, it will cause an undefined reference to free() and thus
    cause the linker to link the malloc module into the application.

    <h3>Notes</h3>

    \anchor stdio_note1 \par Note 1:
    It might have been possible to implement a device abstraction that
    is compatible with \c fopen() but since this would have required
    to parse a string, and to take all the information needed either
    out of this string, or out of an additional table that would need to be
    provided by the application, this approach was not taken.

    \anchor stdio_note2 \par Note 2:
    This basically follows the Unix approach: if a device such as a
    terminal needs special handling, it is in the domain of the
    terminal device driver to provide this functionality.  Thus, a
    simple function suitable as \c put() for \c fdevopen() that talks
    to a UART interface might look like this:

    \code
    int
    uart_putchar(char c, FILE *stream)
    {

      if (c == '\n')
        uart_putchar('\r');
      loop_until_bit_is_set(UCSRA, UDRE);
      UDR = c;
      return 0;
    }
    \endcode

    \anchor stdio_note3 \par Note 3:
    This implementation has been chosen because the cost of maintaining
    an alias is considerably smaller than the cost of maintaining full
    copies of each stream.  Yet, providing an implementation that offers
    the complete set of standard streams was deemed to be useful.  Not
    only that writing \c printf() instead of <tt>fprintf(mystream, ...)</tt>
    saves typing work, but since avr-gcc needs to resort to pass all
    arguments of variadic functions on the stack (as opposed to passing
    them in registers for functions that take a fixed number of
    parameters), the ability to pass one parameter less by implying
    \c stdin will also save some execution time.
*/


반응형
Posted by PureHolic