Валенок а если битовую маску записывать а потом один выход переписывать ШИМом ? на выходе ведь все передается в конце цикла программы. Так должно работать ?
На счет варианта софтового ШИМ как-то не понял, пример можно ?
Попробую как вы говорите.Вы мастеров натыкайте внутри слейва.
Попытался убрать мастер внутрь слейва Вложение 9187,преобразование типов делаю так Вложение 9189, но опять тишина. Что делать - не знаю. А изначально шёл по примеру Вложение 9188. Версия 2.3.9.38 соdеsys, а версии прошивки и таргета последние что лежат на сайте. Точно нет никаких перемычек на запрет использования портов?
Работать будет но до следующей записи. Следующая же маска - выставит шим в 0 или 1000. И скорее всего сбросит таймер периода. Вобщем фигня. Не усложняйте.
Софтовый шим : в поиске наберите ШИМ, тут было много. Кажется 1-2 строки. Не найдете - напишут.
Yчтите - "квантование" это шима у Вас - с циклом записи в модуль
Валенок может я не понимаю, но разве на физические выходы данные передаются не в конце цикла ?
начало цикла
......
запись битовой маски
запись значения ШИМ на один выход
конец цикла
Ну и что, что маска будет переписывать значение ШИМ если оно тут же будет записанно опять и в конце цикла все выгрузиться в выходы ? или в данном случае не будет записана маска ? и не будут переписаны измененные биты остальных выходов ? как это архитектурно устроено в ПЛК ?
Ладно, не буду мучаться, переведу пока все выходы на ШИМ.
Алексей Дмитриев я нашел софтовый на форуме на таймере. Мне только не совсем понятно как его использовать.
получается 1 будет держаться на выходе согласно таймеру и каждый цикл переписываться, (ну или 0 когда таймер выключен) и выход софтового ШИМ так же запаковываем в слово и отправляем битовой маской в модуль вывода.
Какую погрешность он будет иметь с учетом цикла программы и времени передачи по Modbus ? или это совсем не критично ?
Когда используешь ШИМ модуля, то все вроде аппаратно происходит, согласно прошивке модуля.
Оффтопик, я так и не понял, как написанную программу на CFC переделать в ST ?, экспорт и импорт не срабатывает. Программа импортируется опять в CFC. Просто хочется посмотреть, что я там наваял именно в ST варианте.
Т е. вы хотите сказать что плк 100 произвольно создаёт адресса регистров для себя слэйва, причём не с нуля, и мне их придётся искать програмно? А нет способа проще? И если не трудно то дайте примерчик подробнее. Очень Вас прошу. Дело в том что работаю с другими производителями ПЛК в других средах, отличных от кодесис.Попытался убрать мастер внутрь слейва ,преобразование типов делаю так , но опять тишина.
Да все работает. Там у мастера не все поля отображаются в слейв. И в качестве такого шлюза код вообще не нужен.
Что б разобраться (я через конфигурацию не работаю) можно сделать например так.
Слейв(
2 byte имя ему _
мастер1(..)
мастер2(..)
..
)
var
P : pointer to array[0..999] of word;
p := adr(_);
Дальше (оffлайне) в мастерах куда только можно пишем 1,2,3,4...
Раскрываем p^
Ищем индексы (а это и есть - регистры) где появились циферки 1,2,3,4...
Вообщем разбираемся какое поле мастера в каком регистре слейва
Флоаты - нужно потыкать какое-то число и обнаружив где меняется, учесть - это 2 регистра, с стартом от четного номера
он их не произвольно создает, а согласно таблице расположения добавляемых вами "узлов" с выравниванием.
http://www.owen.ru/catalog/62474614 вот здесь есть на примере использования с ИП320.
Когда вы идете по дереву добавленных "узлов" (регистры, биты, 2 байта, 4 байта), в свойствах показывается размерность.
почему только это как-то не отражать сразу в свойствах, непонятно ?
А, учитывая, что все делается через библиотеки, тогда наверное надо все ручками расчитывать от 0-ого регистра.