Я работаю с существующей программой C #, связывающейся с ПЛК через Kepserver (я знаю стороны PLC и Kepserver, но я новичок в C #). Я продолжаю получать "Opc.Da.Item" как значение (а не фактическое значение PLC). Я знаю, что это, вероятно, базовый вопрос, но где мне взять фактическое значение (что я вставляю в последнюю строку логики)? Спасибо за любую помощь.
Так же обстоят дела с другими разделами, которые читают данные из OPC, но я не вижу, что я делаю неправильно.
Я наконец возвращаюсь к этой проблеме, но проблема все еще не решена. С помощью метода, добавленного ниже, я получаю нулевое значение в results [0] .value.
private void ReadCompleteCallback_NotApplicable (object clientHandle, Opc.Da.ItemValueResult[] results)
{
HMINotApp_TextBox.Invoke(new EventHandler(delegate { HMINotApp_TextBox.Text = Convert.ToString(results[0].Value); }));
}
Opc.Da.Item[] OPC_NotApplicable = new Opc.Da.Item[1];
OPC_NotApplicable[0] = new Opc.Da.Item();
OPC_NotApplicable[0].ItemName = Brake_Press_ID + "B1156_barcode_DINT_value";
OPC_Not_Applicable.Add(OPC_NotApplicable[0]);
NotApplicable_GroupRead.AddItems(OPC_Not_Applicable.ToArray());
Opc.IRequest req;
NotApplicable_GroupRead.Read(NotApplicable_GroupRead.Items, 123, new Opc.Da.ReadCompleteEventHandler(ReadCompleteCallback_NotApplicable), out req);
label23.Text = OPC_Not_Applicable[0].ToString();
Я ожидаю, что значение будет 9999999, но я получаю Opc.Da.Item.
.ToString()
по умолчанию для экземпляра объекта вернет имя типа экземпляра, что, вероятно, и происходит здесь. Я не знаю библиотеки Opc, но, судя по краткому гуглу, возможно,OPC_Not_Applicable[0].Value.ToString();
здесь подойдет? - person steve16351   schedule 12.08.2019