Господа, столкнулся с проблемой, имеется: - S7-1200 1211C (dc/dc/rly) - CB 1241 (rs485) - Некое модбас устройство с регистрами превышающее допустимый предел в функции 04 (симатик пишет ограничение для функции mb_master от 30001 до 39999, а необходимо считать регистр 3ххххх). Есть ли какие-нибудь варианты это реализовать? Функции Modbus_comm_load и modbus_master не хотят работать с данной коммуникационной платой.

Комментарии: 28

  1. Dmitry

    так там же можно больше нулей, кажется, писать в адресе

    • Ilya

      То еще в блок встроена настройка соединения

      • Petr

        не хотелось бы писать свои функции для этого, удивлен, что сименс так ограничили этот диапазон

        • Dmitry

          а через 03 не получается?

          • Petr

            неа

            • Dmitry

              т.е. устройство в 03 не умеет?

              • Petr

                умеет, там свои регистры чтобы не было вопросов) с 3й функцией проблем нет)

                • Dmitry

                  ну так 03 функцией попробовать область памяти вычитать, которую в 04

                  • Petr

                    пробовали, ничего( даже нашел на форуме аналогичную проблему, там как раз как вы и пишете, просто использовали 3ю функцию https://support.industry.siemens.com/tf/ww/en/posts/s7-1200-mb-master-function-code-mode/124305?page=0

                    • Alexander

                      Я дурак или где... Но там же просто 33000

                      • Petr

                        но там устройству было все равно какая функция, данному к сожалению никак hex и dec путаете)

        • Ilya

          В классике вообще встроенного модбас не было) Либо плати деньги за ключ либо, пиши свою реализацию

          • Petr

            8189 Invalid data address value к счастью я эти времена не застал, молодой еще)))

            • Alexander

              А 103 коммманду не воспринимает?

              • Petr

                104 может? эта функция (Mode) только у Modbus_Master, а у меня MB_Master( CB 1241 с Modbus_Master и Modbus_Comm_Load не дружит

          • Anonim

            Либо используй тот код собственной реализации, что выложил добрый человек на официальном форуме сименс

            • Ilya

              ну можно и так, но написать это самому вот вообще не сложно

    • Petr

      работали бы те две функции, проблем бы не было, там есть отдельный MODE (104), который расширяет данный диапазон

      • Dmitry

        а, действительно

  2. Anonim

    у меня была такая же проблема с частотником Danfoss , спасло то что Danfoss продублировал адреса регистров в допустимой для функции сименса области. Mode=104 тоже не помог.Правда там был CM PtP в стойке ET200sp. У меня есть удачный опыт работы с CB1241 . Mb_comm load работает с ней и сам MB_Master . Не понятно почему именно с этой платой не работает готовый FB Master_Modbus от Siemens Online help. Написал свой драйвер опроса именно для случаев с CB1241. Могу скинут

    • Petr

      Было бы замечательно, если не трудно)

      • Anonim

        Но это не решит проблему, если надо считывать именно 4ой функцией модбаса, а производитель задал адрес регистра "за" 39999

        • Petr

          А, ну тогда да Не мой случай)

          • Ilya

            CRC считали посредством умножения по модуля 2 на полином A001 с последующем сдвигом вправно кажется на 2 байта? или табличкой? Просто интересно)

            • Anonim

              В том коде, что я смотрел как раз таки из-за неправильно посчитанных фиксированных CRC , счетчик в ответ фигню какую-то слал. Автор того кода не делал динамический расчет CRC

              • Ilya

                ну что первый что второй способы это динамический расчет статический это хардкод я написал свою функцию, как по мне удачная, без сдвигов

                • Anonim

                  так там запросы в счетчик одни и те же и почему-то для части запросов были неправильные CRC.

                  • Ilya

                    Считает хорошо

Не нашли ответ?

Вам также может быть интересно