Öhm achnö, jetzt musste ich wieder meine alten Skripte suchen.
Ich nutze die IPS-Lösung für Modbus nicht wirklich, ausser für RTU over TCP weil ich dafür
noch keine brauchbare Alternativ gefunden habe.
Alles andere läuft über Modbus-Class.
Ist schneller, stabiler und einfacher bei der Installation und Wartung.
Aber egal, andere Geschichte.
Zu Deiner Frage/Bitte:
Am Wechselrichter - Sunspec Model Type auf float nicht auf int+SF
Client Socket:
Modbus Gateway: (übergeordnete Instanz der Client Socket)
Modbus Device: (übergeordnete Instanz der Modbus Gateway)
DIe Adresse ist nun die zum Wert: „PowerReal_P_Sum“
Hier mal eines meiner Skripte zum Probieren:
Macht die Sache um einiges leichter und schneller :rolleyes:
<?
// *****************************************************************************
// *****************************************************************************
// ID vom Parentobjekt
$parentID = 40887 /*[Fronius]*/;
// -----------------------------------------------------------------------------
// Einstellungen ClientSocket
$cs_data = array(
"name" => "CS_Fronius-Smartmeter",
"ident" => "pvCSMeter_1",
"ip" => "1.1.1.1",
"port" => 502
);
// -----------------------------------------------------------------------------
// Einstellungen ModbusDevice
$status = false; // Status emulieren
$time = 5000; // Pollzeit in ms
// *****************************************************************************
// *****************************************************************************
// ModbusGateway anlegen
// ----------------------
$modbusGateway = CreateModbusGateway("Fronius-Smartmeter", "pvModGwMeter_1", 10, 0, 240, false, $cs_data);
// ModbusDevices (Adressen) anlegen
// ---------------------------------
CreateModbusDevice($parentID, "Strom L1", "Current_AC_Phase_1", 10, 7, 40073, $modbusGateway);
CreateModbusDevice($parentID, "Strom L2", "Current_AC_Phase_2", 11, 7, 40075 /*[Test-Skripte\Saugroboter\Installation-Eigen]*/, $modbusGateway);
CreateModbusDevice($parentID, "Strom L3", "Current_AC_Phase_3", 12, 7, 40077, $modbusGateway);
CreateModbusDevice($parentID, "Spannung AVG-N", "Voltage_AC_AVG_N", 13, 7, 40079, $modbusGateway);
CreateModbusDevice($parentID, "Spannung L1-N", "Voltage_AC_Phase_1", 14, 7, 40081, $modbusGateway);
CreateModbusDevice($parentID, "Spannung L2-N", "Voltage_AC_Phase_2", 15, 7, 40083, $modbusGateway);
CreateModbusDevice($parentID, "Spannung L3-N", "Voltage_AC_Phase_3", 16, 7, 40085, $modbusGateway);
CreateModbusDevice($parentID, "Spannung AVG", "Voltage_AC_AVG_Phase", 17, 7, 40087, $modbusGateway);
CreateModbusDevice($parentID, "Spannung L1-L2", "Voltage_AC_PhaseToPhase_12", 18, 7, 40089, $modbusGateway);
CreateModbusDevice($parentID, "Spannung L2-L3", "Voltage_AC_PhaseToPhase_23", 19, 7, 40091, $modbusGateway);
CreateModbusDevice($parentID, "Spannung L3-L1", "Voltage_AC_PhaseToPhase_31", 20, 7, 40093, $modbusGateway);
CreateModbusDevice($parentID, "Frequenz", "Frequency_Phase_Average", 21, 7, 40095, $modbusGateway);
CreateModbusDevice($parentID, "Leistung gesamt", "PowerReal_P_Sum", 22, 7, 40097, $modbusGateway);
CreateModbusDevice($parentID, "Leistung L1", "PowerReal_P_Phase_1", 23, 7, 40099, $modbusGateway);
CreateModbusDevice($parentID, "Leistung L2", "PowerReal_P_Phase_2", 24, 7, 40101, $modbusGateway);
CreateModbusDevice($parentID, "Leistung L3", "PowerReal_P_Phase_3", 25, 7, 40103, $modbusGateway);
CreateModbusDevice($parentID, "Scheinleistung gesamt", "PowerReactive_P_Sum", 26, 7, 40113, $modbusGateway);
CreateModbusDevice($parentID, "cosPhi", "PowerFactor_Sum", 27, 7, 40121, $modbusGateway);
CreateModbusDevice($parentID, "Arbeit gesamt", "EnergyReal_WAC_Sum_Produced", 28, 7, 40129, $modbusGateway);
CreateModbusDevice($parentID, "Bezug gesamt", "EnergyReal_WAC_Sum_Consumed", 29, 7, 40137, $modbusGateway);
CreateModbusDevice($parentID, "Events", "Events", 30, 6, 40193, $modbusGateway);
// *****************************************************************************
// *****************************************************************************
// Funktion Modbus Gateway anlegen
// --------------------------------
function CreateModbusGateway($name, $ident, $pos, $mode, $address, $swapw, $cs_data){
$mb_gwID = @IPS_GetObjectIDByIdent($ident, $parentID);
if($mb_gwID === false){
$mb_gwID = IPS_CreateInstance("{A5F663AB-C400-4FE5-B207-4D67CC030564}");
IPS_SetName($mb_gwID, $name);
IPS_SetIdent($mb_gwID, $ident);
IPS_SetPosition($mb_gwID, $pos);
IPS_SetProperty($mb_gwID, "GatewayMode", $mode);
IPS_SetProperty($mb_gwID, "DeviceID", $address);
IPS_SetProperty($mb_gwID, "SwapWords", $swapw);
IPS_ApplyChanges($mb_gwID);
}
// ClientSocket Einstellungen
$csID = IPS_GetInstance($mb_gwID)['ConnectionID'];
if($csID === false) $csID = IPS_CreateInstance("{3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}");
IPS_SetName($csID, $cs_data['name']);
IPS_SetIdent($csID, $cs_data['ident']);
IPS_SetPosition($csID, 0);
IPS_SetProperty($csID, "Open", true);
IPS_SetProperty($csID, "Host", $cs_data['ip']);
IPS_SetProperty($csID, "Port", $cs_data['port']);
IPS_ApplyChanges($csID);
return $mb_gwID;
}
// Funktion Modbus Device anlegen
// -------------------------------
function CreateModbusDevice($parentID, $name, $ident, $pos, $datatype, $address, $connectID){
Global $status, $time;
$mb_addID = @IPS_GetObjectIDByIdent($ident, $parentID);
if($mb_addID === false){
$mb_addID = IPS_CreateInstance("{CB197E50-273D-4535-8C91-BB35273E3CA5}");
IPS_SetParent($mb_addID, $parentID);
IPS_SetName($mb_addID, $name);
IPS_SetIdent($mb_addID, $ident);
IPS_SetPosition($mb_addID, $position);
IPS_SetProperty($mb_addID, "DataType", $datatype);
IPS_SetProperty($mb_addID, "ReadFunctionCode", 3);
IPS_SetProperty($mb_addID, "ReadAddress", $address);
IPS_SetProperty($mb_addID, "WriteFunctionCode", 0);
IPS_SetProperty($mb_addID, "WriteAddress", 0);
IPS_SetProperty($mb_addID, "EmulateStatus", $status);
IPS_SetProperty($mb_addID, "Poller", $time);
IPS_DisconnectInstance($mb_addID);
IPS_ConnectInstance($mb_addID, $connectID);
IPS_ApplyChanges($mb_addID);
}
}
// *****************************************************************************
// *****************************************************************************
?>