S7NetPlus plc.Write()不更改数据块中的cartain值(西门子S7-1500)



我正在使用S7.NetPlus库连接到西门子S7-1500。当试图从plc读取数据时,没有问题。然而,我在为plc写入新值时遇到了不同的困难。我试过使用plc。Write或plc。WriteClass。奇怪的是,在运行模拟时,某些值确实会发生变化(除了DB46.DBX0.0之外,所有值都会发生变化——即使试图在TIA v17门户中更改其值,似乎也没有任何命令会影响此字段(。

示例1:

Plc.Write("DB46.DBX0.0", true);       
Plc.Write("DB46.DBX0.1",true);

示例2:

data.START = true;
data.STATUS_FINISHED = true;
data.STATUS_ERROR = true;
data.STATUS_ON = true;
data.LIFE_BIT = (short)(ushort)1;
Plc.WriteClass(data, 46);

当连接到实际的plc时,使用写入功能时,任何变量都不会改变。我能做什么?

这个问题解决了吗?

我也经历过类似的情况:我可以写入(S7-1500 OpenController(PLC,但最终它会停止写入。还是PLC停止接受外部写入?

与控制器的连接似乎已经建立,写入功能执行正常,连接最终关闭。

当从windows应用程序向PLC的写入停止工作时,必须重新启动PC部分才能再次写入。但同样的情况不断重演。

logText(string.format("Card {0} detected in range. ", cardID));
logText(string.format("Previous detected state is {0}", prevDectedStatus));
logText("Attempting to open a connectiong to the PLC");
plc.Open();
if (plc.IsConnected)
{
logText("Connection established");
try
{
// The RFID
rfidValue.Value = cardID;
rfidValue.Count = cardID.Length;
// The DateTime datatype must be of the correct S7 format.
String dt = DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss");
rfidTime.Value = DateTime.ParseExact(dt, "yyyy-MM-dd-HH:mm:ss", null);
// Card in range
rfidDet.Value = isCardDetected;
dataItemsWrite.Add(rfidValue);
dataItemsWrite.Add(rfidTime);
dataItemsWrite.Add(rfidDet);
logText(string.format("Attempting to write rfid={0}, time={1}, detected={2}", rfidValue.Value, rfidTime.Value, rfidDet.Value));
plc.Write(dataItemsWrite.ToArray());
logText("Done writing to PLC");
}
catch (Exception ex){
logText(string.format("Caught an exception: {0}", ex));
}
}
else
{
logText("Failed to establish a connection to PLC");
}
logText("Store state (prev=cur), used when card leaves field");
prevDectedStatus = isCardDetected;
logText("Done storing state");
logText("Attempt to close connection to PLC");
plc.Close();
logText("Done, connection is " + (plc.IsConnected ? "open":"closed"));

最新更新