a-rahman
2024年10月4日 11時20分
いつもお世話になっております。
Thermal Watcher センサーのデータを読み取るためにこのプロセスを実行しましたが、目的の出力が得られません。Thermal Watcher センサーからデータを読み取る方法について教えていただけますか?
使用したもの
I. Armadillo-IoT A6E2.
II. 温度温度監視ユニット Thermal Watcher (仮):
(ア) コントローラ:SRW 100 (仮)
(イ) 温度温度センサー:SSW32 01 (仮)
(ウ) 温度監視ユニット Thermal Watcher用電源
手順
1). 接続方法
Armadillo A6e RS485 をコントローラー RS485 に接続しました。
コントローラ:SRW 100 接続先
G GND
Ta Data+
Tb Data-
2). 必要なパッケージ、ライブラリのインストール。
apk update apk add python3 apk add python3-pip pip3 install pymodbus pip3 install pyserial
3). Pythonプログラムの作成
from pymodbus.client import ModbusSerialClient import logging # Set up logging to track Modbus communication logging.basicConfig() log = logging.getLogger() log.setLevel(logging.DEBUG) def communicate_with_rs485(): # Initialize Modbus client for RS-485 communication client = ModbusSerialClient( port='/dev/ttymxc4', # Serial port baudrate=115200, # Baudrate parity='N', # No parity stopbits=1, # 1 stop bit bytesize=8, # 8 data bits timeout=3, # Timeout in seconds method = "rtu" ) # Test connection if client.connect(): print("Connected to Modbus device") else: print("Failed to connect") return try: # Step 1: Trigger pixel data update by reading register 30001 # Read the first register (30001) to initiate a temperature update first_reg = client.read_holding_registers(30001, 1, slave=1) if not first_reg.isError(): print(f"Read register 30001: {first_reg.registers}") else: print("Error reading register 30001") return # Exit if the initial read fails except Exception as e: print(f"Error: {e}") return # Step 2: Read pixel temperature data starting from register 3026 try: start_address = 30026 # Starting address for pixel data end_address = 31049 # End address for pixel data register_count = 125 # Max count for one read (Modbus RTU limitation) all_temperatures = [] # To store all read temperatures # Loop to read in chunks of registers while start_address <= end_address: response = client.read_holding_registers(start_address, register_count, slave=1) if not response.isError(): print(f"Read registers from {start_address} to {start_address + register_count - 1}") # Convert the raw register values to temperature (divided by 10.0) temperatures = [value / 10.0 for value in response.registers] all_temperatures.extend(temperatures) start_address += register_count # Move to the next set of registers else: print(f"Error reading registers from {start_address}") break # Print all the temperature data retrieved print(f"All Temperatures: {all_temperatures}") except Exception as e: print(f"Error: {e}") # Close the connection when done client.close() if __name__ == "__main__": communicate_with_rs485() # main()
出力:
(venv) armadillo:~# python3 rs485.py
Connected to Modbus device.
Read register 30001: [0]
All Temperatures: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,……………………………………………………………………………, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
コメント
a-rahman
迅速なご返答をありがとうございます。
ご指示に従ってコードを変更したところ、大きな値が得られるようになりました。さらに何をすべきか教えていただけますか?
更新コード:
from pymodbus.client import ModbusSerialClient import logging import time from pymodbus.payload import BinaryPayloadDecoder from pymodbus.constants import Endian # Set up logging to track Modbus communication logging.basicConfig() log = logging.getLogger() log.setLevel(logging.DEBUG) def communicate_with_rs485(): # Initialize Modbus client for RS-485 communication client = ModbusSerialClient( port='/dev/ttymxc4', # Serial port baudrate=115200, # Baudrate parity='N', # No parity stopbits=1, # 1 stop bit bytesize=8, # 8 data bits timeout=3 # Timeout in seconds ) # Test connection if client.connect(): print("Connected to Modbus device") else: print("Failed to connect") return try: # Step 1: Trigger pixel data update by reading register 30001 # Read the first register (30001) to initiate a temperature update first_reg = client.read_input_registers(0, 1, slave=1) if not first_reg.isError(): print(f"Read register 30001: {first_reg.registers}") # Assuming response.registers contains the registers read # decoder = BinaryPayloadDecoder.fromRegisters(first_reg.registers, byteorder=Endian.Big, wordorder=Endian.Big) # value = decoder.decode_32bit_float() # print(f"Decode Value: {decoder}") # print(f"Decoded value: {decoder.decode_16bit_int}") else: print(f"Error code: {first_reg.exception_code}") print("Error reading register 30001") return # Exit if the initial read fails except Exception as e: print(f"Error: {e}") return try: start_address = 30026 - 30001 # Starting address for pixel data end_address = 31049 - 30001 # End address for pixel data register_count = 64 # Max count for one read (Modbus RTU limitation) all_temperatures = [] # To store all read temperatures # Loop to read in chunks of registers while start_address <= end_address: response = client.read_input_registers(start_address, register_count, slave=1) if not response.isError(): print(f"Read registers from {start_address} to {start_address + register_count - 1}") # Convert the raw register values to temperature (divided by 10.0) temperatures = [value / 10.0 for value in response.registers] all_temperatures.extend(temperatures) start_address += register_count # Move to the next set of registers else: print(f"Error reading registers from {start_address}") print(f"Error code: {response.exception_code}") break # Print all the temperature data retrieved print(f"All Temperatures: {all_temperatures}") except Exception as e: print(f"Error: {e}") # Close the connection when done client.close() if __name__ == "__main__": while True: communicate_with_rs485() time.sleep(5)
出力:
[1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 6246.4, 51.3, 6067.2, 6476.8, 6272.0, 512.1, 153.7, 102.5, 204.9, 76.9, 6323.2, 153.7, 6425.6, 6374.4, 25.7, 6451.2, 179.3, 6118.4, 0.1, 0.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 6400.0, 51.3, 6374.4, 6528.0, 6348.8, 256.1, 6220.8, 409.7, 6144.0, 6451.2, 6400.0, 6374.4, 128.1, 0.1, 6374.4, 6195.2, 6528.0, 6374.4, 6246.4, 6067.2, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 6400.0, 6092.8, 6323.2, 6528.0, 358.5, 409.7, 332.9, 6502.4, 51.3, 307.3, 384.1, 179.3, 6323.2, 6425.6, 51.3, 230.5, 6528.0, 6425.6, 6374.4, 6246.4, 6297.6, 25.7, 6400.0, 128.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 6220.8, 6272.0, 6374.4, 537.7, 6425.6, 256.1, 76.9, 102.5, 358.5, 435.3, 307.3, 460.9, 153.7, 230.5, 102.5, 51.3, 6400.0, 25.7, 128.1, 6374.4, 102.5, 0.1, 128.1, 6502.4, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 51.3, 6272.0, 6451.2, 6144.0, 6528.0, 6297.6, 51.3, 6374.4, 6220.8, 128.1, 6425.6, 6476.8, 281.7, 6425.6, 6400.0, 6451.2, 6400.0, 6323.2, 6425.6, 51.3, 6246.4, 6220.8, 6195.2, 6246.4, 6169.6, 6272.0, 6144.0, 5785.6, 1459.1, 1459.1, 1459.1, 1459.1, 5888.0, 6272.0, 6476.8, 6272.0, 6092.8, 51.3, 6425.6, 281.7, 6144.0, 6502.4, 0.1, 102.5, 6476.8, 128.1, 6502.4, 6476.8, 76.9, 25.7, 179.3, 6220.8, 6246.4, 0.1, 6400.0, 6502.4, 6451.2, 6297.6, 6476.8, 6118.4, 1459.1, 1459.1, 5811.2, 5939.2, 6425.6, 6348.8, 307.3, 6348.8, 6323.2, 102.5, 6502.4, 6476.8, 281.7, 179.3, 6246.4, 51.3, 6476.8, 6425.6, 25.7, 6502.4, 102.5, 51.3, 0.1, 76.9, 6195.2, 6451.2, 0.1, 6528.0, 76.9, 6195.2, 6220.8, 6400.0, 179.3, 6169.6, 6246.4, 6400.0, 0.1, 332.9, 0.1, 76.9, 6348.8, 0.1, 153.7, 6400.0, 51.3, 102.5, 6476.8, 6476.8, 6425.6, 6374.4, 76.9, 6323.2, 6502.4, 6348.8, 6502.4, 6476.8, 0.1, 6528.0, 6451.2, 6297.6, 128.1, 153.7, 230.5, 6118.4, 6476.8, 6118.4, 6246.4, 5888.0, 512.1, 76.9, 51.3, 6451.2, 0.1, 102.5, 6502.4, 0.1, 25.7, 6476.8, 25.7, 204.9, 6348.8, 102.5, 25.7, 332.9, 0.1, 6476.8, 6374.4, 6476.8, 6323.2, 0.1, 51.3, 204.9, 6502.4, 435.3, 486.5, 76.9, 25.7, 6348.8, 153.7, 486.5, 691.3, 256.1, 281.7, 435.3, 51.3, 230.5, 6476.8, 256.1, 230.5, 25.7, 204.9, 6451.2, 6400.0, 204.9, 0.1, 6425.6, 6451.2, 6451.2, 6425.6, 128.1, 6528.0, 179.3, 435.3, 153.7, 179.3, 76.9, 102.5, 51.3, 6374.4, 6374.4, 179.3, 6272.0, 870.5, 486.5, 409.7, 691.3, 256.1, 179.3, 230.5, 102.5, 179.3, 307.3, 512.1, 6451.2, 435.3, 512.1, 588.9, 358.5, 358.5, 358.5, 153.7, 6297.6, 0.1, 153.7, 332.9, 435.3, 256.1, 332.9, 102.5, 460.9, 0.1, 332.9, 537.7, 537.7, 1152.1, 1254.5, 768.1, 435.3, 256.1, 128.1, 256.1, 409.7, 435.3, 947.3, 870.5, 563.3, 409.7, 640.1, 563.3, 614.5, 332.9, 204.9, 6323.2, 6528.0, 6476.8, 179.3, 76.9, 204.9, 256.1, 332.9, 25.7, 409.7, 281.7, 6528.0, 179.3, 332.9, 1152.1, 1024.1, 793.7, 179.3, 384.1, 384.1, 512.1, 256.1, 665.7, 1715.3, 896.1, 512.1, 486.5, 358.5, 384.1, 384.1, 435.3, 204.9, 6451.2, 102.5, 6476.8, 6528.0, 6425.6, 153.7, 307.3, 307.3, 307.3, 6476.8, 409.7, 281.7, 6348.8, 716.9, 1254.5, 1536.1, 537.7, 716.9, 512.1, 460.9, 691.3, 614.5, 1408.1, 1433.7, 819.3, 307.3, 332.9, 460.9, 307.3, 384.1, 588.9, 204.9, 6528.0, 6476.8, 204.9, 128.1, 76.9, 51.3, 358.5, 51.3, 25.7, 128.1, 460.9, 435.3, 0.1, 128.1, 870.5, 1152.1, 665.7, 1280.1, 1100.9, 665.7, 563.3, 588.9, 1100.9, 1484.9, 768.1, 614.5, 588.9, 588.9, 307.3, 153.7, 332.9, 204.9, 102.5, 76.9, 204.9, 204.9, 486.5, 51.3, 51.3, 281.7, 256.1, 435.3, 128.1, 6502.4, 6400.0, 537.7, 358.5, 844.9, 460.9, 768.1, 768.1, 665.7, 614.5, 230.5, 742.5, 1408.1, 896.1, 716.9, 665.7, 486.5, 563.3, 640.1, 358.5, 102.5, 204.9, 332.9, 614.5, 486.5, 0.1, 332.9, 230.5, 588.9, 460.9, 512.1, 153.7, 25.7, 204.9, 486.5, 332.9, 307.3, 614.5, 1203.3, 896.1, 537.7, 435.3, 947.3, 947.3, 1203.3, 1280.1, 947.3, 998.5, 793.7, 614.5, 691.3, 512.1, 537.7, 409.7, 409.7, 691.3, 332.9, 614.5, 230.5, 640.1, 665.7, 665.7, 435.3, 332.9, 512.1, 204.9, 204.9, 307.3, 435.3, 281.7, 588.9, 793.7, 742.5, 307.3, 588.9, 742.5, 972.9, 665.7, 1075.3, 1100.9, 716.9, 921.7, 640.1, 870.5, 640.1, 588.9, 102.5, 256.1, 537.7, 921.7, 486.5, 742.5, 486.5, 358.5, 691.3, 768.1, 512.1, 6502.4, 512.1, 691.3, 384.1, 768.1, 588.9, 588.9, 435.3, 486.5, 486.5, 844.9, 921.7, 998.5, 1126.5, 998.5, 972.9, 998.5, 691.3, 896.1, 1049.7, 563.3, 486.5, 665.7, 716.9, 768.1, 588.9, 1126.5, 665.7, 768.1, 435.3, 691.3, 921.7, 537.7, 256.1, 332.9, 332.9, 512.1, 716.9, 691.3, 588.9, 742.5, 819.3, 640.1, 998.5, 819.3, 1024.1, 998.5, 844.9, 1126.5, 1024.1, 896.1, 563.3, 537.7, 793.7, 1177.7, 972.9, 947.3, 665.7, 588.9, 640.1, 409.7, 870.5, 486.5, 1024.1, 460.9, 102.5, 460.9, 460.9, 332.9, 460.9, 870.5, 512.1, 691.3, 614.5, 640.1, 563.3, 896.1, 844.9, 614.5, 947.3, 1075.3, 1254.5, 665.7, 870.5, 1075.3, 1075.3, 1587.3, 1561.7, 1228.9, 1203.3, 998.5, 896.1, 896.1, 665.7, 460.9, 537.7, 332.9, 358.5, 588.9, 256.1, 384.1, 512.1, 409.7, 435.3, 435.3, 614.5, 332.9, 614.5, 537.7, 409.7, 742.5, 819.3, 947.3, 563.3, 716.9, 947.3, 1100.9, 1203.3, 1561.7, 1254.5, 1638.5, 1382.5, 1331.3, 1254.5, 1715.3, 947.3, 819.3, 614.5, 6528.0, 51.3, 665.7, 384.1, 588.9, 793.7, 844.9, 691.3, 358.5, 358.5, 588.9, 563.3, 537.7, 358.5, 844.9, 972.9, 1075.3, 844.9, 896.1, 1126.5, 1203.3, 1331.3, 1510.5, 1920.1, 2432.1, 1868.9, 1715.3, 1331.3, 1177.7, 640.1, 588.9, 921.7, 281.7, 6374.4, 0.1, 793.7, 844.9, 1177.7, 870.5, 691.3, 691.3, 768.1, 435.3, 537.7, 460.9, 384.1, 819.3, 921.7, 1024.1, 1305.7, 1536.1, 1612.9, 1254.5, 1459.3, 1817.7, 1971.3, 2252.9, 1971.3, 1100.9, 1356.9, 819.3, 1100.9, 512.1, 768.1, 0.1, 307.3, 0.1, 6348.8, 563.3, 947.3, 691.3, 691.3, 588.9, 435.3, 358.5, 512.1, 512.1, 204.9, 691.3, 819.3, 870.5, 1305.7, 1638.5, 1382.5, 1561.7, 1715.3, 1715.3, 2534.5, 2201.7, 1945.7, 1305.7, 1100.9, 665.7, 998.5, 691.3, 1331.3, 307.3, 460.9, 5990.4, 76.9, 844.9, 614.5, 819.3, 537.7, 537.7, 256.1, 640.1, 588.9, 307.3, 588.9, 563.3, 614.5, 1228.9, 1536.1, 1536.1, 1894.5, 1536.1, 1766.5, 2099.3, 2176.1, 2150.5, 1817.7, 1254.5, 1152.1, 1152.1, 588.9, 793.7, 1408.1, 1459.1, 1459.1, 460.9, 128.1, 691.3, 588.9, 665.7, 281.7, 486.5, 204.9, 384.1, 588.9, 51.3, 742.5, 896.1, 819.3, 1177.7, 1254.5, 1792.1, 1843.3, 2022.5, 1996.9, 2278.5, 2201.7, 2304.1, 1664.1, 1331.3, 1075.3, 793.7, 1126.5, 1459.1, 1459.1, 1459.1, 1459.1, 6451.2, 6374.4, 0.1, 384.1, 76.9, 128.1, 768.1, 588.9, 588.9, 563.3, 563.3, 563.3, 486.5, 435.3, 1100.9, 1203.3, 1382.5, 1587.3, 1920.1, 1843.3, 3123.3, 2662.5, 1996.9, 1356.9, 870.5, 921.7, 742.5, 1228.9, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 358.5, 256.1, 614.5, 281.7, 1049.7, 640.1, 665.7, 640.1, 1126.5, 793.7, 716.9, 1049.7, 1126.5, 1868.9, 1868.9, 1971.3, 2329.7, 2867.3, 2816.1, 2483.3, 1843.3, 1280.1, 1254.5, 1177.7, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 128.1, 51.3, 281.7, 537.7, 716.9, 716.9, 409.7, 972.9, 1177.7, 844.9, 896.1, 384.1, 972.9, 1868.9, 1920.1, 1868.9, 2483.3, 2944.1, 2892.9, 2022.5, 1536.1, 1100.9, 691.3, 665.7, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 512.1, 332.9, 716.9, 1177.7, 947.3, 844.9, 972.9, 1100.9, 947.3, 844.9, 1408.1, 1356.9, 1971.3, 2252.9, 2560.1, 3020.9, 2380.9, 2022.5, 1075.3, 1382.5, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 384.1, 486.5, 6502.4, 793.7, 1049.7, 1049.7, 921.7, 947.3, 844.9, 1408.1, 1024.1, 1203.3, 2022.5, 2406.5, 2867.3, 2432.1, 2099.3, 2073.7, 1587.3, 1868.9, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1, 1459.1]
何卒よろしくお願い申し上げます。
at_shota.shimoyama
下山です。
添付いただいた出力について、下位8bitと上位8bitを入れ替えてみたところ、
以下のように一見正しそうな結果と添付画像のとおりになりました。
[[-20. -20. -20. -20. -20. -20. 24.4 25.8 23.7 25.3 24.5 27.6 26.2 26. 26.4 25.9 24.7 26.2 25.1 24.9 25.7 25.2 26.3 23.9 25.6 25.6 -20. -20. -20. -20. -20. -20. ] [-20. -20. -20. -20. -20. -20. 25. 25.8 24.9 25.5 24.8 26.6 24.3 27.2 24. 25.2 25. 24.9 26.1 25.6 24.9 24.2 25.5 24.9 24.4 23.7 -20. -20. -20. -20. -20. -20. ] [-20. -20. -20. -20. 25. 23.8 24.7 25.5 27. 27.2 26.9 25.4 25.8 26.8 27.1 26.3 24.7 25.1 25.8 26.5 25.5 25.1 24.9 24.4 24.6 25.7 25. 26.1 -20. -20. -20. -20. ] [-20. -20. -20. -20. 24.3 24.5 24.9 27.7 25.1 26.6 25.9 26. 27. 27.3 26.8 27.4 26.2 26.5 26. 25.8 25. 25.7 26.1 24.9 26. 25.6 26.1 25.4 -20. -20. -20. -20. ] [-20. -20. 25.8 24.5 25.2 24. 25.5 24.6 25.8 24.9 24.3 26.1 25.1 25.3 26.7 25.1 25. 25.2 25. 24.7 25.1 25.8 24.4 24.3 24.2 24.4 24.1 24.5 24. 22.6 -20. -20. ] [-20. -20. 23. 24.5 25.3 24.5 23.8 25.8 25.1 26.7 24. 25.4 25.6 26. 25.3 26.1 25.4 25.3 25.9 25.7 26.3 24.3 24.4 25.6 25. 25.4 25.2 24.6 25.3 23.9 -20. -20. ] [ 22.7 23.2 25.1 24.8 26.8 24.8 24.7 26. 25.4 25.3 26.7 26.3 24.4 25.8 25.3 25.1 25.7 25.4 26. 25.8 25.6 25.9 24.2 25.2 25.6 25.5 25.9 24.2 24.3 25. 26.3 24.1] [ 24.4 25. 25.6 26.9 25.6 25.9 24.8 25.6 26.2 25. 25.8 26. 25.3 25.3 25.1 24.9 25.9 24.7 25.4 24.8 25.4 25.3 25.6 25.5 25.2 24.6 26.1 26.2 26.5 23.9 25.3 23.9] [ 24.4 23. 27.6 25.9 25.8 25.2 25.6 26. 25.4 25.6 25.7 25.3 25.7 26.4 24.8 26. 25.7 26.9 25.6 25.3 24.9 25.3 24.7 25.6 25.8 26.4 25.4 27.3 27.5 25.9 25.7 24.8] [ 26.2 27.5 28.3 26.6 26.7 27.3 25.8 26.5 25.3 26.6 26.5 25.7 26.4 25.2 25. 26.4 25.6 25.1 25.2 25.2 25.1 26.1 25.5 26.3 27.3 26.2 26.3 25.9 26. 25.8 24.9 24.9] [ 26.3 24.5 29. 27.5 27.2 28.3 26.6 26.3 26.5 26. 26.3 26.8 27.6 25.2 27.3 27.6 27.9 27. 27. 27. 26.2 24.6 25.6 26.2 26.9 27.3 26.6 26.9 26. 27.4 25.6 26.9] [ 27.7 27.7 30.1 30.5 28.6 27.3 26.6 26.1 26.6 27.2 27.3 29.3 29. 27.8 27.2 28.1 27.8 28. 26.9 26.4 24.7 25.5 25.3 26.3 25.9 26.4 26.6 26.9 25.7 27.2 26.7 25.5] [ 26.3 26.9 30.1 29.6 28.7 26.3 27.1 27.1 27.6 26.6 28.2 32.3 29.1 27.6 27.5 27. 27.1 27.1 27.3 26.4 25.2 26. 25.3 25.5 25.1 26.2 26.8 26.8 26.8 25.3 27.2 26.7] [ 24.8 28.4 30.5 31.6 27.7 28.4 27.6 27.4 28.3 28. 31.1 31.2 28.8 26.8 26.9 27.4 26.8 27.1 27.9 26.4 25.5 25.3 26.4 26.1 25.9 25.8 27. 25.8 25.7 26.1 27.4 27.3] [ 25.6 26.1 29. 30.1 28.2 30.6 29.9 28.2 27.8 27.9 29.9 31.4 28.6 28. 27.9 27.9 26.8 26.2 26.9 26.4 26. 25.9 26.4 26.4 27.5 25.8 25.8 26.7 26.6 27.3 26.1 25.4] [ 25. 27.7 27. 28.9 27.4 28.6 28.6 28.2 28. 26.5 28.5 31.1 29.1 28.4 28.2 27.5 27.8 28.1 27. 26. 26.4 26.9 28. 27.5 25.6 26.9 26.5 27.9 27.4 27.6 26.2 25.7] [ 26.4 27.5 26.9 26.8 28. 30.3 29.1 27.7 27.3 29.3 29.3 30.3 30.6 29.3 29.5 28.7 28. 28.3 27.6 27.7 27.2 27.2 28.3 26.9 28. 26.5 28.1 28.2 28.2 27.3 26.9 27.6] [ 26.4 26.4 26.8 27.3 26.7 27.9 28.7 28.5 26.8 27.9 28.5 29.4 28.2 29.8 29.9 28.4 29.2 28.1 29. 28.1 27.9 26. 26.6 27.7 29.2 27.5 28.5 27.5 27. 28.3 28.6 27.6] [ 25.4 27.6 28.3 27.1 28.6 27.9 27.9 27.3 27.5 27.5 28.9 29.2 29.5 30. 29.5 29.4 29.5 28.3 29.1 29.7 27.8 27.5 28.2 28.4 28.6 27.9 30. 28.2 28.6 27.3 28.3 29.2] [ 27.7 26.6 26.9 26.9 27.6 28.4 28.3 27.9 28.5 28.8 28.1 29.5 28.8 29.6 29.5 28.9 30. 29.6 29.1 27.8 27.7 28.7 30.2 29.4 29.3 28.2 27.9 28.1 27.2 29. 27.5 29.6] [ 27.4 26. 27.4 27.4 26.9 27.4 29. 27.6 28.3 28. 28.1 27.8 29.1 28.9 28. 29.3 29.8 30.5 28.2 29. 29.8 29.8 31.8 31.7 30.4 30.3 29.5 29.1 29.1 28.2 27.4 27.7] [ 26.9 27. 27.9 26.6 27.1 27.6 27.2 27.3 27.3 28. 26.9 28. 27.7 27.2 28.5 28.8 29.3 27.8 28.4 29.3 29.9 30.3 31.7 30.5 32. 31. 30.8 30.5 32.3 29.3 28.8 28. ] [ 25.5 25.8 28.2 27.1 27.9 28.7 28.9 28.3 27. 27. 27.9 27.8 27.7 27. 28.9 29.4 29.8 28.9 29.1 30. 30.3 30.8 31.5 33.1 35.1 32.9 32.3 30.8 30.2 28.1 27.9 29.2] [ 26.7 24.9 25.6 28.7 28.9 30.2 29. 28.3 28.3 28.6 27.3 27.7 27.4 27.1 28.8 29.2 29.6 30.7 31.6 31.9 30.5 31.3 32.7 33.3 34.4 33.3 29.9 30.9 28.8 29.9 27.6 28.6] [ 25.6 26.8 25.6 24.8 27.8 29.3 28.3 28.3 27.9 27.3 27. 27.6 27.6 26.4 28.3 28.8 29. 30.7 32. 31. 31.7 32.3 32.3 35.5 34.2 33.2 30.7 29.9 28.2 29.5 28.3 30.8] [ 26.8 27.4 23.4 25.9 28.9 28. 28.8 27.7 27.7 26.6 28.1 27.9 26.8 27.9 27.8 28. 30.4 31.6 31.6 33. 31.6 32.5 33.8 34.1 34. 32.7 30.5 30.1 30.1 27.9 28.7 31.1] [-20. -20. 27.4 26.1 28.3 27.9 28.2 26.7 27.5 26.4 27.1 27.9 25.8 28.5 29.1 28.8 30.2 30.5 32.6 32.8 33.5 33.4 34.5 34.2 34.6 32.1 30.8 29.8 28.7 30. -20. -20. ] [-20. -20. 25.2 24.9 25.6 27.1 25.9 26.1 28.6 27.9 27.9 27.8 27.8 27.8 27.5 27.3 29.9 30.3 31. 31.8 33.1 32.8 37.8 36. 33.4 30.9 29. 29.2 28.5 30.4 -20. -20. ] [-20. -20. -20. -20. 27. 26.6 28. 26.7 29.7 28.1 28.2 28.1 30. 28.7 28.4 29.7 30. 32.9 32.9 33.3 34.7 36.8 36.6 35.3 32.8 30.6 30.5 30.2 -20. -20. -20. -20. ] [-20. -20. -20. -20. 26.1 25.8 26.7 27.7 28.4 28.4 27.2 29.4 30.2 28.9 29.1 27.1 29.4 32.9 33.1 32.9 35.3 37.1 36.9 33.5 31.6 29.9 28.3 28.2 -20. -20. -20. -20. ] [-20. -20. -20. -20. -20. -20. 27.6 26.9 28.4 30.2 29.3 28.9 29.4 29.9 29.3 28.9 31.1 30.9 33.3 34.4 35.6 37.4 34.9 33.5 29.8 31. -20. -20. -20. -20. -20. -20. ] [-20. -20. -20. -20. -20. -20. 27.1 27.5 25.4 28.7 29.7 29.7 29.2 29.3 28.9 31.1 29.6 30.3 33.5 35. 36.8 35.1 33.8 33.7 31.8 32.9 -20. -20. -20. -20. -20. -20. ]]
ですので、おそらくデータを読み出す際のエンディアンの違い(リトルエンディアン・ビッグエンディアン)が原因ではないかと思われます。
Thermal Watcherの製品仕様書によると、[ ]で囲まれていないアドレスで読み取るとリトルエンディアンで出力され、[ ]で囲まれた緑色のアドレスで読み取るとビッグエンディアンで出力されるようです。
[ ]で囲まれていないアドレスを指定している今回の場合は、Armadillo側でリトルエンディアンとして読み取る必要があります。
まずは検証のため、アドレス 39004から39011 の「システム名称"contSRW100"」を読み出して、数値のまま表示いただいてもよろしいでしょうか?
(これも39004~39011から30001を引いた数値を入力してください)
ご質問者様の環境のデフォルトのエンディアンがリトルエンディアンとビッグエンディアンのどちらなのかを確認いたします。
よろしくお願いします。
ファイル | ファイルの説明 |
---|---|
thermal.png |
at_shota.shimoyama
2024年10月4日 19時22分
下山です。
Thermal Watcherの製品仕様書には「各データの先頭アドレスを0番地とします」との記載がありますので、
30001のアドレスでチャンネル番号を読み出したい場合、
入力レジスタの先頭アドレス(30001)を差し引いた値(0)を指定する必要があるのではないかと思われます。
ですので、
を
と変更した上で再度実行をお願いいたします。
また、同様の理由で
・アドレス30026を読み出したい場合は 30026 - 30001 = 25 を指定
・アドレス31049を読み出したい場合は 31049 - 30001 = 1048 を指定
する必要があると思われます。
よろしくお願いします。