1
我使用modbus-protocoll創建了一個C#DLL以從模塊讀取模擬值。創建一個新對象覆蓋現有會話(modbus)
在第二個c#項目中,我使用dll並用「new ET18Z_A」創建一個對象。一切工作正常,只要我只使用一個模塊。當我創建第二個對象(ET18Z_B)時,第一個不再工作。
看起來好像第二個「新」覆蓋了第一個會話。
這裏是我用來讀取一個值的代碼。如果第二個「新」被跳過並且運行良好,並且函數ReadInputRegister讀取正確的值。如果我使三條線路處於活動狀態,並且第二個「新」也處於活動狀態,則函數ReadInputRegister不會讀取正確的值。也沒有錯誤,但結果是錯誤的。
ET7018Z.ET7018Z ET18Z_A = new ET7018Z.ET7018Z();
string IP_ET7018Z = "192.168.100.110";
Res = ET18Z_A.Initialize(IP_ET7018Z, out Message);
//The next three lines open connection to a second module with different IP
//ET7018Z.ET7018Z ET18Z_B = new ET7018Z.ET7018Z();
//IP_ET7018Z = "192.168.100.210";
//Res = ET18Z_B.Initialize(IP_ET7018Z, out Message);
int AI_7018Z = 0
Res = ET18Z_A.ReadInputRegister(AI_7018Z, out Value, out Message);
的初始化函數如下所示:
public class ET7018Z
{
static ModbusIpMaster master;
public int Initialize(string IP, out string Message)
{
Message = "No Error";
try
{
string ipAddress = IP;
int tcpPort = 502;
TcpClient tcpClient = new TcpClient();
tcpClient.BeginConnect(ipAddress, tcpPort, null, null);
master = ModbusIpMaster.CreateIp(tcpClient);
Thread.Sleep(100);
string message = "";
int Res = 0;
Res = SetEngineeringFormat(CState.ON, out message);
return 0;
}
}
}
這裏有什麼問題?