Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Разное » Profibus-DP


Profibus-DP

Сообщений 1 страница 15 из 15

1

Народ, помогите найти по етой теме что нить полезное, возможно есть примеры на C, C++., или даже библиотеки, срочно надо!!!

0

2

Это большая военная тайна SIEMENSа. На сколько я знаю алгоритмы работы сименс продает за неплохие деньги (Речь о десятках тыс евто). Мостом между МК и профибас шиной стоит Сименсовая микросхема SPC2 или ASPC2 или троечка на конце. По ней информацию можно  найти в инете. Микросхему кипить можно. Опять же в сименсе.
почитай это (первое что попалось в яндексе)
http://electronix.ru/forum/lofiversion/ … 35371.html
http://www.kompex.ru/products/sicon16x/board/s165_22/
http://www.aqad.ru/index.php?tree=10000 … e6=5000123

Есть еще один проект AnyBUS.
http://www.anybus.com/
http://www.industrialnets.ru/index/?int … mp;node=90
http://www.industrialnets.ru/index/?int … mp;node=90
http://www.industrialnets.ru/index/?int … mp;node=86

0

3

Вот то же самое..блин вчера часов 5-6 сидел, все наверно зарубежные сайты и форумы облазил, нигде нет ничего,тока cухие коментарии и лит-ра в пдф по использованию ...но все равно спасибо)))  и кстати вчера набрел на такой сайт  hackchina.com,есть примеры на си для профибас, вот тока где достать саму библиотек :(

Отредактировано Роман (2011-04-05 13:27:37)

0

4

А я тут документик нашел - http://samsebeplc.ru/Doc/Siemens/Commun … s-DP_r.pdf
Угощайтесь  :blush:
Как бы его аккуратно переварить. Нужен костыль Profibus, у нас один девайс бывает отваливается редко, но быстро восстанавливается, поток передачи данных краковременно останавливается и это приводит к ошибке. Сделать бы буфер обманку.

0

5

Создает мастер MODBUS / клиента кадр.
 
Синтаксис
PRINT [#x,] MAKEMODBUS(slave, function, address, varbts )


slave - Подчиненный адрес. Это переменная или константа с действительным Modbus Slave для решения.

function - Номер функции. Это должно быть постоянным. На данный момент поддерживаются следующие функции:
• 03: регистр чтения (ы)
• 06: Запись одного регистра
• 16: Запись нескольких регистров

address -Начальный адрес регистра varbts
Для функции, которая посылает данные, такие как функции 6 и 16, то это должно быть переменной.
Для функции 06, которая может только написать единый реестр, это может быть байт или целое число или слово.
Для функции 16 может быть длинным, одинарным или двойным.
Для функции 6 и 16 адрес переменной передается функции.
Для функции 3 можно также указать количество байт для приема.
Или вы можете использовать переменную. При указании байт, слово будет использоваться в любом случае, так как слово (2 байта) является минимальным в протоколе MODBUS.
Но при передаче данных, вы можете отправить содержимое байта. Для MSB значение 0 будет передаваться в этом случае.


Функция MODBUS MAKE необходимо использовать в сочетании с утверждением PRINT. Он может быть использован только с аппаратной УАПП (1-4).
Протокол MODBUS является отраслевым стандартом. Протокол может быть использован с RS-232, RS-485 или TCP / IP или CAN.
Текущая реализация BASCOM работает только с RS-232 или RS485.
В MODBUS мы используем клиент / сервер и мастер / ведомый. Вы можете увидеть его в качестве веб-сервера и веб-браузер. Веб-сервер является клиент / подчиненный, который реагирует на мастер / веб-браузер.
Подчиненный будет реагировать только тогда, когда оно адресовано. Все остальные рабы просто продолжать слушать, пока они не будут решены.
Адресованный ведомый будет обрабатывать данные и отправить ответ.
В MODBUS данные передаются с MSB первым и LSB последним. Специальная контрольная сумма CRC16 отправляется первый LSB и MSB последнего.
Когда несколько регистров посылаются с функцией 16, данные разбиваются на слова, и для каждого слова, используется MSB-LSB порядок.
Например, LONG составляет 4 байта. LSB, NSB1, NSB2, MSB. Он будет послан как: NSB1, LSB, MSB, NSB2.
Для того, чтобы использовать функциональные возможности MODBUS, необходимо включить MODBUS.LBX с директивой $ LIB.
Обратите внимание на то, что BASCOM поддерживает только мастер MODBUS. Сервер MODBUS, который поддерживает вышеперечисленные функции будут доступны из MCS.

Код:
Example
'-----------------------------------------------------------------------------------------
'name                     : rs485-modbus-master.bas
'copyright                : (c) 1995-2008, MCS Electronics
'purpose                  : demo file for MAKEMODBUS
'micro                    : Mega162
'suited for demo          : yes
'commercial addon needed  : no
'-----------------------------------------------------------------------------------------
 
$regfile = "m162def.dat"                                    ' specify the used micro
$crystal = 8000000
$baud = 19200                                               ' use baud rate
$hwstack = 42                                               ' default use 42 for the hardware stack
$swstack = 40                                               ' default use 40 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space
 
$lib "modbus.lbx"                                           ' specify the additional library
Config Print1 = Portb.1 , Mode = Set                        ' specify RS-485 and direction pin
 
 
Rs485dir Alias Portb.1                                      'make an alias
Config Rs485dir = Output                                    'set direction register to output
Rs485dir = 0                                                ' set the pin to 0 for listening
 
Portc.0 = 1                                                 '  a pin is used with a switch
 
'The circuit from the help is used. See Using MAX485
'         TX    RX
' COM0   PD.1   PD.0   rs232 used for debugging
' COM1   PB.3   PB.2   rs485 used for MODBUS halve duplex
'           PB.1       data direction rs485
 
 
'configure the first UART for RS232
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
 
'configure the second UAR for RS485/MODBUS. Make sure all slaves/servers use the same settings
Config Com2 = 9600 , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
 
 
'use OPEN/CLOSE for using the second UART
Open "COM2:" For Binary As #1
 
'dimension some variables
Dim B As Byte
Dim W As Word
Dim L As Long
 
W = &H4567                                                  'assign a value
L = &H12345678                                              'assign a value
 
 
Print "RS-485 MODBUS master"
Do
   If Pinc.0 = 0 Then                                       ' test switch
      Waitms 500                                            ' delay
      Print "send request to slave/server"
     ' Send one of the following three messages
     ' Print #1 , Makemodbus(2 , 3 , 8 , 2);                ' slave 2, function 3, start address 8, 2 bytes
     ' Print #1 , Makemodbus(2 , 6 , 8 , W);                ' slave 2, function 6, address 8  , value of w
       Print #1 , Makemodbus(2 , 16 , 8 , L);               ' slave 2, function 16, address 8 , send a long
   End If
   If Ischarwaiting(#1) <> 0 Then                           'was something returned?
       B = Waitkey(#1)                                      'then get it
       Print Hex(b) ; ",";                                  'print the info
   End If
Loop
 
End

0

6

Кто нибудь пробовал Profibas реализовать? Никак не найду нужной информации.
Очень нужно сделать тестер передачи данных. Осциллографом приткнулся, там от 250 до 750кГц, скорость не известна. Пробовал приткнуть Usb-Com переходник, но полезного ничего не увидел.
Буду рад любой информации.

0

7

Структура сообщения Profibus
труктура сообщения Profibus не является сложной или требующей глубоких разъяснений темой. Однако, не зная тонкостей структуры сообщения Profibus работа с этим протоколом, его конфигурация и прочее становится невозможным. Об этом и поговорим в статье.

Протокол Profibus является мультимастерным и использует метод передачи маркера. Для начала работы необходимо сконфигурировать все элементы сети (установить адреса, скорости передачи данных установить master и slave в сети и структуру передачи данных). Для конфигурации устройств используется специальное программное обеспечение:

-STEP 7
-Simatic NCM

С помощью этих программ определяются пакеты передачи данных для обмена между master и slave в сети. Для добавления нового slave необходимо загрузить двоичный файл, в котором содержатся функциональные блоки, которые поддерживает данное устройство. В этих функциональных блоках находится информация о количестве и последовательности дискретных и аналоговых входов и выходов, а также промежуточных переменных. Каждый производитель оборудования с поддержкой протокола должен предоставить этот конфигурационный файл (*.GSD). В стандартной библиотеке программы уже находится достаточное количество устройств з поддержкой протокола.

После настройки ПО в каждое отдельное устройство загружается информация о структуре сообщения Profibus и количестве функциональных блоков, которые принимают участие в обмене данными, при этом используются так называемые запросы на конфигурирование. Кроме запросов конфигурации в реализуется ещё 2 типа сообщений:

1)      Запросы диагностики, которые служат для проверки работоспособности slave. Как правило, мастер сети периодически посылает запросы диагностики для проверки работоспособности сети.

2)      Запросы обмена данными.

Структура сообщения Profibus

Сообщения подразделяют на 5 типов:

1)      Со стандартной длинной команды:

http://autoworks.com.ua/wp-content/uploads/2012/02/11.png

ID – тип

SB – стартовый байт. Специальный код для идентификации начала .

A1 – адрес устройства, которому адресовано.

А2 – адрес устройства, которое посылает .

С – код команды, которую необходимо выполнить.

CRC – контрольная сумма, которая вычисляется из всех предыдущих байт побитовым логическим AND.

EB – байт, необходимый для идентификации конца.

2)      С переменной длинной команды:

http://autoworks.com.ua/wp-content/uploads/2012/02/21.png

L1, L2 – старший и младший байты, в которых содержится длинна сообщения (от 4 до 497 байт).

С – N байт.

3)      Сообщение с передачей маркера:

Используется для передачи маркера от одного мастера к другому.

http://autoworks.com.ua/wp-content/uploads/2012/02/31.png

A1 – адрес устройства, от которого нужно передать маркер.

А2 – адрес устройства, которому нужно передать маркер.

4)      Квитирование – 1 байт, подтверждение.

5)      С постоянной длинной информационного поля:

http://autoworks.com.ua/wp-content/uploads/2012/02/41.png

В соответствии с идентификатором  каждое устройство может быть сконфигурировано для передачи сообщения с постоянным количеством информации.

Если Вы не нашли ответа на интересующий вопрос в статье - воспользуйтесь поиском или задайте его в комментариях!

Источник - http://autoworks.com.ua/setevye-resheni … -profibus/




Profibus DP

Profibus DP – это профиль сетевого протокола обмена данными Profibus. Тут DP – это Decentralized Peripherals — Распределенная периферия. Главной задачей для протокола Profibus dp является реализация высокоскоростного обмена между ведущим устройством и ведомыми устройствами.

В роли ведущего устройства использовать стоит логический контроллер. Ведомыми выступают устройства распределенного ввода и вывода данных.

В  Profibus DP используются только 2 уровня модели OSI: физический и канальный. Используется так же пользовательский интерфейс. Поскольку уровни 3-7 не используются протоколом , достигается высокая скорость передачи данных.

http://autoworks.com.ua/wp-content/uploads/2012/02/architect_profibus_dp.jpg

Схема 1. архитектура  протокола

Доступ к канальному уровню организуется с помощью Direct Data Link Mapper (DDLM). Пользовательский интерфейс включает в себя набор функций пользователя и специальных аппаратных функций различных типов устройств Profibus DP.

Важно отметить, что эта спецификация и Profibus FMS обладают единой техникой передачи данных и единым протоколом доступа, а от того могут работать с общим кабелем.

Конфигурацией  сети является одномастерная структура (Mono-Master-Struktur). Коммуникация между dp-master и dp-slave происходит следующим образом:

По требованию dp-master, переходит в состояние активного и занимает место в списке вызовов (Polling-Liste). Обмен даными от dp-slave к dp-master и наоборот происходит циклически. Этот цикл представляет собой запрос(кадр Request Frame) от dp-master и ответ(кадр квитирования/подтверждения Response Frame) от dp-slave.

http://autoworks.com.ua/wp-content/uploads/2012/02/Strukture_prifibus_dp.jpg

Для реализации мультимастерной структуры , необходимо, чтобы dp-master обменивались данными между собой с помощью FMS коммуникаций.

Физический уровень профиля протокола или интерфейс Profibus dp может быть реализован на базе RS485 и оптического волокна.

Если Вы не нашли ответа на интересующий вопрос в статье - воспользуйтесь поиском или задайте его в комментариях!

Источник - http://autoworks.com.ua/setevye-resheniya/profibus-dp/

0

8

А аппаратная реализация какая?

0

9

MACTEPok написал(а):

А аппаратная реализация какая?

Даже не знаю.

У нас есть на работе лазер, он глючит. Приезжал мастер из сервисной компании, проблему не нашел. Говорит, что нужно менять устройство (300 тыс.р.), а если не оно, то кабель (весь станок развернуть и завернуть) и если не помогло, то блок PLC (2,5млн.р. кажись).
Так, как производство ещё то, нищебродное.... придётся мне лезть в корень проблемы.

У нас на этом гадком европейском лазере, который купили с выставки, он ещё первой ревизии. Вообщем, там есть клапан.
Клапан чудотворный, он переключает газы, то-есть либо кислород, либо азот и после ещё регулирует выходное давление. Сие чудо почему-то отваливается при работе на кислороде, причём более часто отвеливается при малом давлении кислорода (0,5Атм), на азоте всё норма.
Вот и получается, что нужно как-то првоерить передачу данных. В стойке ЧПУ при ошибке пишет "Обрыв связи Profibus", сунулся в ящик, а там реально RS-485.

Вот и думаю, поставить пиявку на Atmega328p, чтоб та могла понять, от кого ответа небыло и т.п.

Я тут ещё документик нарыл, но ясности он дал немного - http://samsebeplc.ru/Doc/Siemens/Commun … s-DP_r.pdf

Если сделаю, мне за это премии дадут и я буду счастлив  :D  форум озолочу  :crazy: , правда шансы почти равны нулю.

P:S: Чтоб заняться практическим исследованием передачи данных на месте, потребуется зонтик или шалаш в цеху, как назло, прям рядом с коннектором капает с крыши в ведро  :insane:

0

10

Хотя бы скорость шины определить для начала. Далее структурную схему Profibus (Сколько приемников и мастеров). Если скорости Меги хватит для чтения шины, то можно попробовать читать влоб. Не зная таблиц команд, можно будет определить только провалы при передаче данных в шине. Сам протокол предусматривает циклический = непрерывный обмен данными.

+1

11

Добрый день.
Мы пользуемся такой штукой https://procentec.com/products/profibus … content-1. Но стоит она не дешево. Может какието тестеры есть дешевле. Кажеться какойто флюковский тестер может Profibus читать, но я могу ошибаться.
Попробуй сначала в разъемах профибас подтянуть винтики, может где то проводок плохо закреплен. Бывает такое, но не часто.
Там шина работает по типу от главного контроллера идет запрос к станции, а станция отвечает. RS485 шина это витая пара.  Бывает такое, что танция или главный контроллер по каким то причинам начинает выдавать в сеть не то напряжение. Кажеться по спецификации там положено между A и B проводами должно быть около 5 вольт. Было такое контроллер выдает нормальное напряжение, а станция отвечает и выдает 2 вольта. И иногда контроллер может распознать ответ, а иногда нет.

"""Вот и получается, что нужно как-то првоерить передачу данных. В стойке ЧПУ при ошибке пишет "Обрыв связи Profibus", сунулся в ящик, а там реально RS-485."""
Profibus в железе это и есть RS485, просто протокол навороченный и скорости большие. Там даже на выходе станций стоит как правило микросхема ADM485.

Скорости в шине MPI по умолчанию 187 кбит/сек, в профибасе 1,5мбит (бывает около 500 кбит).
Если контроллер Siemens simatic s7, то подключив комп можно посмотреть каие ошибки были последние в контроллере и какая станция была отвалившись. Но там еще  нужен переходник(сименсовый) от компа к контроллеру.
Попробуй осцилом посмотреть вольтаж и кривизну сигнала, мождет помеху ктото дает, но там будет сложно понять кто отвечает, кто передает.

+1

12

Осциллографом вижу ±3,5 волта, частоту замерить не получается, но она от 250 до 750кГц. Наверно где-то 500-750к/бит.
Устройство одно, с перемычками под адрес.  Приткнулся Usb-Com - RS485, нормальных данных не наблюдаю, чего-то по красивее принимается в районе 250-480кБит.
Задача сложная, но есть идея, воткнуть комп рядом и удалённо, из уютного местечка через TeamViewer в комфорте Bascom`ить  :flirt:

Наткнулся на Aliexpress тоже на подобное устройство, правда не знаю, для чего оно - ссылка

0

13

эта ссылка: это для подключения контроллера к компьютеру, осцилографа(тестера) за эти деньги там нет

0

14

Нашел причину разрыва связи, если, что, знайте, бывает и такое:

принича разрыва связи в 6Гц на самодрючном предохранителе

Если кому интересно, то реализация Profibus в глючном блоке выполнена вот на этом чипе:
https://pp.vk.me/c636028/v636028961/319d0/CCUZ6pviPas.jpg
DATASHEET он управляется каким-то зверским PIC контроллером pic30f6011a-30i/pt, даташит не нашел, но информация кое какая есть: 16bit 2,5V 132kB Flash 120MHz TQFP64

Отредактировано Ev3658 (2016-10-08 12:59:07)

0

15

Получил я тут премии немного  :glasses: угощаю форум!!! Спасибо всем за помощь!!!

+2


Вы здесь » Программирование ATMEL в BASCOM. » Разное » Profibus-DP