Нельзя у переменной BOOL найти какие-то разряды (in_v.0 - in_v.32)
Поменяй тип на DWORD
Захват-02.png
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
https://www.youtube.com/@%D0%9F%D0%B...BA%D0%BE%D0%B2
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Здравствуйте. Помогите пожалуйста понять теорию получения данных в ПЛК110 от МВ110-8АС.
В документации читаю что каждый вход на МВ рассматривается как отдельное устройство. Но тут же на форуме читаю как получить за один запрос данные по всем входам МВ. В какой форме приходит ответ в ПЛК от 8 датчиков 4..20мА? Например добавляю в UMD два элемента String input по 24 регистра каждый, как в примере у condor3000. Понимаю что в каждый стринг поступит 48 байт единичек и нулей. Как мне понять где лежит информация по каждому датчику и сколько байт она будет содержать?
Для начала скачайте руководство МВ110-8АС и посмотрите адреса регистров, они тут совершенно другие, соответственно и String input тут будет с другим числом байт и другим начальным адресом.
https://owen.ru/product/moduli_analo...n_and_software
Теория по работе со String тут https://owen.ru/forum/showthread.php...l=1#post244022
Например адрес Str14 будет 256, соответственно число в Str14[0]= числу в регистре 256 ( w1:=w_1^[0]; ) и т. д.
Последний раз редактировалось kondor3000; 26.07.2023 в 20:52.
senkos В начале МОЕЙ темы, на которую все ссылаются с примером от kondor3000, лежит готовый проект ПЛК с примером и подробными комментариями.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Предполагаю мне данную таблицу нужно смотреть, но как разобраться в ней.МВ110-8АС.jpg
Спасибо вам, попробую разобраться и понять суть.
Но все же не понятно в этой таблице какие регистры использовать мне для чтения, например iRD - 0x100....0x107, iRDt - 0x108....0x117, Read - 0x120....0x137
Последний раз редактировалось senkos; 26.07.2023 в 21:18.
Если вы видите адрес типа 0х100 (измеренное целое значение 1 канала, без смещения), то это адрес в HEX, открываете калькулятор в режиме программист набираете 100 в HEX,
переводите в DEC, получаете 256, десятичный адрес регистра, в котором лежит значение 1 канала.
Например адрес Str14 будет 256, соответственно число в Str14[0]= числу в регистре 256 ( w1:=w_1^[0]; ) и т. д.
Например вы получили значение 245, смещение вы задали 1 знак, делите 245 на 10, получаете температуру 24,5 градуса.
(0х118) 280 адрес - Статус 1 канала
288 адрес (0х120) - значение 1 канала Float ( 2 регистра, адреса 288 и 289), после перестановки регистров, получаете сразу температуру например 24,512856 градуса
Последний раз редактировалось kondor3000; 26.07.2023 в 22:40.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Благодарю вас за помощь в понимании!
Правильно ли я понял, что если мне не обязательны большие и точные данные float, то я могу обойтись двумя байтами с командой iRD, где в регистре 0х100 будут лежать данные по первому каналу. Задав смещение точки 1, получу десятичную часть, соответственно потом разделив полученное значение на 10.
String input в данном случае будет один с начальным адресом 256 и количеством регистров 8 для получения данных с восьми каналов.
Или садись, два. Учи дальше!
Дополню понимание темы:
Чтобы мне получить "Статус результата" + "Данные" + "Смещение" в ответе, создаю два String input. В первый String помещаю Данные (0х100...0х107) + Статус (0х118....0х11F), то есть 256 начальный регистр и всего 32 регистра из которых 16 (0х108...0х117) регистров будут мне не нужны. Во второй String помещаю Смещение 8 (0х20...0х27) регистров.
Последний раз редактировалось senkos; 27.07.2023 в 10:18.