Здравствуйте коллеги, подскажите пожалуйста, как подключиться к симплскаде от ПЛК210? говорят, что можно как то через символьные переменные и по ОПС серверу(arOPC). Что нужно включить или настроить у ПЛК 210. чтоб подключиться?Вложение 72537
Вид для печати
Здравствуйте коллеги, подскажите пожалуйста, как подключиться к симплскаде от ПЛК210? говорят, что можно как то через символьные переменные и по ОПС серверу(arOPC). Что нужно включить или настроить у ПЛК 210. чтоб подключиться?Вложение 72537
Добрый день.
Посмотрите примеры в этом документе:
https://ftp.owen.ru/CoDeSys3/11_Docu...5_OPC_v3.0.pdf
Как мне считать эти цифры? Вложение 72539
Вложение 72540 это я уже делал
Используйте вместо Modbus Poll другое ПО, в котором есть логи - например, Modbus Universal MasterOPC
https://masteropc.ru/download
Добрый вечер.
Подскажите пожалуйста, как правильно организовать задержку в цикле.
Поскольку из-за того что в string можно затолкать всего 255 символов, курл со всеми токенами и ботАйДи занимает 164 символа UTF-8 оставляя на сообщение около 45 символов UTF16
Оттого появилась задача - отправлять сообщения в телеграм с задержкой в 2 секунды в связи с ограничением API не более 30 сообщений в минуту и не более 1 в секунд.
Хотел затолкать TON прямо в начало цикла, типа wait. но не понимаю как его правильно прикрутить.
Код:IF eStatus <> Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERROR
THEN xSensorError := TRUE;
wsErrorMessage := ANALOG_SENSOR_ERROR_TO_WSTRING(eStatus);
wsMessage := WCONCAT(wsSensorName,wsErrorMessage);
sCommand := OSU.ReplaceAllSubstrings(c_sCommand, '#TOKEN#', sToken);
sCommand := OSU.ReplaceAllSubstrings(sCommand, '#CHAT_ID#', sChatId);
sCommand := OSU.ReplaceAllSubstrings(sCommand, '#PARSE_MODE#', sParseMode);
STU.ConvertUTF16toUTF8(ADR(wsMessage), ADR(sUtf8Message), SIZEOF(sUtf8Message), FALSE);
sCommand := OSU.ReplaceAllSubstrings(sCommand, '#TEXT#', sUtf8Message);
ELSIF rValue > rHiSpDeviationLevel OR rValue < rLowSpDeviationLevel
THEN
rValueRound := OSCAT_BASIC.ROUND(rValue,2);
wsValueText := TO_WSTRING(rValueRound);
wsSetPointText := TO_WSTRING(rSetPoint);
wsMaxDevPerc := TO_WSTRING(iMaxDeviationPercent);
awsMessage[1] := wsSensorName;
awsMessage[2] := OSU.WCONCAT8("Отклонился от уставки", wsSetPointText, " более чем на ", wsMaxDevPerc, "%");
awsMessage[3] := OSU.WCONCAT4("Текущее значение датчика", wsValueText, wsUnitsName, "");
FOR i := 1 TO 3 DO
sCommand := OSU.ReplaceAllSubstrings(c_sCommand, '#TOKEN#', sToken);
sCommand := OSU.ReplaceAllSubstrings(sCommand, '#CHAT_ID#', sChatId);
sCommand := OSU.ReplaceAllSubstrings(sCommand, '#PARSE_MODE#', sParseMode);
STU.ConvertUTF16toUTF8(ADR(awsMessage[i]), ADR(sUtf8Message), SIZEOF(sUtf8Message), FALSE);
sCommand := OSU.ReplaceAllSubstrings(sCommand, '#TEXT#', sUtf8Message);
END_FOR
ELSE
xSensorOK := TRUE;
END_IF
не получается
Вложение 72542
beatitas Я делал на СМСках от обратного: брал таймер BLNIK и раз в NN секунд просматривал очередь сообщений.
Если там что-то было - отправлял.