велел мне тут начальник заняться программированием для S7-1200. Потребовалась сне RAND функция, пошукал по просторам интернета, не перевелись там еще добрые люди. Содрал оттуда программку для генератора псевдослучайных чисел.
// Get tick count
CALL "TIME_TCK" // [SFC64]
RET_VAL:=#Tick // [Local Time value]
// Use tick count to determine a "random" rotate value from 0 - 32
L #Tick
AD DW#16#1F
T #Rot
// Scramble the bits by rotating and XORing them
L #Tick
L #Rot
RLD
L #Tick
XOD
ABS
L #upper_limit // верхняя граница чисел
MOD
T #random
Радостный такой начал писать FC блок на SCL - не идет. Залез в мануалы - оказалось, что теперь все не так. Не могу сказать, что изменения мне не понравились, но было неожиданно. Теперь она выглядит так:
#VR := RD_SYS_T(OUT => #Ttmp);
#Tick := #Ttmp.NANOSECOND / DW#1000;
#Rot := #Tick & DW#16#1F;
#Txor :=SHR(IN:=#Tick, N:=#Rot);
#Tick := #Tick XOR #Txor;
#Tick := ABS_DINT(IN := #Tick);
#Tick := #Tick MOD #upper_limit;
#RANDA := #Tick;
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
SCL для S7=7-1200
Модератор: Глоб.модераторы
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
SCL для S7=7-1200
Получается что для S7 - 1200 STL Нет ?
Отправлено спустя 7 минут 14 секунд:
Т.е. я то считал, что S7-1200 нет паскале образного языка, а получается совсем наоборот.
Отправлено спустя 7 минут 14 секунд:
Т.е. я то считал, что S7-1200 нет паскале образного языка, а получается совсем наоборот.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
SCL для S7=7-1200
Мда. Лишний раз убеждаешься, что если что то непонятно - учи матчасть. Открыл мануал по программированию 1200/1500. Читаю. Вижу существенные отличия от программирования S7-300/
-
- новенький
- Сообщения: 1
- Зарегистрирован: 05 сен 2018, 14:37
- Имя: Петр
- Страна: Россия
- город/регион: Саяногрск
SCL для S7=7-1200
Здраствуйте, скажите а этот код точно работает в 1200 на SCL? Если да, то какие типы переменных используются?petr2off писал(а): ↑28 сен 2018, 07:08 велел мне тут начальник заняться программированием для S7-1200. Потребовалась сне RAND функция, пошукал по просторам интернета, не перевелись там еще добрые люди. Содрал оттуда программку для генератора псевдослучайных чисел.
// Get tick count
CALL "TIME_TCK" // [SFC64]
RET_VAL:=#Tick // [Local Time value]
// Use tick count to determine a "random" rotate value from 0 - 32
L #Tick
AD DW#16#1F
T #Rot
// Scramble the bits by rotating and XORing them
L #Tick
L #Rot
RLD
L #Tick
XOD
ABS
L #upper_limit // верхняя граница чисел
MOD
T #random
Радостный такой начал писать FC блок на SCL - не идет. Залез в мануалы - оказалось, что теперь все не так. Не могу сказать, что изменения мне не понравились, но было неожиданно. Теперь она выглядит так:
#VR := RD_SYS_T(OUT => #Ttmp);
#Tick := #Ttmp.NANOSECOND / DW#1000;
#Rot := #Tick & DW#16#1F;
#Txor :=SHR(IN:=#Tick, N:=#Rot);
#Tick := #Tick XOR #Txor;
#Tick := ABS_DINT(IN := #Tick);
#Tick := #Tick MOD #upper_limit;
#RANDA := #Tick;