В руководстве на панель не описан регистр PFW36.
Пока мучить буду макрос, в примерах вроде всё разжевано, собрать бы это всё в единый макрос правильно, остальное вроде пока понятно. Спасибо.
В руководстве на панель не описан регистр PFW36.
Пока мучить буду макрос, в примерах вроде всё разжевано, собрать бы это всё в единый макрос правильно, остальное вроде пока понятно. Спасибо.
Последний раз редактировалось paul-th; 12.09.2017 в 12:39.
Что-то не совсем понял - по TCP доступ к отдельным битам через 4х невозможен (при выборе у, допустим, "переключателя с индикацией" порта PLC опция выбора 4х появляется, выбираем сконфигурированное подключение TCP - исчезает)?
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
И как работать с битами? (просто наводку дайте, попробую сам разобраться).
И может обладаете инфой когда старшая версия выйдет?
Заранее спасибо.
Совсем забыл...
Если в качестве слейва используется ПЛК ОВЕН, то следует заметить, что в конфигурации слейва ПЛК биты(0х) и регистры(4х) находятся в одной и той же области памяти.
Скрытый текст:
т.е. например бит 01, регистра 4х01 тоже самое, что и бит 0х17.
Таким образом можно вместо разрядов регистров 4х использовать соответствующие биты 0х
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Я так и делаю (правда в эмуляторе). Связь начинает рваться. Работает если только адреса 0, 16, 32 и т.д.
ПЛК 154 реальный...
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Добрый день.
Макрос почти сделал с помощником, но много вопросов.
При прописывании функции 06 на запись в прибор компилятор панели ругается. В примерах везде использовано 4х. и 3х.
И ещё вопрос, чтение из прибора текущей температуры идет в шестнадцатеричном виде, мне нужно изменять это значение, добавляя 1 градус каждые 5 минут и записывать в прибор. Нужно ли переводить значение в десятичный вид? И в каком виде записывать значение в регистр уставки прибора, в DWORD, десятичном или как? Там два регистра , уставки и усредненное значение. Есть ли ограничения на количество раз записей в прибор?
Последний раз редактировалось paul-th; 17.09.2017 в 16:15.
Просто Вы не знакомы с элементарными понятиями из теории Modbus. Вы путаете функции с адресными ссылкамиПри прописывании функции 06 на запись в прибор компилятор панели ругается. В примерах везде использовано 4х. и 3х.
Популярно можно ознакомится здесь https://sites.google.com/site/fieldb...odbuseducation
4x и 3х это не функции, а ссылки к областям памяти слева.
В общем случае существуют четыре области
0х - область дискретных выходов (доступны чтение и запись)
1х - область дискретных входов (доступно только чтение)
3х - область входных регистров (доступно только чтение)
4х - область выходных регистров (доступны чтение и запись)
Для каждой области существуют свои функции(команды) для записи или чтения. Так вот функция 06 это команда для записи одного значения в регистр из области 4х
Я сделал маленькую шпаргалку
Панель сама выберет нужную функцию, в зависимости от заданного в Write() или Read() 4х или 3х
Какие глупости. Из прибора читаются ПРОСТО значения и ни в каком не шестнадцатеричном виде.И ещё вопрос, чтение из прибора текущей температуры идет в шестнадцатеричном виде, мне нужно изменять это значение, добавляя 1 градус каждые 5 минут и записывать в прибор. Нужно ли переводить значение в десятичный вид? И в каком виде записывать значение в регистр уставки прибора, в DWORD, десятичном или как?
Ни какой разницы между десятичным и шестнадцатеричным представлением одного и того же значения нет. Hex или Oct придумано только для человека, в основном используется для вывода на экран или бумагу, а компьютеры оперируют наборами ноликов и единичек
123(Dec) = 7B(Hex) = 173(Oct) = 1111011(Bin) и это одно и тоже значение!
Вы же записываете в прибор число, а не символьную строку.
Если записываете значение переменной Ustavka, то вообще задумываться не о чем.
Просто Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, Ustavka);
или если значение уставки в регистре PSW[256]
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, *(DWORD*)(PSW + 256));
Если константу, то как Вам больше нравится хотите
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, 123); десятичное представление
или
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, 0173); восьмеричное представление
или
Write(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_DWORD, 0х7В); шестнадцатеричное представление
Последний раз редактировалось petera; 17.09.2017 в 20:59.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Извиняйте что путаю, я же писал что совсем темный, с "С" и модбасом дел вообще не имел, программировал только в LD и FBD и с однофамильными комплектами, где прописывать ручками ничего не надо. Макрос и писал как вы строки набросали, но возникли сомнения в правильности понимания процесса, так как помощник ничего не понимает в оборудовании а я в "С" и его тонкостях. Допилю макрос и выложу. Спасибо за понимание.