1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Часть кода на STL перевести в SCL (обращение к адресам ПЛК через регистры АR1 и АR2)

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
kolya_asu
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 05 ноя 2018, 03:11
Имя: Коля
Страна: UA

Часть кода на STL перевести в SCL (обращение к адресам ПЛК через регистры АR1 и АR2)

Сообщение kolya_asu »

Добрый день. Нуждаюсь в помощи знатоков языков STL и SCL. Мне с языком SCL не приходилось раньше работать совсем. А сейчас с переходом на S7-1200е, столкнулся с проблемами. В общем понимаю, что надо как-то потихоньку осваивать данный язык. Но сейчас нужна помощь, как можно реализовать обращение к адресам ПЛК через регистры АR1 и АR2 в S7-1200? Вот данный код с ПЛК S7-400:

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

//Zapis 60 sіуw z Bloku A do B z offsetem 0.0
 A     #PZapis
      JNB   NIC
      L     0
      LAR1  
      L     P#0.0
      LAR1  
      L     1
      T     #BuforProg

//Petelka do ustawienia sie na pozycji 

RP:   L     #BuforProg
      L     #NumerPakiA
      ==I   
      JC    RO
      L     P#60.0
      +AR1  
      L     1
      L     #BuforProg
      +I    
      T     #BuforProg
      JU    RP

RO:   L     P#0.0
      LAR2  
      L     1
      T     #BuforParam

//Wpisujemy z A do B 

RR:   OPN   #BlokDB_A
      L     DBW [AR1,P#0.0]
      OPN   #BlokDB_B
      T     DBW [AR2,P#0.0]
      L     #BuforParam
      L     30
      ==I   
      JC    OK
      L     P#2.0
      +AR1  
      +AR2  
      L     #BuforParam
      L     1
      +I    
      T     #BuforParam
      JU    RR


OK:   R     #PZapis
      SET   
      CLR   
NIC:  NOP   0

Особое внимание "привлекает" последняя часть кода:

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

//Wpisujemy z A do B 

RR:   OPN   #BlokDB_A
      L     DBW [AR1,P#0.0]
      OPN   #BlokDB_B
      T     DBW [AR2,P#0.0]
      L     #BuforParam
      L     30
      ==I   
      JC    OK
      L     P#2.0
      +AR1  
      +AR2  
      L     #BuforParam
      L     1
      +I    
      T     #BuforParam
      JU    RR


OK:   R     #PZapis
      SET   
      CLR   
NIC:  NOP   0
Помогите пожалуйста, буду рад даже какому-нибудь примеру обращения к адресам ПЛК через регистры АR1 и АR2 с использованием указателя #P.

stesl
эксперт
эксперт
Сообщения: 1008
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Часть кода на STL перевести в SCL (обращение к адресам ПЛК через регистры АR1 и АR2)

Сообщение stesl »

kolya_asu, косвенная адресация в SCL конкретно к DB, осуществляется следующим способом:
Сперва № DB, справедливо
- DB1
- AnyNameDB
- word_to_block_db(AnyVar_type_WORD)
далее, через точку DW, DD, DB или DX, nо есть нет этой буквы В после D. Аналог в STL соответственно DBW, DBD, DBB и DBX
далее
- номера байта, слова, двойного слова
- или вместо абсолютной адресации - символьная: [AnyInt]

Итого: DB1.DBB[AnyInt], DB1.DBW[AnyInt], word_to_block_db(AnyVar_type_WORD).DD10, word_to_block_db(AnyVar_type_WORD).DW[AnyInt] - все допустимо.
При обращении к биту, правила те же, но байт и бит разделены запятой. Например: word_to_block_db(AnyVar_type_WORD).DХ[AnyByteInt, AnyBitInt]

И это касаемо классического Степ. В ТИА есть свои навороты, но сказанное выше тоже должно работать.

Можете посмотреть мой курс )) Начинающийся с этого видео
https://youtu.be/-JlzWnQlpSU
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Часть кода на STL перевести в SCL (обращение к адресам ПЛК через регистры АR1 и АR2)

Сообщение Nicolayy »

kolya_asu, регистры, аккумуляторы, биты состояния, стек -- это всё не про S7-1200
Ответить

Вернуться в «Simatic TIA Portal»