Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 24

Тема: EasyBuilderPro + Weintek MT8102iE + МВ210-204 + эл.привода

  1. #11

    По умолчанию

    Объявите J как INT и читайте в запросе 2 слова начиная с 51 регистра.
    Для начала ничего менять не нужно.
    Примерно так.
    INT j
    GetData(j, "Modul vvoda", 4x, 51, 2)
    Либо можно массив объявить. И отдельно каждый регистр как элемент массива обработать.
    Последний раз редактировалось pkl; 18.01.2024 в 09:24.

  2. #12

    По умолчанию

    Цитата Сообщение от pkl Посмотреть сообщение
    Объявите J как INT и читайте в запросе 2 слова начиная с 51 регистра.
    Для начала ничего менять не нужно.
    Примерно так.
    INT j
    GetData(j, "Modul vvoda", 4x, 51, 2)
    Либо можно массив объявить. И отдельно каждый регистр как элемент массива обработать.
    08.jpg09.jpg
    Попробовал, вот что получилось, ошибка, неверный тип переменной, количество данных надо 1

  3. #13

    По умолчанию

    То есть вам нужен один регистр № 50?
    И да, если объявили INT то читать нужно 1 значение, не 2. Программа сама прочитает 2 регистра. Моя ошибка.
    Последний раз редактировалось pkl; 18.01.2024 в 09:44.

  4. #14

    По умолчанию

    МВ210-204 на 20 входов или с 0 по 19 бит,
    Какой 1 регистр вы читаете ? У вас с 16 по 19 бит работать не будет. Нужно читать 2 регистра сразу.
    Сначала разберитесь с чтением всех 20 бит, потом разбирайтесь с макросом.
    Последний раз редактировалось kondor3000; 18.01.2024 в 09:57.

  5. #15

    По умолчанию

    Цитата Сообщение от pkl Посмотреть сообщение
    То есть вам нужен один регистр № 50?
    И да, если объявили INT то читать нужно 1 значение, не 2. Программа сама прочитает 2 регистра. Моя ошибка.
    Нужен один регистр, 51, именно по нему можно определить замкнут контакт или разомкнут. Пока ничего не помогло. Попробую массив, только с ними ни разу не работал.

  6. #16

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    МВ210-204 на 20 входов или с 0 по 19 бит,
    Какой 1 регистр вы читаете ? У вас с 16 по 19 бит работать не будет.
    Сначала разберитесь с чтением всех 20 бит, потом разбирайтесь с макросом.
    4х51 32bit unsigned читается.
    замкнутые контакты 1=1 2=2 3=4 4=8 5=16 6=32 и так далее, это число которое отображается на панели.
    При замыкании контакта должен срабатывать макрос на изменение регистра другого устройства на определенное число.
    БИтовая маска читается, я так думаю, но не получается ее преобразовать макросом чтобы он производил изменение.

  7. #17

    По умолчанию

    Если нужен 1 регистр с входами с 1 по 16, то массив вам не нужен. Подайте лог. 1 на вход модуля. Отобразите на экране полученное значение в двоичном виде ( надеюсь знаете как). Скрин экрана в студию. Пока вы не получите на экране число 0000....001 дальнейшие действия бессмысленны

  8. #18

    По умолчанию

    Цитата Сообщение от pkl Посмотреть сообщение
    Если нужен 1 регистр с входами с 1 по 16, то массив вам не нужен. Подайте лог. 1 на вход модуля. Отобразите на экране полученное значение в двоичном виде ( надеюсь знаете как). Скрин экрана в студию. Пока вы не получите на экране число 0000....001 дальнейшие действия бессмысленны
    Вы правильно мне подсказывали, все получилось. Считать 32bit binary регистр 4x51, выставил количество знаков 20, отобразил длинное число, хотя наверное это даже лишнее, сейчас попробую другую конфигурацию.
    Но самое главная запись которая помогла, это int j, а дальше как то само пошло поехало.
    Осталась задача, чтобы число которое меняем регистром 4х51, можно было менять и чтобы оно сохранялось при значении 0 регистра 4х51


    код макроса

    macro_command main()

    short i=0
    short m=0
    int j
    short k
    short d=1

    SetData(d, "Local HMI", LB, 20, 1)
    GetData(j, "Modul vvoda", 4x, 51, 1)
    if j==0 then
    i=i
    m=m
    end if
    if j==1 then
    i=400+i
    m=500+m
    end if
    if j==2 then
    i=600+i
    m=700+m
    end if
    if j==3 then
    i=800+i
    m=900+m
    end if
    SetData(i, "Local HMI", LW, 10, 1)
    SetData(m, "Local HMI", LW, 20, 1)
    end macro_command

  9. #19
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,138

    По умолчанию

    Распишите конкретно, что вам нужно от макроса. Текст, который вы привели кривой, потому что макрос в панели - это функция, поэтому, то что вы прибавляете m и i не на что не влияет

    Код:
    macro_command main()
    unsigned int mv
    short A = 0
    short B = 0
    
    GetData(mv, "Modul vvoda", 3x_Double, 51, 1)
    select case mv
    	case 1
    		A = чему-то
    		B = чему-то
    	break
    	case 2
    		A = чему-то
    		B = чему-то
    	break
    	case 3
    		A = чему-то
    		B = чему-то
    	break
    	case 4
    		A = чему-то
    		B = чему-то
    end select
    
    Здесь записываем А куда надо
    Здесь записываем B куда надо
    
    end macro_command
    Последний раз редактировалось Dimensy; 18.01.2024 в 11:21.

  10. #20

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Распишите конкретно, что вам нужно от макроса. Текст, который вы привели кривой, потому что макрос в панели - это функция, поэтому, то что вы прибавляете m и i не на что не влияет

    Код:
    macro_command main()
    unsigned int mv
    short A = 0
    short B = 0
    
    GetData(mv, "Modul vvoda", 3x_Double, 51, 1)
    select case mv
    	case 1
    		A = чему-то
    		B = чему-то
    	break
    	case 2
    		A = чему-то
    		B = чему-то
    	break
    	case 3
    		A = чему-то
    		B = чему-то
    	break
    	case 4
    		A = чему-то
    		B = чему-то
    end select
    
    Здесь записываем А куда надо
    Здесь записываем B куда надо
    
    end macro_command
    Ваш код тоже попробую. У меня получилось так, в процессе уже приходит понимание, что нужно сделать и как достичь результата.

    macro_command main()

    short i
    short m
    int j
    short k
    short b
    short d=1
    short n
    short x
    SetData(d, "Local HMI", LB, 20, 1)
    GetData(j, "Modul vvoda", 4x, 51, 1)
    GetData(k, "Local HMI", LW, 37, 1)
    GetData(b, "Local HMI", LW, 74, 1)
    GetData(n, "Local HMI", LW, 137, 1)
    GetData(x, "Local HMI", LW, 174, 1)
    if j==0 then

    i=k
    m=b
    SetData(i, "ElectroPrivod", 6x, 11#0, 1)
    SetData(m, "ElectroPrivod", 6x, 13#0, 1)
    end if
    if j==1 then
    i=n+k
    m=b
    SetData(i, "ElectroPrivod", 6x, 11#0, 1)
    SetData(m, "ElectroPrivod", 6x, 13#0, 1)
    end if
    if j==2 then
    i=k
    m=x+b
    SetData(i, "ElectroPrivod", 6x, 11#0, 1)
    SetData(m, "ElectroPrivod", 6x, 13#0, 1)
    end if
    if j==3 then
    i=n+k
    m=x+b
    SetData(i, "ElectroPrivod", 6x, 11#0, 1)
    SetData(m, "ElectroPrivod", 6x, 13#0, 1)
    end if
    SetData(i, "ElectroPrivod", 6x, 11#0, 1)
    SetData(m, "ElectroPrivod", 6x, 13#0, 1)
    end macro_command

    Код проверен, работает на оборудовании. Конфигурация есть выше.
    Проект что то не прикрепляется

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. ПЛК 210 - 03 и WEINTEK панель MT8102iE
    от TFear в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 11.07.2023, 12:33
  2. Подборка трм для привода ara 659
    от Ant1 в разделе Контроллеры для систем вентиляции и кондиционирования
    Ответов: 10
    Последнее сообщение: 01.09.2020, 08:11
  3. EasybuilderPro и ТРМ212 в режиме онлайн-симуляции.
    от rs1983 в разделе Панели оператора (HMI)
    Ответов: 7
    Последнее сообщение: 14.02.2018, 10:19
  4. Подключение привода к ПР114
    от x-adv в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 09.11.2013, 00:00
  5. Настройка привода ТРМ133
    от фОРМАТ в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 12.03.2009, 21:57

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •