Ошибка чтения блока данных 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
- Доступны только глобальные БД.
- Оптимизированный доступ к блоку должен быть отключен.
S7-1500
- Доступны только глобальные БД.
- Оптимизированный доступ к блоку должен быть отключен.
- Уровень доступа должен быть "полным" для ПЛК.
- "Механизм подключения" должен разрешать GET/PUT для внешних партнеров
Подробности со скриншотами можно найти по адресу: http://snap7.sourceforge.net/snap7_client.html
Надеюсь, поможет! Ура, Питер
Да все верно. Я воспользовался его методом и проблема решилась