Здравствуйте!CHANt писал(а):Да, для 1500 такое спокойно в SCL, а вот с 1200 пока никак.
Тоже вот не могу понять, в чем проблема загнать всю линейку PLC в одинаковые рамки ТИА Портал, чувство остается, что все сырое)))
Можно пример?
Здравствуйте!CHANt писал(а):Да, для 1500 такое спокойно в SCL, а вот с 1200 пока никак.
Тоже вот не могу понять, в чем проблема загнать всю линейку PLC в одинаковые рамки ТИА Портал, чувство остается, что все сырое)))
Пример того, как реализовать адресацию в SCL, если конкретнее, то мне нужно адресация с CU320-2 PN (S120) и CPU1500, адрес в S120 (DB2280.DBD4096) нужно изменять из CPU.CHANt писал(а):Пример чего?
Мне необходимо параметры ПИД регулятора p2280 и р2285 изменять из ЦПУ, в HMI панеле адрес именно такой DB2280.DBD4096 и DB2285.DBD4096 и всё работает, но мне нужно изменять именно из ЦПУ, да и не обязательно SCLCHANt писал(а):Подробней по обмену с Синамиксом и PLC. Что делаем, чего пытаемся достичь, используя обмен по Профинету?
Что за адресация - DB2280.DBD4096? В синамиксе такой DB точно нет. Там вообще нет DB. Да и для контроллера DB с таким большим номером допустима? И надо ли... Описывайте, думаю тут вообще косвенная адресация не нужна, если идет речь об асинхронном обмене...
https://cache.industry.siemens.com/dl/f ... _final.pdfKhakimullin писал(а):CHANt писал(а):Что за адресация - DB2280.DBD4096? В синамиксе такой DB точно нет. Там вообще нет DB. Да и для контроллера DB с таким большим номером допустима?
p2280 Technologieregler Proportionalverstärkung / Tec_reg KpCHANt писал(а):1) Как вариант - если пример работает, то причина Вашего не успеха может быть в том, что Р2280 и Р2285 нельзя изменять на ходу, только при остановленном приводе. Так в документации написано для G120, как для S120 я не уверен. С панели на ходу перестраивает?
так вот собственно я и не знаю как это делать, если смотреть по аналогии с HMI, то нужно сначала связь как то прописать, а потом и адресация подтянется, а как эту связь прописать я и не знаю. В HMI там просто, в раздел "Связь" заходишь и прописываешь, как в примерке из PDF. Через телеграммы я так понял, нельзя эти параметры менять.CHANt писал(а):2) А как в контроллере Вы составляете запрос в Синамиксу? Т.е. там должен быть раздел где число из панели поступает в адрес DB2285.DBD4096, а Вам нужно отключить это в панели и подать свое число вместо начального.
уж слишком далеко идти))))CHANt писал(а):1) U, T - Вот это и означает, что изменять можно, но в силу вступает после выхода из этого состояния. Т.е. менять на ходу смысла нет. По мне так, проще до ПЧ дойти и поменять)))
так тут и проблема, аналогично HMI связь не получается сконфигурировать, а PKW только через телеграмма, а через телеграммы не предаются эти параметры)))CHANt писал(а):2) Тож самое, конфигурируй раздел связи аналогично HMI. Далее, я так понимаю, что там где-то, в проекте панели, данные из формы, четко грузятся в структуру телеграммы. посмотри для себя, как делают. Ну и поищи на сайте глобальной поддержки, примеры организации связи по PKW, т.е. ассинхронному обмену. Там придется самому писать запрос, читать ответ, слать число и подтверждать его.
да про связь в хардваре это понятно)), а вот каким образом "пользователя "разводят" на простоту работы" вотэто интересно, посмотреть бы на этот макрос))) ладно буду дальше думать)CHANt писал(а):Э, не. Давай не путать связь и работу с ПЧ. Связь в хардваре настраивай, также как и в хардваре настраивается панель с ПЧ.
А вот обмен данным PKW в PLC надо писать ручками, альтернатив нет. Да и в панели где-то макрос сидит, который и собирает телеграммы для ассинхронного обмена, т.е. пользователя "разводят" на простоту работы ))) Ищи пример по PKW у сименса, можно и по синамиксам, можно и по микромастерам и вперед. Два параметра всего))) А через PZD по синхронному обмену - да, нельзя их передать, так как требуется подтверждение на изменение.
Код: Выделить всё
Создаем, к примеру, DB100 со следующей структурой:
Посылаемая телеграмма:
DBW0 WORD это будет адрес параметра PKE
DBW2 WORD это будет индекс параметра IND
DBW4 WORD это будет старшее слово значения параметра PWE1
DBW6 WORD это будет младшее слово значения параметра PWE2
Принимаемая телеграмма:
DBW8 WORD это будет адрес принятого параметра PKE
DBW10 WORD это будет индекс принятого параметра IND
DBW12 WORD это будет старшее слово значения принятого параметра PWE1
DBW14 WORD это будет младшее слово значения принятого параметра PWE2
Далее, сложности – до параметра синамикса Р2000 величина параметра записывается в PKE (DBW0) напрямую, т.е. если запрашиваешь Р0305 (305 десятичное) то число НЕХ будет W#16#131.
Если параметр синамикса Р2280, то надо отнять 2000 (>W#16#7D0) и оставшуюся величину записать по адресу PKE (DBW0), а в индексе IND (DBW2) установить 15 бит (признак что параметр выше 2000). W#16#8000
Значение DBW4 и DBW6 пока нулевые остаются
Формируем входные данные на разрабатываемую функцию, типа:
wr_Adress_1 WORD
wr_Index_2 WORD
wr_word_3 WORD // параметр Hi
wr_word_4 WORD // параметр Lo
But_INPUT BOOL //нажата кнопка на запрос на панели
Формируем выходные данные разрабатываемой функции:
rd_word_1 WORD // адрес в ответе
rd_word_2 WORD // индекс в ответе
rd_word_3 WORD // значение бывает слово / двойное / реал
rd_word_4 WORD // значение
Темповые переменные:
Wait BOOL //ждем ответа от частотника
REC_15 INT //код ошибки SFC15
SEND_14 INT// код ошибки SFC14
Пишем свою программу запроса/ответа Синамикса. Я на STL буду, нет под рукой ни степа, ни портала. Начинаем сравнивать что за номер параметра запрашиваем:
L #wr_Adress_1; //адрес параметра
L W#16#7D0; //для адресов больше 2000 надо отнять 2000 и установить бит адресов
>=I ; //сравниваем
JCN Tr01; // адрес <2000 то уход на метку Tr01
-I ; // если адрес >2000 = адрес -2000
T DB100.DBW0; //записываем в DB100 в слово адреса DBW0
L W#16#8000; // Устанавливаем 15 бит в индексе
T DB100.DBW2; //записываем в DB100 в слово адреса DBW2
JU End ; //выходим из сравнения
Tr01: L #wr_Adress_1
T DB100.DBW0; //записываем в DB100 в слово адреса DBW0
JU End ; //выходим из сравнения
End: L W#16#0;
T DB100.DBW4; //записываем нуль в значение параметра старшего слова
T DB100.DBW6; //записываем нуль в значение параметра младшего слова
Начинаем передачу телеграммы:
A #But_INPUT; //если нажата кнопка запроса на панели, то
JCN End1; //Если не нажата то на метку окончания программы, иначе
//Считываем запрос PKW с помощью SFC15 "DPWR_DAT", ТИАпортале такая функция есть
CALL "DPWR_DAT"
LADDR := W#16#ххх,// адрес PKW частотника смотрим в хардваре
RECORD := P#DB100.DBX8.0 BYTE 8,// записываем 8 байт в db100
RET_VAL:= REC_15;// код ошибки
A #Wait; //Если есть бит ожидания ответа, то
JCN DDAT; //идем на метку повторной посылки телеграммы с запросом, иначе
S #Wait; // выставить флаг ожидания ответа
//чтение PKW с помощью SFC14
DDAT: CALL "DPRD_DAT"
LADDR := W#16#ххх,// адрес PKW частотника в хардваре
RET_VAL := #SEND_14, // код ошибки
RECORD := P#DB100.DBX0.0 BYTE 8);//8 байт пишем в db100
L DBW8; // адрес ответа
L DBW0; //адрес запроса
==I ; // адрес ответа должен совпадать с адресом запроса - иначе это ответ на другой запрос
JCN End1; //ждать ответа на этот запрос
R #Wait; // если равны значения, то сбросить флаг ожидания ответа
End1: NOP 0; //завершили
CHANt писал(а):Покопался в своих записях и архивах, предлагаю начать создать свою программку запроса/ответа.
Прости что не оформлено.Код: Выделить всё
Создаем, к примеру, DB100 со следующей структурой: Посылаемая телеграмма: DBW0 WORD это будет адрес параметра PKE DBW2 WORD это будет индекс параметра IND DBW4 WORD это будет старшее слово значения параметра PWE1 DBW6 WORD это будет младшее слово значения параметра PWE2 Принимаемая телеграмма: DBW8 WORD это будет адрес принятого параметра PKE DBW10 WORD это будет индекс принятого параметра IND DBW12 WORD это будет старшее слово значения принятого параметра PWE1 DBW14 WORD это будет младшее слово значения принятого параметра PWE2 Далее, сложности – до параметра синамикса Р2000 величина параметра записывается в PKE (DBW0) напрямую, т.е. если запрашиваешь Р0305 (305 десятичное) то число НЕХ будет W#16#131. Если параметр синамикса Р2280, то надо отнять 2000 (>W#16#7D0) и оставшуюся величину записать по адресу PKE (DBW0), а в индексе IND (DBW2) установить 15 бит (признак что параметр выше 2000). W#16#8000 Значение DBW4 и DBW6 пока нулевые остаются Формируем входные данные на разрабатываемую функцию, типа: wr_Adress_1 WORD wr_Index_2 WORD wr_word_3 WORD // параметр Hi wr_word_4 WORD // параметр Lo But_INPUT BOOL //нажата кнопка на запрос на панели Формируем выходные данные разрабатываемой функции: rd_word_1 WORD // адрес в ответе rd_word_2 WORD // индекс в ответе rd_word_3 WORD // значение бывает слово / двойное / реал rd_word_4 WORD // значение Темповые переменные: Wait BOOL //ждем ответа от частотника REC_15 INT //код ошибки SFC15 SEND_14 INT// код ошибки SFC14 Пишем свою программу запроса/ответа Синамикса. Я на STL буду, нет под рукой ни степа, ни портала. Начинаем сравнивать что за номер параметра запрашиваем: L #wr_Adress_1; //адрес параметра L W#16#7D0; //для адресов больше 2000 надо отнять 2000 и установить бит адресов >=I ; //сравниваем JCN Tr01; // адрес <2000 то уход на метку Tr01 -I ; // если адрес >2000 = адрес -2000 T DB100.DBW0; //записываем в DB100 в слово адреса DBW0 L W#16#8000; // Устанавливаем 15 бит в индексе T DB100.DBW2; //записываем в DB100 в слово адреса DBW2 JU End ; //выходим из сравнения Tr01: L #wr_Adress_1 T DB100.DBW0; //записываем в DB100 в слово адреса DBW0 JU End ; //выходим из сравнения End: L W#16#0; T DB100.DBW4; //записываем нуль в значение параметра старшего слова T DB100.DBW6; //записываем нуль в значение параметра младшего слова Начинаем передачу телеграммы: A #But_INPUT; //если нажата кнопка запроса на панели, то JCN End1; //Если не нажата то на метку окончания программы, иначе //Считываем запрос PKW с помощью SFC15 "DPWR_DAT", ТИАпортале такая функция есть CALL "DPWR_DAT" LADDR := W#16#ххх,// адрес PKW частотника смотрим в хардваре RECORD := P#DB100.DBX8.0 BYTE 8,// записываем 8 байт в db100 RET_VAL:= REC_15;// код ошибки A #Wait; //Если есть бит ожидания ответа, то JCN DDAT; //идем на метку повторной посылки телеграммы с запросом, иначе S #Wait; // выставить флаг ожидания ответа //чтение PKW с помощью SFC14 DDAT: CALL "DPRD_DAT" LADDR := W#16#ххх,// адрес PKW частотника в хардваре RET_VAL := #SEND_14, // код ошибки RECORD := P#DB100.DBX0.0 BYTE 8);//8 байт пишем в db100 L DBW8; // адрес ответа L DBW0; //адрес запроса ==I ; // адрес ответа должен совпадать с адресом запроса - иначе это ответ на другой запрос JCN End1; //ждать ответа на этот запрос R #Wait; // если равны значения, то сбросить флаг ожидания ответа End1: NOP 0; //завершили
Если удастся разобраться, то получив ответ от ПЧ, проанализируй что пришло в PWE1 и PWE2. Разберись в размерностях. Потом попробуй поменять значение в ПЧ в Р2280 и снова запроси и посмотри что получишь в ответ. Затем уже можно будет заняться посылкой измененного значения.
Михайло, выдели пожалуйста в отдельную тему этот вопрос!
Так благодарности за помощь, ты единственный кто откликнулся)))CHANt писал(а):Пока рано еще благодарности рассыпать)))
На самом деле, я пока только "скелет" запроса предложил. И там скорей всего масса ошибок. Так что не молчи, если есть вопросы, задавай. По крайней мере ты в живую можешь увидеть на S120, мне же по экспериментировать не на чем. Ну и ответы реальные смогу только по вечерам)))
Khakimullin писал(а):Так благодарности за помощь, ты единственный кто откликнулся)))CHANt писал(а):Пока рано еще благодарности рассыпать)))
На самом деле, я пока только "скелет" запроса предложил. И там скорей всего масса ошибок. Так что не молчи, если есть вопросы, задавай. По крайней мере ты в живую можешь увидеть на S120, мне же по экспериментировать не на чем. Ну и ответы реальные смогу только по вечерам)))
В общем так, единственный адрес частотника который не выдавал ошибок, это адрес DO Control Unit_1(SIEMENS Telegramm 390, PZD-2/2) что не подходит. И поэтому адресу ничего путного я не получил. Я думаю что DPRD_DAT и DPWR_DAT не подходящие функции для получения параметров. Проблема в том что готовой подходящей функции похоже нет.
нет, первый раз, но связь наладил между HMI, S120 и PLC так что основы известны), но далеко не всё, общей картины пока не составил, обрывки в голове лежат.... С HMI могу изменять параметр р2280.CHANt писал(а):Ой, млин))) Я то не спросил! Ты вообще хоть раз вязал симатик с синамиксом по профибасу (профинету, разницы нет) - хотя бы по синхронному обмену? Понимание разницы 390 телеграммы и свободной есть? Это я хочу понять, с чего мне начинать объяснять)))