http://www.owen.ru/forum/showthread.php?t=20465
Вид для печати
Добрый день.
Не ругайтесь, я новичок.
Есть ПЛК-100 и модем ПМ-01.
Соединены по RS-485.
В модеме отключено эхо.
Все делаю по описанию библиотеки и беру программу с примера, но после запуска "cfg_ok" остается "False".
Что я могу делать не так?
ГУРУ!!! Помогите, горит проект, форум перерыл.
Минимальное время цикла ПЛК ставил 10, 20... мс, не помогает
И постоянно висит флаг BUSY блока FB_SMS_SR
Приложил скрины:
Вложение 17051 Вложение 17052 Вложение 17053 Вложение 17054
Скачал предоставленные Вами архивы библиотеки Owen Sms.lib. После извлечения и попытки открыть с помощью CoDeSys появляется окошко с предложением ввести Password. Объясните пожалуйста, что мне нужно сделать , чтобы библиотека открылась и могла быть присоединеной к проекту?
Друзья, подскажите пожалуйста к первому посту темы прикреплена актуальная версия библиотеки?
Или нужно пробежаться по всем 60 страницам в поисках последней версии?
Библиотека прикрепленная к первому сообщению системы работает нормально. У меня все получилось.
При работе с модемом ПМ01 на скорости 9600 (я думаю с любым модемом и на всех скоростях, ситуация примерно совпадает) наблюдается следующий эффект.
Я попробовал отправлять сообщения каждую секунду, т.е. подавать передний фронт на вход SendSms функционального блока FB_SMS_SR раз в секунду.
Получателю приходило только каждое восьмое сообщение.
В моем проекте, события о которых нужно уведомлять по СМС могут происходить и чаще раза в 8 секунд, а допустить потерю данных нельзя.
Я разработал функциональный блок QUEUE_STRING, реализующий очередь строк.
Прикрепляю экспорт-файл с ФБ и выкладываю код функционального блока. Если кто-то заинтересуется, посмотрите, может найдутся ошибки которые я упустил.
Код:FUNCTION_BLOCK QUEUE_STRING
VAR_INPUT
ITEM_IN : STRING; (*Item that you need to enqueue*)
ENQUEUE : BOOL; (*On this front ITEM_IN will be enqueued*)
DEQUEUE : BOOL; (*On this front next item will be dequeued to ITEM_OUT*)
SIZE : BYTE := 10; (*Size of queue*)
RESET : BOOL;
END_VAR
VAR_OUTPUT
ITEM_OUT : STRING;
ERROR_CODE : WORD; (*0 - OK, 1 - overflow, 2 - queue is empty*)
END_VAR
VAR
data : ARRAY[0..255] OF STRING;
head : BYTE;
tail : BYTE;
count : BYTE;
R_TRIG_ENQUEUE : R_TRIG;
R_TRIG_DEQUEUE : R_TRIG;
R_TRIG_RESET : R_TRIG;
END_VAR
Код:R_TRIG_ENQUEUE(CLK := ENQUEUE);
R_TRIG_DEQUEUE(CLK := DEQUEUE);
R_TRIG_RESET(CLK := RESET);
IF R_TRIG_ENQUEUE.Q THEN
IF count < SIZE - 1 THEN
data[head] := ITEM_IN;
head := head + 1;
IF head = SIZE THEN
head := 0;
END_IF
count := count + 1;
ERROR_CODE := 0;
ELSE
ERROR_CODE := 1;
END_IF
END_IF
IF R_TRIG_DEQUEUE.Q THEN
IF count > 0 THEN
ITEM_OUT := data[tail];
tail := tail + 1;
IF tail = SIZE THEN
tail := 0;
END_IF
count := count - 1;
ERROR_CODE := 0;
ELSE
ERROR_CODE := 2;
END_IF
END_IF
IF R_TRIG_RESET.Q THEN
head := 0;
tail := 0;
count := 0;
ERROR_CODE := 0;
END_IF
Возник вопрос. Использую библиотеку SmsOwenLib и модуль Modem для GPRS связи. Соответственно, когда мне необходимо отправить сообщения, на модем подается команда стоп и при ModemLine=0 уже начинается работа библиотеки. При этом при попытки открыть порт через OpenCom из библиотеки SmsOwenLib порт открыть не получается. Решил удалить OpenCom и, о чудо, отправка сообщений заработала. Соответственно хотел уточнить правильно ли я понимаю, что при наличии подмодуля Modem в конфигурации, порт всегда открыт, даже если на модем приходит команда остановки и из программы можно исключать блоки OpenCom и FB_SMS_CFG?
хочу связать ваш модем с другим плк на codesys 2. Можно использовать вашу библиотеку? Если нет есть ли свободные?
ошибку дает - ошибка адреса %qb ...
codesys 2 плк abb ac500