PDA

Просмотр полной версии : Отправка смс на 2 и более номеров.



Linker1989
14.01.2015, 12:59
В общем могу отправить смс только на два номера.
Когда начинаю добавлять третий номер, то при компиляции ошибка.
Подскажите в чём ошибка?


listNum: ARRAY [0..3] OF STRING(11):=1('79105505555'), 2('79105506666'), 3('79105507777');
CheckListNum: STRING:='79105505555;79105506666;79105507777';

Ошибка 3760: Global_Variables (49): Неверное начальное значение

petera
14.01.2015, 15:56
В общем могу отправить смс только на два номера.
Когда начинаю добавлять третий номер, то при компиляции ошибка.
Подскажите в чём ошибка?


listNum: ARRAY [0..3] OF STRING(11):=1('79105505555'), 2('79105506666'), 3('79105507777');
CheckListNum: STRING:='79105505555;79105506666;79105507777';

Ошибка 3760: Global_Variables (49): Неверное начальное значение
listNum: ARRAY [0..3] OF STRING(11):=1('79105505555'), 2('79105506666'), 3('79105507777'); в этом объявлении цифры перед скобками означают, что значения в скобках повторяются это количество раз. Т.е. компилятор думает, что это нужно читать так:
'79105505555', '79105506666', '79105506666', '79105507777', '79105507777', '79105507777'
А это уже шесть значений. При этом массив объявлен на четыре элемента [0..3]:rolleyes:

Linker1989
14.01.2015, 17:16
Т.е. надо записать так?

listNum: ARRAY [0..2] OF STRING(11):=1('79105505555'), 1('79105506666'), 1('79105507777');
CheckListNum: STRING:='79105505555;79105506666;79105507777';


И можно ли сделать так чтобы эти номера можно было бы изменять, например с HMI панели или ещё как нибудь не подключая ноутбук?
?

energvk
14.01.2015, 20:47
Нет, написать нужно так

listNum :ARRAY [0..2] OF STRING (11):='79105505555','79105506666','79105507777';

energvk
14.01.2015, 20:55
Чтобы менять номера с панели я делаю так

listNum :ARRAY [0..4] OF DWORD;
p_listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;
И в программе:
16172
и

listNum:=p_listNum;
и в конфигурации в слэйве:
16173

Также можно завести эти значения на скаду и менять

petera
15.01.2015, 00:44
Чтобы менять номера с панели я делаю так

listNum :ARRAY [0..4] OF DWORD;
p_listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;

listNum:=p_listNum;
и в конфигурации в слэйве:
16173

Также можно завести эти значения на скаду и менять
Зачем использовать два массива listNum и p_listNum и делать лишние телодвижения по копированию одного в другой?
Из программы выбрасываем listNum:=p_listNum; и в объявлении переменных сразу
listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;

Забыли упомянуть, что переменная часть номера телефонов вводятся с панели в виде цифр, а не символов http://www.owen.ru/forum/showthread.php?t=8604&p=135055&viewfull=1#post135055
В этом случае ввод с панели можно сделать так http://www.owen.ru/forum/showthread.php?t=8604&p=135067&viewfull=1#post135067
http://www.owen.ru/forum/attachment.php?attachmentid=12509&d=1396823428

energvk
15.01.2015, 01:18
Зачем использовать два массива listNum и p_listNum и делать лишние телодвижения по копированию одного в другой?
Из программы выбрасываем listNum:=p_listNum; и в объявлении переменных сразу
listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;
Вообще да, код недопричесан был после экспериментов :)


Забыли упомянуть, что переменная часть номера телефонов вводятся с панели в виде цифр, а не символов

Не совсем понял про какие символы речь?:confused:

petera
15.01.2015, 02:11
Не совсем понял про какие символы речь?:confused:
Вот была такая история
1.
Подскажите кто нибудь, как из панели задавать несколько телефонных номеров для модема, с учётом, что количество номеров телефонов может меняться. Проект прилагаю.http://www.owen.ru/forum/showthread.php?t=8604&p=135037&viewfull=1#post135037
16174
2.
Может както так ?http://www.owen.ru/forum/showthread.php?t=8604&p=135038&viewfull=1#post135038
16176 16175
3.
Может подойти к этому с другой стороны?
Если номера телефонов будут только в России, то может быть не вводить и не хранить их в виде STRING, а использовать DWORD?
Полный номер собирать в программе из префикса '79' и DWORD

Получится для 10 номеров -10 элементов 4byte в модуле Slave.http://www.owen.ru/forum/showthread.php?t=8604&p=135055&viewfull=1#post135055
16177 16178

energvk
15.01.2015, 13:50
Понятно, по два символа жесть конечно редактировать

petera
15.01.2015, 14:02
Понятно, по два символа жесть конечно редактировать
Зачем по два?
На панели предполагалось использовать символьный ввод http://www.owen.ru/forum/showthread.php?t=8604&p=124691&viewfull=1#post124691
и вводить в одно поле сразу весь номер целиком.

energvk
15.01.2015, 16:12
Понял, в чем суть. А 3 DWORD вместо 6 WORD не проще разве?

Linker1989
16.01.2015, 12:37
Добавил я пять, четырёхбайтовых элемента для записи в них номеров из HMI Панели.
А какой адрес в сети будет, например у первого телефонного номера? Панель Weintek.
16196

petera
16.01.2015, 13:58
Добавил я пять, четырёхбайтовых элемента для записи в них номеров из HMI Панели.
А какой адрес в сети будет, например у первого телефонного номера? Панель Weintek.
16196
Если адреса предыдущих (Float) соответствуют действительность, то
для первого номера адрес 193;
для второго -195;
для третьего -197;
для четвертого -199;
для пятого -201

energvk
16.01.2015, 14:00
видимо 193

energvk
16.01.2015, 14:05
пока с телефона напечатаешь...

Linker1989
16.01.2015, 14:15
Поставил адреса в панели:
для первого номера адрес 193;
для второго -195;
для третьего -197;
для четвертого -199;
для пятого -201
Подключаюсь начинаю вводит номер, потом панель отключаю и подключаюсь к плк и через кодесис смотрю, номера изменились но не понятно в каком порядке.
16200
16201
Может надо ещё что то изменить?

energvk
16.01.2015, 14:17
непонятно, что именно не понятно. вроде всё видно

Linker1989
16.01.2015, 14:21
Я с панели ввожу для первого номера 111111111, для второго 222222222, для третьего 333333333, для четвёртого 444444444 и для пятого 555555555, а он при открытии в кодесисе вот что показывает:
16202
Частично меняет те номера на новые.

В listNum AT %QD6.104.0: ARRAY [0..4] OF DWORD:= надо писать только адрес первого байта?

energvk
16.01.2015, 14:45
Да, только первого. А в панели формат чисел правильно выбран?

Linker1989
16.01.2015, 14:58
Да точно ошибься с форматом числа, а какой правильно 32бит SIGNED? или 32бит UNSIGNED? С этими обоими нормально считываются значения.

energvk
16.01.2015, 15:19
если отрицательные значения не нужны, то без разницы вроде как

petera
16.01.2015, 17:01
если отрицательные значения не нужны, то без разницы вроде как
В ПЛК модуле Slave формат DWORD, а это значит, что только положительные числа будут отображаться правильно. А это значит только 32бит UNSIGNED.

Linker1989
19.01.2015, 14:20
Вот была такая история
1.http://www.owen.ru/forum/showthread.php?t=8604&p=135037&viewfull=1#post135037
16174
2.http://www.owen.ru/forum/showthread.php?t=8604&p=135038&viewfull=1#post135038
16176 16175
3.http://www.owen.ru/forum/showthread.php?t=8604&p=135055&viewfull=1#post135055
16177 16178

Всё работает нормально! Вот только такая проблема если номер телефона начинается как 7909 ххх хх хх , то ноль не записывыается первым числом телефонного номера. В любом другом месте номера ноль записывается нормально.

16262
например в listnum[2] не хватает 0 в самом начале.

energvk
19.01.2015, 14:26
Ну так сделайте для номеров с 0 объединение concat +790, а dword начинайте со следующей цифры, хотя конечно не очень удобно

Linker1989
19.01.2015, 14:45
Да как то не удобно получиться) Для этого надо создать два элемент CONCAT или как?
16263

energvk
19.01.2015, 14:47
Надо думать...

petera
19.01.2015, 15:20
Всё работает нормально! Вот только такая проблема если номер телефона начинается как 7909 ххх хх хх , то ноль не записывыается первым числом телефонного номера. В любом другом месте номера ноль записывается нормально.

16262
например в listnum[2] не хватает 0 в самом начале.


Надо думать...
Что тут думать, трясти надо...
16264
И будет Вам счастье:rolleyes:
16265

energvk
19.01.2015, 15:22
А вот даже "Что тут думать, трясти надо..." некогда

petera
19.01.2015, 15:30
А вот даже "Что тут думать, трясти надо..." некогда
Тогда смотрите картинки из предыдущего поста

energvk
19.01.2015, 15:47
Мельком глянул, всё логично...

Linker1989
19.01.2015, 16:44
Что тут думать, трясти надо...
16264
И будет Вам счастье:rolleyes:
16265

Спасибо огромное! Очень сильно выручаете)