Ошибка чтения блока данных C# и PLC (S7-1200)

Я работаю над соединением между C# и ПЛК Samsung Siemens (S7-1200). Я создал блок данных, который мне нужно прочитать и в конце концов написать. Соединение с ПЛК работает, но я ничего не могу с него прочитать. Это всегда дает мне следующую ошибку:

Ошибка 33028 контекст не поддерживается. Шаг 7 говорит: функция не реализована или ошибка в телеграмме.

Номер блока данных - 311. Я начинаю с первого байта и оставляю только 1 в качестве длины.

Я отключил Оптимизировать блокировку доступа, включение не решает эту проблему.

if (0 == lndConnection.connectPLC())
{
  Byte[]   bytes = new Byte[1];
  res = lndConnection.readBytes(libnodave.daveDB ,311,0, 1, bytes);
  if (res == 0)
     MessageBox.Show(lndConnection.getS32().ToString());
  else
  {
      mInt = 0;
      MessageBox.Show("error " + res + " " + libnodave.daveStrerror(res));
  }
} 

Я надеюсь, что кто-нибудь может помочь мне с моей проблемой.

3 ответа

Решение

Ответ от Roatin Mart: "S7-1200 имеет косвенный доступ по умолчанию. Проверьте, отключен ли доступ к оптимизированным блокам".

S7-1500 реализует расширенный протокол связи, который не поддерживается libnodave. Однако возможно подключать и читать / записывать глобальные блоки БД, используя "старый" протокол.

Я успешно общаюсь как с 1200, так и с 1500, но требуется дополнительная настройка plc-side.

S7-1200

  1. Доступны только глобальные БД.
  2. Оптимизированный доступ к блоку должен быть отключен.

S7-1500

  1. Доступны только глобальные БД.
  2. Оптимизированный доступ к блоку должен быть отключен.
  3. Уровень доступа должен быть "полным" для ПЛК.
  4. "Механизм подключения" должен разрешать GET/PUT для внешних партнеров

Подробности со скриншотами можно найти по адресу: http://snap7.sourceforge.net/snap7_client.html

Надеюсь, поможет! Ура, Питер

Да все верно. Я воспользовался его методом и проблема решилась

Другие вопросы по тегам