Я практикант, только начал разбираться в CoDeSyS. Нашел у знакомых такую задачу по программированию:
Имеются три кнопки и четыре лампы. При кратковременном нажатии на кнопку S1 загораются лампы Н1 и Н2. При нажатии на кнопку S2 загораются лампы Н1 и Н3. При нажатии на кнопку S3 загораются лампы Н1 и Н4
Сделал программу на языке FBD. Сделал по условию задачи: S1- H1,H2; S2-H1,H3; S3-H1,H4
Сделал визуализацию(есть во вложении)
И итог: Нажимаю на S1- загорается только H2
Нажимаю на S2 - загорается только H3
Нажимаю на S3 - загорается и H1 и H4
Что не так?( Если можно, можно по-проще объяснить?
в ПЛК логика работы программы не такая как в обычном программировании.
1)считываются значения входов
2)выполняются ВСЕ шаги програмы
3)записываются значения выходов.
поэтому когда ты нажимаешь кнопку 1 - на втором шаге это значение сбрасывается
когда ты нажимаешь кнопку 2 - на третьем шаге это значение сбрасывается,
вот так.
эх...
добавь четвертую строку:
объедини кнопки по "или" и на выход повесь лампу 1
а из первых трех строк её убери.
тогда все заработает.
в твоем случае:
1) читаем входы
2) первая строка - если нажата кнопка 1 зажигаем 1 и 2 лампы
3) вторая строка - если нажата кнопка 2 зажигаем 1 и 3 (но так как она не нажата, 1 лампа ГАСИТСЯ!!!! )
4) третья строка - если нажата кнопка 3 зажигаем 1 и 4 (работает уже, так как шаг перед записью выходов последний )
5) записываем состояния выходов
Последний раз редактировалось magirus; 08.07.2009 в 14:06.