Прикрепляю скриншот того как выглядит переменная, когда я сам, через cds руками её перезаписываю.
cds_problem.png
Какой ПЛК?
СП307 - мастер на линии RS232?
ПЛК 160, панель СП307.
ПЛК - slave, СП307 - мастер, SCADA - мастер.
Проверить на железе нет возможности, поэтому пишу пример, откатываю, а потом применю приём в проекте.
Таких переменных и синхронизаций будет около 80 шт.
Поэтому нужен оптимальный метод, таймеров много использовать не смогу.
Всем спасибо за вклад, проблема всё таки с отладкой, нужно оказывается снимать флаг фиксации переменной.
Нужно ставить галку снять фиксацию перменной, по умолчанию галки нет, переменная краснеет, значит фиксируется. Я этого увы не знал.
Последний раз редактировалось hardkp; 09.04.2022 в 14:10. Причина: дополнить
Modbus.JPG
Конфигурация примерно так выглядит?
Такая настройка дает возможность подключить к одной Modbus-таблице 2 мастера через Debug и RS232,
а так же еще 4-е мастера через Ethernet.
При этом все могут читать и писать (по принципу, кто последний тот и прав).
Последний раз редактировалось EFrol; 09.04.2022 в 14:23.
Вы бы хоть видео для новичков посмотрели или поиском поискали. Этот вопрос задают через день.
Все переменные в конфигурации, в ПЛК - слейве будут глобальные и энергонезависимые. После заливки программы в контроллер задайте начальные значения хоть руками. Можно и начальную инициализацию сделать.
Последний раз редактировалось kondor3000; 11.04.2022 в 13:22.
Решил не создавать новую тему, а продолжить здесь же, но с циклом While в ST.
Хочу создать цикл, в котором переберутся все биты байта bCount. На эти биты физически повешены 8 реле, а на реле - 8 параллельных насосов с разной производительностью.
До того, как оператор запустит программу, мне нужно по-быстрому программно пробежаться по всем возможным вариантам включения и прикинуть: а получиться ли задать нужную производительность комбинацией насосов?
Код:
Цикл не отрабатывается. Происходит только один проход. Потом выход из функции.Код:FUNCTION myFunc: BOOL VAR bCount: BYTE := 0; END_VAR WHILE NOT bCount=255 DO bCount := bCount + 1; // IF bCount.0 THEN ......; END_IF // IF bCount.1 THEN ......; END_IF // IF bCount.2 THEN ......; END_IF // IF bCount.3 THEN ......; END_IF // IF bCount.4 THEN ......; END_IF // IF bCount.5 THEN ......; END_IF // IF bCount.6 THEN ......; END_IF // IF bCount.7 THEN ......; END_IF END_WHILE
Что я сделал не так?
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран