Can't read IO after performing an update

Topics about the Software of Revolution Pi
Post Reply
in06khattab
Posts: 29
Joined: 24 Jan 2024, 19:07
Answers: 0

Can't read IO after performing an update

Post by in06khattab »

Hi,

The IOs are being read using an old method, similar to this tutorial: https://www.youtube.com/watch?v=cz163tcQCsM
After doing an apt-get upgrade, the IOs cannot be read using this method. Is there an easy way to make the old method to work to maintain compatibility as I did not design this system.
I have posted the code that was working before.

I can read the IO using piTest
I also tried update firmware of the connected extension modules, but it did not make a difference.

Code: Select all

pi@RevPi17663:~ $ piTest -r RPI_TEMP
1 Byte-Value of RPI_TEMP: 53 dez (=35 hex)
1 Byte-Value of RPI_TEMP: 53 dez (=35 hex)
1 Byte-Value of RPI_TEMP: 53 dez (=35 hex)
^C
pi@RevPi17663:~ $ hexdump -C /dev/piControl0
00000000  bc 0d 64 00 23 02 ff ff  00 02 00 00 e2 1b 26 fd  |..d.#.........&.|
00000010  00 00 00 00 00 00 00 00  07 19 00 14 00 78 ec 02  |.............x..|
00000020  01 00 64 00 00 00 02 02  00 0a 00 00 00 01 01 00  |..d.............|
00000030  01 00 00 00 00 00 00 01  00 01 00 00 00 00 00 01  |................|
00000040  00 01 00 00 00 00 00 00  00 01 00 01 00 00 00 00  |................|
00000050  00 00 00 01 00 01 00 00  00 c4 89 90 16 9c 11 10  |................|
00000060  80 04 00 00 04 e0 17 34  21 00 02 00 00 00 00 00  |.......4!.......|
00000070  00 07 19 00 08 00 2c cf  07 05 00 08 00 3c f6 02  |......,......<..|
00000080  02 00 01 00 00 00 07 19  00 08 00 2c cf 00 00 00  |...........,....|
00000090  01 00 01 00 00 00 00 00  01 00 01 00 00 00 00 00  |................|
000000a0  00 00 01 00 01 00 00 00  00 00 00 00 01 00 01 00  |................|
000000b0  00 00 01 07 00 00 35 78  00 0a 00 e8 03 00 00 00  |......5x........|
000000c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00000110  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00000120  ff ff 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000160  00 00 00 00 00 00 ff 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00001000
pi@RevPi17663:~ $
Last edited by in06khattab on 29 Jan 2024, 13:47, edited 5 times in total.
in06khattab
Posts: 29
Joined: 24 Jan 2024, 19:07
Answers: 0

Re: Can't read IO after performing an update

Post by in06khattab »

This is the contents of config.rsc. I have trimmed the unused bits to fit in the message limits of the website.

{
"App": {
"name": "PiCtory",
"version": "1.4.2",
"saveTS": "20190813140004",
"language": "en",
"layout": {
"north": {
"size": 70,
"initClosed": false,
"initHidden": false
},
"south": {
"size": 200,
"initClosed": false,
"initHidden": false,
"children": {
"layout1": {
"east": {
"size": 500,
"initClosed": false,
"initHidden": false
}
}
}
},
"east": {
"size": 70,
"initClosed": true,
"initHidden": false,
"children": {}
},
"west": {
"size": 200,
"initClosed": false,
"initHidden": false,
"children": {
"layout1": {}
}
}
}
},
"Summary": {
"inpTotal": 147,
"outTotal": 88
},
"Devices": [
{
"GUID": "0c948f4a-c846-049a-0199-5576c93eef55",
"id": "device_RevPiAIO_20170301_1_0_002",
"type": "LEFT_RIGHT",
"productType": "103",
"position": "30",
"name": "RevPi AIO",
"bmk": "RevPi AIO",
"inpVariant": 0,
"outVariant": 0,
"comment": "",
"offset": 0,
"inp": {
"0": [
"TEMP_MON",
"0",
"16",
"0",
false,
"0000",
"",
""
],
"1": [
"FAN_CP",
"0",
"16",
"2",
false,
"0001",
"",
""
],
"2": [
"FAN_SP",
"0",
"16",
"4",
false,
"0002",
"",
""
],
"3": [
"InputValue_4",
"0",
"16",
"6",
false,
"0003",
"",
""
],
"4": [
"TEMP_MON_STATUS",
"0",
"8",
"8",
false,
"0004",
"",
""
],
"5": [
"FAN_CP_STATUS",
"0",
"8",
"9",
false,
"0005",
"",
""
],
"6": [
"FAN_SP_STATUS",
"0",
"8",
"10",
false,
"0006",
"",
""
],
"7": [
"InputStatus_4",
"0",
"8",
"11",
false,
"0007",
"",
""
],
"8": [
"RTDValue_1_i04",
"0",
"16",
"12",
false,
"0008",
"",
""
],
"9": [
"RTDValue_2_i04",
"0",
"16",
"14",
false,
"0009",
"",
""
],
"10": [
"RTDStatus_1_i04",
"0",
"8",
"16",
false,
"0010",
"",
""
],
"11": [
"RTDStatus_2_i04",
"0",
"8",
"17",
false,
"0011",
"",
""
],
"12": [
"OutputStatus_1_i04",
"0",
"8",
"18",
false,
"0012",
"",
""
],
"13": [
"OutputStatus_2_i04",
"0",
"8",
"19",
false,
"0013",
"",
""
]
},
"out": {
"0": [
"OutputValue_1_i04",
"0",
"16",
"20",
false,
"0014",
"",
""
],
"1": [
"OutputValue_2_i04",
"0",
"16",
"22",
false,
"0015",
"",
""
]
},
"mem": {
"0": [
"Input1Range_i04",
"7",
"8",
"24",
false,
"0016",
"You must use wire bridges for current measurement!",
""
],
"1": [
"Input1Multiplier_i04",
"25",
"16",
"25",
false,
"0017",
"",
""
],
"2": [
"Input1Divisor_i04",
"20",
"16",
"27",
false,
"0018",
"",
""
],
"3": [
"Input1Offset_i04",
"-5000",
"16",
"29",
false,
"0019",
"",
""
],
"4": [
"Input2Range_i04",
"2",
"8",
"31",
false,
"0020",
"You must use wire bridges for current measurement!",
""
],
"5": [
"Input2Multiplier_i04",
"1",
"16",
"32",
false,
"0021",
"",
""
],
"6": [
"Input2Divisor_i04",
"100",
"16",
"34",
false,
"0022",
"",
""
],
"7": [
"Input2Offset_i04",
"0",
"16",
"36",
false,
"0023",
"",
""
],

},
"extend": {}
},
{
"GUID": "91b4bc4b-ddb1-1ac5-3f95-70f47acc5718",
"id": "device_RevPiAIO_20170301_1_0_001",
"type": "LEFT_RIGHT",
"productType": "103",
"position": "31",
"name": "RevPi AIO",
"bmk": "RevPi AIO",
"inpVariant": 0,
"outVariant": 0,
"comment": "",
"offset": 89,
"inp": {
"0": [
"MF1_TEMP",
"0",
"16",
"0",
false,
"0000",
"",
""
],
"1": [
"MF1_FLOW",
"0",
"16",
"2",
false,
"0001",
"",
""
],
"2": [
"MF2_FLOW",
"0",
"16",
"4",
false,
"0002",
"",
""
],
"3": [
"MF2_TEMP",
"0",
"16",
"6",
false,
"0003",
"",
""
],
"4": [
"MF1_TEMP_STATUS",
"0",
"8",
"8",
false,
"0004",
"",
""
],
"5": [
"MF1_FLOW_STATUS",
"0",
"8",
"9",
false,
"0005",
"",
""
],
"6": [
"MF2_FLOW_STATUS",
"0",
"8",
"10",
false,
"0006",
"",
""
],
"7": [
"MF2_TEMP_STATUS",
"0",
"8",
"11",
false,
"0007",
"",
""
],
"8": [
"RTDValue_1",
"0",
"16",
"12",
false,
"0008",
"",
""
],
"9": [
"RTDValue_2",
"0",
"16",
"14",
false,
"0009",
"",
""
],
"10": [
"RTDStatus_1",
"0",
"8",
"16",
false,
"0010",
"",
""
],
"11": [
"RTDStatus_2",
"0",
"8",
"17",
false,
"0011",
"",
""
],
"12": [
"OutputStatus_1",
"0",
"8",
"18",
false,
"0012",
"",
""
],

},
"extend": {}
},
{
"GUID": "6ad3c1a4-6870-3bf1-6d55-b9d991ba9dc0",
"id": "device_RevPiConnect_20171023_1_0_001",
"type": "BASE",
"productType": "105",
"position": "0",
"name": "RevPi Connect V1.0",
"bmk": "RevPi Connect V1.0",
"inpVariant": 0,
"outVariant": 0,
"comment": "This is a RevPi Connect",
"offset": 178,
"inp": {
"0": [
"RevPiStatus",
"0",
"8",
"0",
true,
"0000",
"",
""
],
"1": [
"RevPiIOCycle",
"0",
"8",
"1",
true,
"0001",
"",
""
],
"2": [
"RS485ErrorCnt",
"0",
"16",
"2",
false,
"0002",
"",
""
],
"3": [
"RPI_TEMP",
"0",
"8",
"4",
false,
"0003",
"",
""
],
"4": [
"Core_Frequency",
"0",
"8",
"5",
false,
"0004",
"",
""
]
},
"out": {
"0": [
"RevPiLED",
"0",
"8",
"6",
true,
"0005",
"",
""
],
"1": [
"RS485ErrorLimit1",
"10",
"16",
"7",
false,
"0006",
"",
""
],
"2": [
"RS485ErrorLimit2",
"1000",
"16",
"9",
false,
"0007",
"",
""
]
},
"mem": {},
"extend": {}
},
{
"GUID": "19d3324c-1e44-0dd3-c271-6f1c83a25a05",
"id": "device_ModbusRTUMaster_20180122_1_1_001",
"type": "VIRTUAL",
"productType": "24580",
"position": "64",
"name": "ModbusRTU Master",
"bmk": "ModbusRTU Master",
"inpVariant": 0,
"outVariant": 0,
"comment": "ModbusRTU Master",
"offset": 189,
"inp": {
"0": [
"HEATER_V_HB",
"0",
"16",
"0",
false,
"0000",
"",
""
],
"1": [
"HEATER_V_LB",
"0",
"16",
"2",
false,
"0001",
"",
""
],
"2": [
"Input_Word_3",
"0",
"16",
"4",
false,
"0002",
"",
""
],
"3": [
"HEATER_I_HB",
"0",
"16",
"6",
false,
"0003",
"",
""
],
"4": [
"HEATER_I_LB",
"0",
"16",
"8",
false,
"0004",
"",
""
],
"5": [
"Input_Word_6",
"0",
"16",
"10",
false,
"0005",
"",
""
],
"6": [
"Input_Word_7",
"0",
"16",
"12",
false,
"0006",
"",
""
],
"7": [
"INPUT_WORD_8",
"0",
"16",
"14",
false,
"0007",
"",
""
],
"8": [
"HEATER_P_HB",
"0",
"16",
"16",
false,
"0008",
"",
""
],
"9": [
"HEATER_P_LB",
"0",
"16",
"18",
false,
"0009",
"",
""
],
"10": [
"Input_Word_11",
"0",
"16",
"20",
false,
"0010",
"",
""
],
"11": [
"FAN_V_HB",
"0",
"16",
"22",
false,
"0011",
"",
""
],
"12": [
"FAN_V_LB",
"0",
"16",
"24",
false,
"0012",
"",
""
],
"13": [
"Input_Word_14",
"0",
"16",
"26",
false,
"0013",
"",
""
],
"14": [
"FAN_I_HB",
"0",
"16",
"28",
false,
"0014",
"",
""
],
"15": [
"FAN_I_LB",
"0",
"16",
"30",
false,
"0015",
"",
""
],
"16": [
"Input_Word_17",
"0",
"16",
"32",
false,
"0016",
"",
""
],
"17": [
"FAN_P_HB",
"0",
"16",
"34",
false,
"0017",
"",
""
],
"18": [
"FAN_P_LB",
"0",
"16",
"36",
false,
"0018",
"",
""
],
"19": [
"Input_Word_20",
"0",
"16",
"38",
false,
"0019",
"",
""
],
"20": [
"Input_Word_21",
"0",
"16",
"40",
false,
"0020",
"",
""
],
"21": [
"Input_Word_22",
"0",
"16",
"42",
false,
"0021",
"",
""
],
"22": [
"TEMP_SET_PT",
"0",
"16",
"44",
false,
"0022",
"",
""
],
"23": [
"Input_Word_24",
"0",
"16",
"46",
false,
"0023",
"",
""
],
"24": [
"Input_Word_25",
"0",
"16",
"48",
false,
"0024",
"",
""
],
"25": [
"TEMP_PV",
"0",
"16",
"50",
false,
"0025",
"",
""
],
"26": [
"Input_Word_27",
"0",
"16",
"52",
false,
"0026",
"",
""
],
"27": [
"Input_Word_28",
"0",
"16",
"54",
false,
"0027",
"",
""
],
"28": [
"OVER_HEAT",
"0",
"16",
"56",
false,
"0028",
"",
""
],
"29": [
"Input_Word_30",
"0",
"16",
"58",
false,
"0029",
"",
""
],
"30": [
"Input_Word_31",
"0",
"16",
"60",
false,
"0030",
"",
""
],
"31": [
"Input_Word_32",
"0",
"16",
"62",
false,
"0031",
"",
""
],
"32": [
"Input_Bit_1",
"0",
"1",
"64",
false,
"0032",
"",
"0"
],
"33": [
"Input_Bit_2",
"0",
"1",
"64",
false,
"0033",
"",
"1"
],
"34": [
"Input_Bit_3",
"0",
"1",
"64",
false,
"0034",
"",
"2"
],
"35": [
"Input_Bit_4",
"0",
"1",
"64",
false,
"0035",
"",
"3"
],
"36": [
"Input_Bit_5",
"0",
"1",
"64",
false,
"0036",
"",
"4"
],
"37": [
"Input_Bit_6",
"0",
"1",
"64",
false,
"0037",
"",
"5"
],
"38": [
"Input_Bit_7",
"0",
"1",
"64",
false,
"0038",
"",
"6"
],
"39": [
"Input_Bit_8",
"0",
"1",
"64",
false,
"0039",
"",
"7"
],
"40": [
"Input_Bit_9",
"0",
"1",
"64",
false,
"0040",
"",
"8"
],
"41": [
"Input_Bit_10",
"0",
"1",
"64",
false,
"0041",
"",
"9"
],
"42": [
"Input_Bit_11",
"0",
"1",
"64",
false,
"0042",
"",
"10"
],
"43": [
"Input_Bit_12",
"0",
"1",
"64",
false,
"0043",
"",
"11"
],
"44": [
"Input_Bit_13",
"0",
"1",
"64",
false,
"0044",
"",
"12"
],
"45": [
"Input_Bit_14",
"0",
"1",
"64",
false,
"0045",
"",
"13"
],
"46": [
"Input_Bit_15",
"0",
"1",
"64",
false,
"0046",
"",
"14"
],
"47": [
"Input_Bit_16",
"0",
"1",
"64",
false,
"0047",
"",
"15"
],
"48": [
"Input_Bit_17",
"0",
"1",
"64",
false,
"0048",
"",
"16"
],
"49": [
"Input_Bit_18",
"0",
"1",
"64",
false,
"0049",
"",
"17"
],
"50": [
"Input_Bit_19",
"0",
"1",
"64",
false,
"0050",
"",
"18"
],
"51": [
"Input_Bit_20",
"0",
"1",
"64",
false,
"0051",
"",
"19"
],
"52": [
"Input_Bit_21",
"0",
"1",
"64",
false,
"0052",
"",
"20"
],
"53": [
"Input_Bit_22",
"0",
"1",
"64",
false,
"0053",
"",
"21"
],
"54": [
"Input_Bit_23",
"0",
"1",
"64",
false,
"0054",
"",
"22"
],
"55": [
"Input_Bit_24",
"0",
"1",
"64",
false,
"0055",
"",
"23"
],
"56": [
"Input_Bit_25",
"0",
"1",
"64",
false,
"0056",
"",
"24"
],
"57": [
"Input_Bit_26",
"0",
"1",
"64",
false,
"0057",
"",
"25"
],
"58": [
"Input_Bit_27",
"0",
"1",
"64",
false,
"0058",
"",
"26"
],
"59": [
"Input_Bit_28",
"0",
"1",
"64",
false,
"0059",
"",
"27"
],
"60": [
"Input_Bit_29",
"0",
"1",
"64",
false,
"0060",
"",
"28"
],
"61": [
"Input_Bit_30",
"0",
"1",
"64",
false,
"0061",
"",
"29"
],
"62": [
"Input_Bit_31",
"0",
"1",
"64",
false,
"0062",
"",
"30"
],
"63": [
"Input_Bit_32",
"0",
"1",
"64",
false,
"0063",
"",
"31"
],
"64": [
"HEATER_V_STATUS",
"255",
"8",
"68",
false,
"0064",
"",
""
],
"65": [
"HEATER_I_STATUS",
"255",
"8",
"69",
false,
"0065",
"",
""
],
"66": [
"HEATER_P_STATUS",
"255",
"8",
"70",
false,
"0066",
"",
""
],
"67": [
"TEMP_PV_STATUS",
"255",
"8",
"71",
false,
"0067",
"",
""
],
"68": [
"TEMP_SET_PT_STATUS",
"255",
"8",
"72",
false,
"0068",
"",
""
],
"69": [
"FAN_V_STATUS",
"255",
"8",
"73",
false,
"0069",
"",
""
],
"70": [
"FAN_I_STATUS",
"255",
"8",
"74",
false,
"0070",
"",
""
],
"71": [
"FAN_P_STATUS",
"255",
"8",
"75",
false,
"0071",
"",
""
],
"72": [
"OVER_HEAT_STATUS",
"255",
"8",
"76",
false,
"0072",
"",
""
],
"73": [
"Modbus_Action_Status_10",
"255",
"8",
"77",
false,
"0073",
"",
""
],
"74": [
"Modbus_Action_Status_11",
"255",
"8",
"78",
false,
"0074",
"",
""
],
"75": [
"Modbus_Action_Status_12",
"255",
"8",
"79",
false,
"0075",
"",
""
],
"76": [
"Modbus_Action_Status_13",
"255",
"8",
"80",
false,
"0076",
"",
""
],
"77": [
"Modbus_Action_Status_14",
"255",
"8",
"81",
false,
"0077",
"",
""
],
"78": [
"Modbus_Action_Status_15",
"255",
"8",
"82",
false,
"0078",
"",
""
],
"79": [
"Modbus_Action_Status_16",
"255",
"8",
"83",
false,
"0079",
"",
""
],
"80": [
"Modbus_Action_Status_17",
"255",
"8",
"84",
false,
"0080",
"",
""
],
"81": [
"Modbus_Action_Status_18",
"255",
"8",
"85",
false,
"0081",
"",
""
],
"82": [
"Modbus_Action_Status_19",
"255",
"8",
"86",
false,
"0082",
"",
""
],
"83": [
"Modbus_Action_Status_20",
"255",
"8",
"87",
false,
"0083",
"",
""
],
"84": [
"Modbus_Action_Status_21",
"255",
"8",
"88",
false,
"0084",
"",
""
],
"85": [
"Modbus_Action_Status_22",
"255",
"8",
"89",
false,
"0085",
"",
""
],
"86": [
"Modbus_Action_Status_23",
"255",
"8",
"90",
false,
"0086",
"",
""
],
"87": [
"Modbus_Action_Status_24",
"255",
"8",
"91",
false,
"0087",
"",
""
],
"88": [
"Modbus_Action_Status_25",
"255",
"8",
"92",
false,
"0088",
"",
""
],
"89": [
"Modbus_Action_Status_26",
"255",
"8",
"93",
false,
"0089",
"",
""
],
"90": [
"Modbus_Action_Status_27",
"255",
"8",
"94",
false,
"0090",
"",
""
],
"91": [
"Modbus_Action_Status_28",
"255",
"8",
"95",
false,
"0091",
"",
""
],
"92": [
"Modbus_Action_Status_29",
"255",
"8",
"96",
false,
"0092",
"",
""
],
"93": [
"Modbus_Action_Status_30",
"255",
"8",
"97",
false,
"0093",
"",
""
],
"94": [
"Modbus_Action_Status_31",
"255",
"8",
"98",
false,
"0094",
"",
""
],
"95": [
"Modbus_Action_Status_32",
"255",
"8",
"99",
false,
"0095",
"",
""
],
"96": [
"Modbus_Master_Status",
"255",
"8",
"100",
false,
"0096",
"",
""
]
},
"out": {
"0": [
"Output_Word_1",
"0",
"16",
"101",
false,
"0097",
"",
""
],
"1": [
"Output_Word_2",
"0",
"16",
"103",
false,
"0098",
"",
""
],
"2": [
"Output_Word_3",
"0",
"16",
"105",
false,
"0099",
"",
""
],
"3": [
"Output_Word_4",
"0",
"16",
"107",
false,
"0100",
"",
""
],
"4": [
"Output_Word_5",
"0",
"16",
"109",
false,
"0101",
"",
""
],
"5": [
"Output_Word_6",
"0",
"16",
"111",
false,
"0102",
"",
""
],
"6": [
"Output_Word_7",
"0",
"16",
"113",
false,
"0103",
"",
""
],
"7": [
"Output_Word_8",
"0",
"16",
"115",
false,
"0104",
"",
""
],
"8": [
"Output_Word_9",
"0",
"16",
"117",
false,
"0105",
"",
""
],
"9": [
"Output_Word_10",
"0",
"16",
"119",
false,
"0106",
"",
""
],
"10": [
"Output_Word_11",
"0",
"16",
"121",
false,
"0107",
"",
""
],
"11": [
"Output_Word_12",
"0",
"16",
"123",
false,
"0108",
"",
""
],
"12": [
"Output_Word_13",
"0",
"16",
"125",
false,
"0109",
"",
""
],
"13": [
"Output_Word_14",
"0",
"16",
"127",
false,
"0110",
"",
""
],
"14": [
"Output_Word_15",
"0",
"16",
"129",
false,
"0111",
"",
""
],
"15": [
"Output_Word_16",
"0",
"16",
"131",
false,
"0112",
"",
""
],
"16": [
"Output_Word_17",
"0",
"16",
"133",
false,
"0113",
"",
""
],
"17": [
"Output_Word_18",
"0",
"16",
"135",
false,
"0114",
"",
""
],
"18": [
"Output_Word_19",
"0",
"16",
"137",
false,
"0115",
"",
""
],
"19": [
"Output_Word_20",
"0",
"16",
"139",
false,
"0116",
"",
""
],
"20": [
"Output_Word_21",
"0",
"16",
"141",
false,
"0117",
"",
""
],
"21": [
"Output_Word_22",
"0",
"16",
"143",
false,
"0118",
"",
""
],
"22": [
"Output_Word_23",
"0",
"16",
"145",
false,
"0119",
"",
""
],
"23": [
"Output_Word_24",
"0",
"16",
"147",
false,
"0120",
"",
""
],
"24": [
"Output_Word_25",
"0",
"16",
"149",
false,
"0121",
"",
""
],
"25": [
"Output_Word_26",
"0",
"16",
"151",
false,
"0122",
"",
""
],
"26": [
"Output_Word_27",
"0",
"16",
"153",
false,
"0123",
"",
""
],
"27": [
"Output_Word_28",
"0",
"16",
"155",
false,
"0124",
"",
""
],
"28": [
"Output_Word_29",
"0",
"16",
"157",
false,
"0125",
"",
""
],
"29": [
"Output_Word_30",
"0",
"16",
"159",
false,
"0126",
"",
""
],
"30": [
"Output_Word_31",
"0",
"16",
"161",
false,
"0127",
"",
""
],
"31": [
"Output_Word_32",
"0",
"16",
"163",
false,
"0128",
"",
""
],
"32": [
"Output_Bit_1",
"0",
"1",
"165",
false,
"0129",
"",
"0"
],
"33": [
"Output_Bit_2",
"0",
"1",
"165",
false,
"0130",
"",
"1"
],
"34": [
"Output_Bit_3",
"0",
"1",
"165",
false,
"0131",
"",
"2"
],
"35": [
"Output_Bit_4",
"0",
"1",
"165",
false,
"0132",
"",
"3"
],
"36": [
"Output_Bit_5",
"0",
"1",
"165",
false,
"0133",
"",
"4"
],
"37": [
"Output_Bit_6",
"0",
"1",
"165",
false,
"0134",
"",
"5"
],
"38": [
"Output_Bit_7",
"0",
"1",
"165",
false,
"0135",
"",
"6"
],
"39": [
"Output_Bit_8",
"0",
"1",
"165",
false,
"0136",
"",
"7"
],

"83": [
"TEMP_PV_STATUS_RESET",
"0",
"1",
"169",
false,
"0180",
"",
"3"
],
"84": [
"TEMP_SET_PT_STATUS_RESET",
"0",
"1",
"169",
false,
"0181",
"",
"4"
],
"85": [
"FAN_V_STATUS_RESET",
"0",
"1",
"169",
false,
"0182",
"",
"5"
],
"86": [
"FAN_I_STATUS_RESET",
"0",
"1",
"169",
false,
"0183",
"",
"6"
],
"87": [
"FAN_P_STATUS_RESET",
"0",
"1",
"169",
false,
"0184",
"",
"7"
],
"88": [
"OVER_HEAT_STATUS_RESET",
"0",
"1",
"169",
false,
"0185",
"",
"8"
],
"89": [
"Action_Status_Reset_10",
"0",
"1",
"169",
false,
"0186",
"",
"9"
],
"90": [
"Action_Status_Reset_11",
"0",
"1",
"169",
false,
"0187",
"",
"10"
],
"91": [
"Action_Status_Reset_12",
"0",
"1",
"169",
false,
"0188",
"",
"11"
],
"92": [
"Action_Status_Reset_13",
"0",
"1",
"169",
false,
"0189",
"",
"12"
],
"93": [
"Action_Status_Reset_14",
"0",
"1",
"169",
false,
"0190",
"",
"13"
],
"94": [
"Action_Status_Reset_15",
"0",
"1",
"169",
false,
"0191",
"",
"14"
],
"95": [
"Action_Status_Reset_16",
"0",
"1",
"169",
false,
"0192",
"",
"15"
],
"96": [
"Action_Status_Reset_17",
"0",
"1",
"169",
false,
"0193",
"",
"16"
],
"97": [
"Action_Status_Reset_18",
"0",
"1",
"169",
false,
"0194",
"",
"17"
],
"98": [
"Action_Status_Reset_19",
"0",
"1",
"169",
false,
"0195",
"",
"18"
],
"99": [
"Action_Status_Reset_20",
"0",
"1",
"169",
false,
"0196",
"",
"19"
],
"100": [
"Action_Status_Reset_21",
"0",
"1",
"169",
false,
"0197",
"",
"20"
],
"101": [
"Action_Status_Reset_22",
"0",
"1",
"169",
false,
"0198",
"",
"21"
],
"102": [
"Action_Status_Reset_23",
"0",
"1",
"169",
false,
"0199",
"",
"22"
],
"103": [
"Action_Status_Reset_24",
"0",
"1",
"169",
false,
"0200",
"",
"23"
],
"104": [
"Action_Status_Reset_25",
"0",
"1",
"169",
false,
"0201",
"",
"24"
],
"105": [
"Action_Status_Reset_26",
"0",
"1",
"169",
false,
"0202",
"",
"25"
],
"106": [
"Action_Status_Reset_27",
"0",
"1",
"169",
false,
"0203",
"",
"26"
],
"107": [
"Action_Status_Reset_28",
"0",
"1",
"169",
false,
"0204",
"",
"27"
],
"108": [
"Action_Status_Reset_29",
"0",
"1",
"169",
false,
"0205",
"",
"28"
],
"109": [
"Action_Status_Reset_30",
"0",
"1",
"169",
false,
"0206",
"",
"29"
],
"110": [
"Action_Status_Reset_31",
"0",
"1",
"169",
false,
"0207",
"",
"30"
],
"111": [
"Action_Status_Reset_32",
"0",
"1",
"169",
false,
"0208",
"",
"31"
],
"112": [
"Master_Status_Reset",
"0",
"8",
"173",
false,
"0209",
"",
""
]
},
"mem": {
"0": [
"device_path",
"/dev/ttyRS485",
"256",
"174",
false,
"0210",
"",
""
],
"1": [
"baud_rate",
"9600",
"32",
"208",
false,
"0211",
"",
""
],
"2": [
"parity",
"0",
"8",
"212",
false,
"0212",
"",
""
],
"3": [
"data_bits",
"8",
"8",
"213",
false,
"0213",
"",
""
],
"4": [
"stop_bits",
"1",
"8",
"214",
false,
"0214",
"",
""
]
},
"extend": {
"deviceMisc": {
"tbl_A_rowcount": "9",
"ModbusMasterStatus_ModbusRTUMaster_20180122_1_1": "Modbus_Master_Status",
"MasterStatusReset_ModbusRTUMaster_20180122_1_1": "Master_Status_Reset"
},
"data": {
"ActionId_01_ModbusRTUMaster_20180122_1_1": "1",
"SlaveAddress_01_ModbusRTUMaster_20180122_1_1": "4",
"SlaveIP_01_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_01_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_01_ModbusRTUMaster_20180122_1_1": "4",
"RegisterAddress_01_ModbusRTUMaster_20180122_1_1": "1",
"QuantityOfRegisters_01_ModbusRTUMaster_20180122_1_1": "2",
"ActionInterval_01_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_01_ModbusRTUMaster_20180122_1_1": "HEATER_V_HB",
"ModbusActionStatus_01_ModbusRTUMaster_20180122_1_1": "HEATER_V_STATUS",
"ActionStatusReset_01_ModbusRTUMaster_20180122_1_1": "HEATER_V_STATUS_RESET",
"ActionId_02_ModbusRTUMaster_20180122_1_1": "2",
"SlaveAddress_02_ModbusRTUMaster_20180122_1_1": "4",
"SlaveIP_02_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_02_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_02_ModbusRTUMaster_20180122_1_1": "4",
"RegisterAddress_02_ModbusRTUMaster_20180122_1_1": "13",
"QuantityOfRegisters_02_ModbusRTUMaster_20180122_1_1": "2",
"ActionInterval_02_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_02_ModbusRTUMaster_20180122_1_1": "HEATER_P_HB",
"ModbusActionStatus_02_ModbusRTUMaster_20180122_1_1": "HEATER_P_STATUS",
"ActionStatusReset_02_ModbusRTUMaster_20180122_1_1": "HEATER_P_STATUS_RESET",
"ActionId_03_ModbusRTUMaster_20180122_1_1": "3",
"SlaveAddress_03_ModbusRTUMaster_20180122_1_1": "4",
"SlaveIP_03_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_03_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_03_ModbusRTUMaster_20180122_1_1": "4",
"RegisterAddress_03_ModbusRTUMaster_20180122_1_1": "7",
"QuantityOfRegisters_03_ModbusRTUMaster_20180122_1_1": "2",
"ActionInterval_03_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_03_ModbusRTUMaster_20180122_1_1": "HEATER_I_HB",
"ModbusActionStatus_03_ModbusRTUMaster_20180122_1_1": "HEATER_I_STATUS",
"ActionStatusReset_03_ModbusRTUMaster_20180122_1_1": "HEATER_I_STATUS_RESET",
"ActionId_04_ModbusRTUMaster_20180122_1_1": "4",
"SlaveAddress_04_ModbusRTUMaster_20180122_1_1": "3",
"SlaveIP_04_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_04_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_04_ModbusRTUMaster_20180122_1_1": "3",
"RegisterAddress_04_ModbusRTUMaster_20180122_1_1": "1071",
"QuantityOfRegisters_04_ModbusRTUMaster_20180122_1_1": "1",
"ActionInterval_04_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_04_ModbusRTUMaster_20180122_1_1": "TEMP_PV",
"ModbusActionStatus_04_ModbusRTUMaster_20180122_1_1": "TEMP_PV_STATUS",
"ActionStatusReset_04_ModbusRTUMaster_20180122_1_1": "TEMP_PV_STATUS_RESET",
"ActionId_05_ModbusRTUMaster_20180122_1_1": "5",
"SlaveAddress_05_ModbusRTUMaster_20180122_1_1": "3",
"SlaveIP_05_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_05_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_05_ModbusRTUMaster_20180122_1_1": "3",
"RegisterAddress_05_ModbusRTUMaster_20180122_1_1": "1201",
"QuantityOfRegisters_05_ModbusRTUMaster_20180122_1_1": "1",
"ActionInterval_05_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_05_ModbusRTUMaster_20180122_1_1": "TEMP_SET_PT",
"ModbusActionStatus_05_ModbusRTUMaster_20180122_1_1": "TEMP_SET_PT_STATUS",
"ActionStatusReset_05_ModbusRTUMaster_20180122_1_1": "TEMP_SET_PT_STATUS_RESET",
"ActionId_06_ModbusRTUMaster_20180122_1_1": "6",
"SlaveAddress_06_ModbusRTUMaster_20180122_1_1": "2",
"SlaveIP_06_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_06_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_06_ModbusRTUMaster_20180122_1_1": "4",
"RegisterAddress_06_ModbusRTUMaster_20180122_1_1": "1",
"QuantityOfRegisters_06_ModbusRTUMaster_20180122_1_1": "2",
"ActionInterval_06_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_06_ModbusRTUMaster_20180122_1_1": "FAN_V_HB",
"ModbusActionStatus_06_ModbusRTUMaster_20180122_1_1": "FAN_V_STATUS",
"ActionStatusReset_06_ModbusRTUMaster_20180122_1_1": "FAN_V_STATUS_RESET",
"ActionId_07_ModbusRTUMaster_20180122_1_1": "7",
"SlaveAddress_07_ModbusRTUMaster_20180122_1_1": "2",
"SlaveIP_07_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_07_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_07_ModbusRTUMaster_20180122_1_1": "4",
"RegisterAddress_07_ModbusRTUMaster_20180122_1_1": "13",
"QuantityOfRegisters_07_ModbusRTUMaster_20180122_1_1": "2",
"ActionInterval_07_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_07_ModbusRTUMaster_20180122_1_1": "FAN_P_HB",
"ModbusActionStatus_07_ModbusRTUMaster_20180122_1_1": "FAN_P_STATUS",
"ActionStatusReset_07_ModbusRTUMaster_20180122_1_1": "FAN_P_STATUS_RESET",
"ActionId_08_ModbusRTUMaster_20180122_1_1": "8",
"SlaveAddress_08_ModbusRTUMaster_20180122_1_1": "2",
"SlaveIP_08_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_08_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_08_ModbusRTUMaster_20180122_1_1": "4",
"RegisterAddress_08_ModbusRTUMaster_20180122_1_1": "7",
"QuantityOfRegisters_08_ModbusRTUMaster_20180122_1_1": "2",
"ActionInterval_08_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_08_ModbusRTUMaster_20180122_1_1": "FAN_I_HB",
"ModbusActionStatus_08_ModbusRTUMaster_20180122_1_1": "FAN_I_STATUS",
"ActionStatusReset_08_ModbusRTUMaster_20180122_1_1": "FAN_I_STATUS_RESET",
"ActionId_09_ModbusRTUMaster_20180122_1_1": "9",
"SlaveAddress_09_ModbusRTUMaster_20180122_1_1": "5",
"SlaveIP_09_ModbusRTUMaster_20180122_1_1": "",
"SlavePort_09_ModbusRTUMaster_20180122_1_1": "",
"FunctionCode_09_ModbusRTUMaster_20180122_1_1": "3",
"RegisterAddress_09_ModbusRTUMaster_20180122_1_1": "1471",
"QuantityOfRegisters_09_ModbusRTUMaster_20180122_1_1": "1",
"ActionInterval_09_ModbusRTUMaster_20180122_1_1": "1000",
"DeviceValue_09_ModbusRTUMaster_20180122_1_1": "OVER_HEAT",
"ModbusActionStatus_09_ModbusRTUMaster_20180122_1_1": "OVER_HEAT_STATUS",
"ActionStatusReset_09_ModbusRTUMaster_20180122_1_1": "OVER_HEAT_STATUS_RESET"
}
}
}
],
"Connections": []
}
Last edited by in06khattab on 24 Jan 2024, 19:54, edited 1 time in total.
in06khattab
Posts: 29
Joined: 24 Jan 2024, 19:07
Answers: 0

Re: Can't read IO after performing an update

Post by in06khattab »

I printed out the offset, bit and length. It looks like the length is the one that is incorrect.
So it is this line of code that is bad. Do you know what it should be?
length = int(struct.unpack_from('>H',ret,35)[0]/8)

Code: Select all

pi@RevPi17663:~ $ python3 get_data.py
var name:  b'RPI_TEMP' , type:  SYSINT
offset 182
bit 0
length 4097
b'RPI_TEMP'
     value : 17155220143541192732448978526758802030548805684767964018055217602700297279846090573562915353852249749577583375848187241887813561332764503181786448525127889325733316364462421493845409948660676871873737426474201824294371394998467710157802205638631793947255349587052351124052801878121414621762011699692853228375591739210362790840775356184482075022680508391920208346900137215734286044209694050059715612238068543189310485078244218341420345187429363223252010121119908403768945957125814793325863239358568059579568131855091056293827615684658
     valid : True

pi@RevPi17663:~ $


Code: Select all

pi@RevPi17663:~ $ piTest -v RPI_TEMP
variable name: RPI_TEMP
       offset: 182
       length: 8
          bit: 0
          

Code: Select all

def read_bytes(var_name):
    # var_name should be b"VAR_NAME" when defined
	# We use function 17 to locate the variable in the process image
    try:
        prm = (b'K'[0]<<8) + 17
        name = struct.pack('37s',var_name) 
        ret = fcntl.ioctl(f,prm, name)		  
        offset = struct.unpack_from('H',ret,32)[0] 
        print("offset", offset)        
        bit = struct.unpack_from('B',ret,34)[0] 
        print("bit", bit)
        length = int(struct.unpack_from('>H',ret,35)[0]/8)
        print("length", length)
        
        f.seek(offset,0)
        value = f.read(length)
    except IOError:
        print("IO Error occured")
        value = b'0'
    return value
    
    
Last edited by in06khattab on 25 Jan 2024, 15:35, edited 2 times in total.
in06khattab
Posts: 29
Joined: 24 Jan 2024, 19:07
Answers: 0

Re: Can't read IO after performing an update

Post by in06khattab »

I tried to fix the length to 8 in which is the same value I got from piTest, but I still got an erroneous value returned. I also tried to use the .decode() function from here https://kunbus-gmbh.atlassian.net/servi ... /438108161. But it did not work.

This is the output when I fix the length to 8

Code: Select all

pi@RevPi17663:~ $ python3 get_data.py
var name:  b'RPI_TEMP' , type:  SYSINT
offset 182
bit 0
length 4097
value b'4x\x00\n\x00\xe8\x03p'
b'RPI_TEMP'
     value : 8071550044043507764
     valid : True

When I run piTest, I get a completely different output
pi@RevPi17663:~ $ piTest -1 -r 182,8,h
35 78 00 0a 00 e8 03 71



This is the output when I use the decode function:

Code: Select all

pi@RevPi17663:~ $ python3 get_data.py
var name:  b'RPI_TEMP' , type:  SYSINT
offset 182
bit 0
length 4097
Traceback (most recent call last):
  File "get_data.py", line 197, in <module>
    main()
  File "get_data.py", line 189, in main
    data = get_data()
  File "get_data.py", line 174, in get_data
    (valid, value) = request_val(varname,type)
  File "get_data.py", line 148, in request_val
    temp = read_bytes(var_name)
  File "get_data.py", line 30, in read_bytes
    print("value", value.decode())
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 5: invalid continuation byte

Code: Select all

def read_bytes(var_name):
    # var_name should be b"VAR_NAME" when defined
	# We use function 17 to locate the variable in the process image
    try:
        prm = (b'K'[0]<<8) + 17
        name = struct.pack('37s',var_name) 
        ret = fcntl.ioctl(f,prm, name)		  
        offset = struct.unpack_from('H',ret,32)[0] 
        print("offset", offset)        
        bit = struct.unpack_from('B',ret,34)[0] 
        print("bit", bit)
        length = int(struct.unpack_from('>H',ret,35)[0]/8)
        print("length", length)
        
        length=8
        f.seek(offset,0)
        value = f.read(length)
        
        
        print("value", value.decode())
        
Last edited by in06khattab on 25 Jan 2024, 15:54, edited 2 times in total.
Post Reply