Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Добрый день. Вопрос такой - при объявлении ФБ или структуры необходимо часть переменных сделать retain persistent, а не весь блок. Как это сделать? Пытался пользоваться директивой {nonpersistent} , но что то не работает, по прежнему весь ФБ в retain.
если что - ПЛК 110 М2, версия кодесис 2.3.9.61
Ответ - никак. В справке про это четко написано.
Экран.PNG
В документе написано что можно с помощью директивы. С 5-19
Я к тому что может кто смог её использовать и получилось, либо это зависит от ПЛК либо что-то еще надо настроить что не описано. Либо - в мануале - ошибка или неверный перевод.
Так retain или persistent или retain persistent?
Добрый день коллеги!
Продолжение проекта ПЛК110 + МВ110-8ас и String:
считываю с каждого МВ данные в String и присваиваю этот string в структуру struct_original_8AC
На скрине выдает "Х = "Переполнение строки" это нормально или ненормально?
2023-11-22_11-30-44.png
По структуре если считать что command равен 1 байту то получается 80 байт, но у меня command в структуре равен DWORD то есть 4 байта. Не пойму как правильно должно быть.Код:TYPE struct_original_8AC :STRUCT command : DWORD; SRD : ARRAY[1..8] OF INT; Read : ARRAY[1..8,1..3] OF WORD; x : STRING(15); END_STRUCT END_TYPE
По этому поводу уже писал, при работе блоков, все SRD должны быть 0, все Read должны быть числами не равными 0, если есть смещение, то это сразу видно.
На command : DWORD и STRING плевать, они для выравнивания.
У вас на скрине похоже не все датчики подключены, по некоторым SRD не 0, а число как ошибка датчиков.
Так как тип стоит тип INT вместо WORD.
У меня ошибка обрыв датчика показывает 61453, а у вас -4083, а в HEX это 16#F00D - обрыв датчика.
У вас всего должно быть DWORD 4 байта +80 байт = 84 байта
И зачем вам стринг, так и не понял.
Последний раз редактировалось kondor3000; 22.11.2023 в 13:20.
Подключены только пара датчиков, показания по ним верные, меня смутило наличие надписи "Переполнение строки" думал мало ли какой перекос у меня.
У меня проблема такая что изначально было сконфигурировано 7шт UMD для семи компрессоров, а по факту оказалось что нужно три и вот когда я удаляю последине 4 шт у меня перестает все работать так как возможно плывут все данные. Массивы и структуры я переделал под 3 компрессора, а вот когда удаляю UMD лишние то все плывет. Причем в Master кроме этих UMD нет ничего.2023-11-22_13-03-04.png
В string я же получаю данные от МВ110 и он максимально 80 байт вмещает и чтобы не путаться добавили X[15]: string для удобства, чтобы "один string == один МВ110". Или вы про какой string?
У меня вот так происходит объявление структуры:
Код:original_8AC AT %QB6.1.0 : ARRAY[1..3] OF struct_original_8AC;
Последний раз редактировалось senkos; 22.11.2023 в 13:25.