미쓰비시 PLC에서 원하는 최소·최대 범위의 랜덤값을 생성하는 함수를 XCALL로 만드는 방법을 다룹니다.
내장 RND 명령의 고정 범위 한계를 스케일 변환으로 극복해, 음수를 포함한 임의 구간의 난수를 바로 얻습니다.
각종 테스트·시뮬레이션을 하다 보면 간간이 랜덤값이 필요합니다. 이를 함수화해 두면 편리하게 호출해 쓸 수 있습니다.

1. 미쓰비시 RND 명령의 한계
미쓰비시 PLC가 제공하는 랜덤 명령(RND)은 0 ~ 32767 의 정수형 값만 생성합니다.
문제는 실제로 원하는 값은 그 범위가 아니라는 점입니다.
예를 들어 -5 ~ 10 같은 구간의 난수가 필요하면, RND 결과를 원하는 범위로 다시 환산하는 연산을 매번 직접 해야 합니다.
음수가 끼면 처리는 더 번거로워집니다.
핵심 아이디어는 단순합니다. RND 로 얻은 0 ~ 32767 값을 스케일 변환으로 [최소값, 최대값] 구간에 매핑하면 됩니다. 1편에서 만든 스케일 변환 로직이 그대로 재활용됩니다.
2. 함수 활용법
CALL 로 함수를 호출하고, 인수로 최소값·최대값·결과를 저장할 데이터 레지스터 어드레스를 지정하면 됩니다.
그러면 그 구간 안의 랜덤 정수가 지정한 레지스터에 저장됩니다.

이 함수는 앞서 포스팅한 스케일 변환과 음수 랜덤값 생성을 합친 구조입니다.
RND 로 생성된 값을 원하는 최소값·최대값 범위로 스케일 변환하는 것이 큰 맥락입니다.
3. 결과
최소·최대 인수만 바꿔 호출하면 지정한 구간의 난수가 생성되는 것을 확인할 수 있습니다.

RND 는 시드(seed)에 따라 같은 순서가 반복될 수 있습니다. 매번 다른 패턴이 필요하면 스캔 카운터나 시각(time) 값처럼 변하는 값을 시드에 섞어 주면 분포가 한결 자연스러워집니다.
마무리
내장 RND 의 0 ~ 32767 한계를 스케일 변환으로 감싸 함수화하면, 음수를 포함한 어떤 구간의 랜덤값이든 인수 두 개로 바로 얻을 수 있습니다.
다음 편에서는 숫자가 아닌 함수화 5편: 랜덤 문자열 생성 을 다룹니다. 테스트 데이터로 임의의 문자열이 필요할 때 유용합니다.
'PLC 전기제어 기술자료 > PLC를 함수화 해보자!' 카테고리의 다른 글
| PLC 범용 CRC-16 함수화 : 다항식 가변으로 CCITT·XMODEM·ARC까지 (함수화 7편) (0) | 2023.05.09 |
|---|---|
| 미쓰비시 PLC CRC-16/MODBUS 함수화: XCALL 재사용 라이브러리 (함수화 6편) (0) | 2023.03.01 |
| 미쓰비시 PLC 랜덤 문자열 생성 함수화 : 테스트 데이터 만들기 (함수화 5편) (0) | 2022.04.26 |
| 미쓰비시 PLC 체크섬 생성 함수화 : 시리얼 통신 데이터 검증 (함수화 3편) (1) | 2022.02.28 |
| 미쓰비시 PLC 문자열 스플릿 함수화 : 콤마 구분 데이터 분리 (함수화 2편) (1) | 2022.02.20 |
| 미쓰비시 PLC 스케일 변환 함수화 : XCALL로 아날로그 환산 재사용 (함수화 1편) (0) | 2022.02.19 |