Я установил соединение с ПЛК Siemens S7-300 (моделируется через PlcSIM) с использованием библиотеки libnodave. Нет проблем с подключением и записью данных в ПЛК. Однако я не могу изменить статус ПЛК с момента запуска/остановки. Я пытаюсь использовать следующие Libnodave методов для таких действий:Libnodave - daveStart() Ошибка при использовании TCP-соединения
int daveStatus = daveStart(dc);
int daveStatus = daveStop(dc);
Обе функции вызовов возвращает одинаковую Ошибки: 33794
nodave.c
CITES ошибки как следующий:
случае 0x8402 : вернуть «CPU уже в RUN или уже в STOP?»;
Использование функций daveStart()
и daveStop()
можно рассматривать в примере testS7online.c
:
if(doStop) {
daveStop(dc);
}
if(doRun) {
daveStart(dc);
}
В примерах старт/стоп функции вызываются только тогда, когда MPI соединения с ПЛК сделаны. Кто-нибудь знает, поддерживаются ли функции запуска/остановки для использования с TCP-соединениями? Если да, то какие-либо предложения относительно того, что может вызвать мою ошибку?
Вы пробовали его с помощью реального ПЛК? Является ли PLCSIM в режиме RUN-P? Иногда симуляция - это просто симуляция ... Вот альтернатива S7 lib: http://snap7.sourceforge.net – avra
Возможно, что в PLCSim не поддерживается изменение состояния ПЛК от запуска до остановки через libnodave. Вы можете определенно изменить статус PLCSim в окне Step7. Но я проведу вашу проблему и ответю более информативно в течение недели. – user3062807