Форум программистов, компьютерный форум, киберфорум
Наши страницы
Контроллеры PLC
Войти
Регистрация
Восстановить пароль
 
desipov
0 / 0 / 0
Регистрация: 22.06.2018
Сообщений: 7
1

Чтение и запись данных с устройств подключенных по PROFIBUS к S7-315

03.07.2018, 08:41. Просмотров 243. Ответов 10
Метки нет (Все метки)

Здравствуйте. Есть несколько устройств подключенных по PROFIBUS к S7-315. С них необходимо считывать пару слов и записывать столько же. В ручную с помощью PIW и PQW это делается без проблем. Решил написать FC-ку для обработки этих устройств. Возможно ли в FC-ке использовать PIW и PQW с переменными, что бы задавать адреса при вызове FC.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2018, 08:41
Ответы с готовыми решениями:

Получение данных с энкодера GEMMG-multivo на ПЛК 315-2DP по Profibus
Добрый день. Прошу помощи в решении задачи. Контроллер 315-2DP должен получать...

Передача данных через Profibus
Нигде не могу найти описание про так как, оно работает и как передавать данные....

Мониторинг подключенных устройств
всем добрый день :good: хочу написать (или хотя бы попробовать) программу,...

Контроль подключенных устройств
Всем привет, такая вот проблемка: имеется маршрутизатор SAGEMCOM F@st 2804 к...

Список подключенных HID-устройств
Доброго времени суток. Более менее неактуальные вопросыПодскажите пожалуйста,...

10
Max Dark
шКодер самоучка
1970 / 1746 / 861
Регистрация: 09.10.2013
Сообщений: 3,855
Записей в блоге: 6
Завершенные тесты: 2
03.07.2018, 09:53 2
desipov, если писать функцию на SCL, то можно обратиться по индексу, переданному в качестве параметра:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function some_device_ctrl: void
var_input
    in_addr : int; // адрес чтения
    out_addr: int; // адрес записи
end_var
var_temp
    data : word;
    result: word;
end_var
 
begin
    data := PIW[in_addr]; // читаем
    result := data; // какие то вычисления/логика
    PQW[out_addr] := result; // пишем
end_function
Если использовать LAD/FBD, то вероятно можно передавать через входные/выходные параметры функции.
Но я не уверен, что сработает правильно - там есть свои тонкости.
0
NewOrdered
401 / 178 / 63
Регистрация: 25.05.2012
Сообщений: 822
Записей в блоге: 1
03.07.2018, 12:52 3
Max Dark, на мой взгляд, SCL для таких задач это оверинжиниринг. STL тут хватит за глаза.

desipov, вам поможет косвенная адресация.

Пример 1:

в интерфейсе блока определяете
#in_I_Address - входной параметр типа INT (начальный адрес периферии)
#L_Address_DW - локальный параметр типа DWORD


Код
L     #in_I_Address           //чтобы из int получить адрес двойного слова
SLD   3                           //нужно выполнить инструкцию SLD (смещение влево) на три разряда
T     #L_Address_DW               //и сохранить результат в переменной длиной в 2 слова
L     PID [#L_Address_DW]         //обращение к адресу: <область памяти>[<переменная с адресом>]
T     DID   12                    //сохранение результата в DID = Datablock Instance Double word

Пример 2

Тоже самое с использованием адресного регистра
Код
L     #in_I_Address
LAR1                              //загрузка адреса из ACCU1 в адресный регистр
L     PID [AR1,P#0.0]             //обращение к адресу: <область памяти>[AR1, <смещение>]   Peripheral Input Double word
T     DID    12
0
desipov
0 / 0 / 0
Регистрация: 22.06.2018
Сообщений: 7
05.07.2018, 14:51  [ТС] 4
спасибо большое. попробовал примеры на STL. все заработало.
0
NewOrdered
401 / 178 / 63
Регистрация: 25.05.2012
Сообщений: 822
Записей в блоге: 1
05.07.2018, 15:11 5
desipov, как вам уже рассказали на другом форуме, если требуется читать/писать длинные телеграммы (более 4 байт) для управления ПЧ, то лучше использовать системные функции SFC14/SFC15.
0
desipov
0 / 0 / 0
Регистрация: 22.06.2018
Сообщений: 7
06.07.2018, 07:12  [ТС] 6
NewOrdered, насчет SFC14/SFC!5 я полностью согласен. В частности разговор идет о ПЧ ABB. Проблема в том что есть FC которая управляет старыми ABB и она написана на SFC14, но купили новый ABB-шник и она считывает с него только нули. Я всю голову поломал но не смог понять почему. Поэтому и встал вопрос об альтернативном варианте. И да мне нужно считывать с ПЧ всего 4 байта.
0
NewOrdered
401 / 178 / 63
Регистрация: 25.05.2012
Сообщений: 822
Записей в блоге: 1
06.07.2018, 11:21 7
Цитата Сообщение от desipov Посмотреть сообщение
всю голову поломал но не смог понять почему
Ну раз модель частотника изменилась, то скорее всего там и модуль профибус другой, и длина/структура телеграммы другая.
Также, возможно, следует определить состав телеграммы в редакторе HWConfig. В ее свойствах указать номера/адреса параметров ПЧ, которые должны входить в её состав.


Для диагностики можно использовать у SFC14/15 параметр RET_VAL.
0
desipov
0 / 0 / 0
Регистрация: 22.06.2018
Сообщений: 7
06.07.2018, 12:56  [ТС] 8
NewOrdered, параметр RET_VAL выдает нулевой код ошибки, так что длина телеграммы однозначно правильная
Цитата Сообщение от NewOrdered Посмотреть сообщение
Также, возможно, следует определить состав телеграммы в редакторе HWConfig. В ее свойствах указать номера/адреса параметров ПЧ, которые должны входить в её состав.
а немного поподробнее можно узнать
0
NewOrdered
401 / 178 / 63
Регистрация: 25.05.2012
Сообщений: 822
Записей в блоге: 1
06.07.2018, 14:45 9
Цитата Сообщение от desipov Посмотреть сообщение
а немного поподробнее можно узнать
Не работал с ПЧ ABB, но в общем случае могу посоветовать следующее:
1. Если GSD-файлы старого и нового ПЧ совпадают, то переходите к п.2. Если это разные типы устройств, то см. п.3.

2. В редакторе HWConfig выделите "старый" ПЧ. Правой клавишей по телеграмме > Object Properties > Parameter Assignment > Device Specific Parameters. Там должен быть состав телеграммы - порядок и адреса параметров для чтения и записи. Перенесите его в свойства телеграммы "нового" ПЧ.

3. В документации на ПЧ должны быть перечень параметров, доступных к обмену по профибусу (или другой шине) и их адреса. Отредактируйте телеграмму в соответствии с вашими потребностями.

Если просмотр/редактирование состава телеграммы невозможен, то модуль профибус ПЧ не поддерживает параметрирование телеграммы.
1
desipov
0 / 0 / 0
Регистрация: 22.06.2018
Сообщений: 7
08.08.2018, 09:40  [ТС] 10
NewOrdered, спасибо за информацию. К сожалению железку у меня уже забрали, но Ваша информация мне пригодится в следующий раз. И спасибо всем, частотник удалось на месте запустить, больше тупили электрики
0
NewOrdered
401 / 178 / 63
Регистрация: 25.05.2012
Сообщений: 822
Записей в блоге: 1
08.08.2018, 10:33 11
desipov,

Не по теме:

ну компьютер и STEP 7 у вас же не забрали :)

0
08.08.2018, 10:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2018, 10:33

Определение подключенных usb устройств
Здравствуйте форумчане. Пишу программу, которая при подключении съемного диска...

Чтение данных с bluetooth-устройств
Программа должна считать данные с bluetooth-устройства. Функция SearchBT()...

Как завести список подключенных устройств ?
Нужно сделать так что бы я мог приконектить 2 блутуза и мог к ним по очереди...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru