C 2

모듈러 연산 시 음수가 나오는 경우

C언어에서 모듈러(modular) 연산의 기호는 %이다. 쉽게 생각하면 나머지 연산이지만, 기대와 다른 값이 나오는 경우가 있다. 만약 음수를 양수로 나눈 나머지나, 양수를 음수로 나눈 나머지의 경우이다. C에서는 이 부분에 대해서 컴파일러가 알아서 처리하도록 규정하고 있었지만, 표준이 개정되면서 그 부분이 개선되었다. C = A % B에서C의 부호는 A와 같다. 만약 -100을 9로 나눈 나머지를 구한다면, -1 이 나오는 식이다. 관련 자료 : http://ohyecloudy.com/pnotes/archives/1704/

프로그램/C,C++ 2020.03.15

여러 버전의 PID 계산 방법

PID 제어기를 계산 할 때 이전 Iteration의 값을 어떤 방식으로 유지할 건지에 대한 계산 방법이 여러가지 있다. 대부분 둘 중 한가지 방법을 이용하여 계산하는데 한가지 방법의 경우 이전 Iteration의 제어값을 유지하는 방법이 있고, 다른 한가지 방법은 이전 Iteration의 적분항을 유지하는 방법이 있다. 이전 제어값을 유지하는 방법의 경우 Iteration의 계산하기 위하여 이전에 계산된 P항과 D항을 제외하고 계산해주어야 하고이전 적분항을 유지하는 방법의 경우 Iteration을 계산하고 Output값과 적분항 모두에 anti-wind up 코드를 삽입해주어야 한다. 아래 코드는 윤덕용의 직류전동이 책의 일부와https://github.com/geekfactory/PID github에..

프로그램/C,C++ 2020.02.18