DOP107eg+GSM-модем. Отправка смс по состоянию бита

Ответить
Madejch
Сообщения: 6
Зарегистрирован: 20 сен 2021, 05:24

DOP107eg+GSM-модем. Отправка смс по состоянию бита

Сообщение Madejch »

Здравствуйте, коллеги.
Прошу помощи в написании макроса для отправки СМС-сообщений через подключённый к панели GSM-модема.
Суть задачи. Есть ряд аварий, который выводится в Alarm List. При срабатывании нескольких аварий из этого списка нужно отправить соответствующую СМС на 4 номера.
Железо: SX2 (2 шт. по PLC Link), DOP107eg, Cinterion BGS2t (RS485)
Делал так:

Код: Выделить всё

#Background macro
IFB {RS232}1@M102 == ON THEN GOTO LABEL 1
IFB {RS232}1@M122 == ON THEN GOTO LABEL 2
IFB {RS232}1@M126 == ON THEN GOTO LABEL 3
IFB {RS232}1@M121 == ON THEN GOTO LABEL 4
LABEL 1
CALL 1
LABEL 2
CALL 2
LABEL 3
CALL 3
LABEL 4
CALL 4

#Submacro 1
$200 = INITCOM(1, 0, 1, 0, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMGS="89911234567"") 
$41=000DH
CHR($50,"AVARIA")
$56=001AH
$70=PUTCHARS($20,22,500)
Delay(1000)
$100=PUTCHARS($50,7,500)
CLEARCOMBUFFER(1, 1)
DELAY(10000)
	$200 = INITCOM(1, 2, 0, 2, 0, 12, 0)
SELECTCOM(1)
CHR($20,"AT+CMGS="89921234567"")
$41=000DH
CHR($50,"AVARIA")
$56=001AH
$70=PUTCHARS($20,22,500)
Delay(1000)
$100=PUTCHARS($50,7,500)
CLEARCOMBUFFER(1, 1)
DELAY(10000)
	$200 = INITCOM(1, 2, 0, 2, 0, 12, 0)
SELECTCOM(1)
CHR($20,"AT+CMGS="89931234567"")
$41=000DH
CHR($50,"AVARIA")
$56=001AH
$70=PUTCHARS($20,22,500)
Delay(1000)
$100=PUTCHARS($50,7,500)
CLEARCOMBUFFER(1, 1)
DELAY(10000)
	$200 = INITCOM(1, 2, 0, 2, 0, 12, 0)
SELECTCOM(1)
CHR($20,"AT+CMGS="89941234567"")
$41=000DH
CHR($50,"AVARIA")
$56=001AH
$70=PUTCHARS($20,22,500)
Delay(1000)
$100=PUTCHARS($50,7,500)
CLEARCOMBUFFER(1, 1)
RET
И еще 3 аналогичных субмакроса с другим содержанием сообщений.
В итоге, биты срабатывают, ничего не происходит.
Модем на предмет работоспособности проверил. Через терминал смс-ки отправляет.
При составлении макроса руководствовался документом DOP_and_GSM-modem.

пы.сы. Первый опыт работы с контроллерами Delta и их же панелями, не судите строго (:

Madejch
Сообщения: 6
Зарегистрирован: 20 сен 2021, 05:24

Re: DOP107eg+GSM-модем. Отправка смс по состоянию бита

Сообщение Madejch »

Попробовал сегодня такой вариант (запихнул все в background macro):

Код: Выделить всё

IFB {RS232}1@M14 == ON THEN GOTO LABEL 1 
IFB {RS232}1@M126 == ON THEN GOTO LABEL 2
IFB {RS232}1@M15 == ON THEN GOTO LABEL 3
	LABEL 1
$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=21,89991234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=21,89641234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=21,89521234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=21,89131234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,1)
CLEARCOMBUFFER(1,0)
DELAY(5000)
END
	LABEL 2
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=23,89991234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=23,89641234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=23,89521234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=23,89131234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
END
	LABEL 3
$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=22,89991234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=22,89641234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=22,89521234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
	$200 = INITCOM(1, 2, 0, 2, 0, 10, 0)
SELECTCOM(1)
CHR($20,"AT+CMSS=22,89131234567")
$42=000DH
$50=PUTCHARS($20,23,500)
CLEARCOMBUFFER(1,0)
CLEARCOMBUFFER(1,1)
DELAY(5000)
		END
Тоже не помогло

Yozik
Сообщения: 102
Зарегистрирован: 19 ноя 2015, 17:33

Re: DOP107eg+GSM-модем. Отправка смс по состоянию бита

Сообщение Yozik »

1. проверте возможность отправки.
Сделайте на панели кнопку, в свойства кнопи в макрос перед (или после ) нажатия впишите макрос отправки любой смс с каким попало текстом)

2. Если по кнопке СМС начнут отправлятся значит все ок. идем дальше

Вариант А
background macro плохо работает с опросами внешних устройств т.к. за один цикл сканирования панель выполняет не весь макрос, а только несколько строк.
Так что лучше использовать clock macro

Вариант Б
В свойствах нужных вам аварий сделайте открытие отдельного окна
В макросе окна (по открытию) напишите свой макрос отправки смс и добавте строчку закрытия текущего окна (есть где то такая тема)
(при авариях для отправки СМС будет выскакивать окошко на короткий промежуток)
Кстати в этом случае даже не надо делать анализ какое сообщение отправлять :)
Можно веть и 100-500 окон для каждого сообщения сделать и присвоить их нужным авариям
;)

Madejch
Сообщения: 6
Зарегистрирован: 20 сен 2021, 05:24

Re: DOP107eg+GSM-модем. Отправка смс по состоянию бита

Сообщение Madejch »

Yozik писал(а):
01 дек 2021, 15:38
Вариант Б
В свойствах нужных вам аварий сделайте открытие отдельного окна
В макросе окна (по открытию) напишите свой макрос отправки смс и добавте строчку закрытия текущего окна (есть где то такая тема)
(при авариях для отправки СМС будет выскакивать окошко на короткий промежуток)
Кстати в этом случае даже не надо делать анализ какое сообщение отправлять :)
Можно веть и 100-500 окон для каждого сообщения сделать и присвоить их нужным авариям
;)
Вариант Б кстати хорош, надо бы сделать так, спасибо.

Делал я макрос на кнопку. Не работает. Вывел на панель результат записи АТ-команды в регистр $20. Строка записывается. Успешность выполнения команды PUTCHARS тоже вывел, показывает 1.
У меня такое чувство, что проблема с символом переноса каретки (CR) $41=000DH.
Потому что если в гипертерминале ввести 0D в любых вариациях после ввода сообщения, терминал его игнорирует.

Yozik
Сообщения: 102
Зарегистрирован: 19 ноя 2015, 17:33

Re: DOP107eg+GSM-модем. Отправка смс по состоянию бита

Сообщение Yozik »

Madejch писал(а):
01 дек 2021, 16:02
Делал я макрос на кнопку. Не работает.
Тут ничем не помогу, т.к. ни со строчными переменными, ни с модемами дел не имел.

Но все равно, попробуйте для начала отправить сообщение по кнопке,

Ответить