Open source plc STM32F103RBT6 source code Mitsubishi PLCFX1

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

в исходнике есть такое:

Код: Выделить всё

      //Changing the operating state control, the next switch-mode converter to a running state
      if( (sys_status == 0x10) && ((GPIOA_IDR & (1<<6)) == 0) )sys_status = 0x30;
По схеме на PA6 типа тумблер, может надо сделать ВКЛ
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3187247#p3187247"]в исходнике есть такое:

Код: Выделить всё

      //Changing the operating state control, the next switch-mode converter to a running state
      if( (sys_status == 0x10) && ((GPIOA_IDR & (1<<6)) == 0) )sys_status = 0x30;
По схеме на PA6 типа тумблер, может надо сделать ВКЛ[/uquote]
щелкал я этим "тумблером" - связи нет...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

должно еще зажечь LED1
по ком порту микронтроллер ждет передачу от ПК и чтоб совпало:

Код: Выделить всё

if((uart0_rxbuf[0] == 0x01)&&(uart0_rxbuf[1] == 0x55)&&(uart0_rxbuf[2] == 0xaa)&&(uart0_rxbuf[11] == 0x12)&&(uart0_rxbuf[12] == 0xef)&&(uart0_rxbuf[13] == 0xff)) 
в зависимости от других значений в принятом буфере будут выполняться те или иные действия и будут ответы, в том числе и запись программы PLC.
Программа ПК что нибудь похожее отправляет? Посмотреть можно каким нибудь типа Portmon.
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

GX Developer FX. шлет по ком порту -

Изображение Изображение

несколько раз стучит и отваливается ,так как ответа нет...

led1 зажигается на ~0,3 секунды после подачи питания или сброса контроллера.

Добавлено after 12 minutes:
Re: Open source plc STM32F103RBT6 source code Mitsubishi PLCFX1
Заливал STMFlashLoader Demo bin файл через то-же ком порт , может по другим адресам лить нужно ? объем памяти контроллеров разный...
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

адрес начала программы вроде у всех одинаковый.
Вариант теста COM порта:
Там есть комментированное в main.c:

Код: Выделить всё

UART0_setup();
//  uart0_txptr = 0;
//  uart0_txall = 2;
//  COM0_OUT;
//  USART1->DR = 0x55;
можно раскомментировать и глянуть отправляет ли чего микроконтроллер.
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

Плохо,что проект в iare, я немного в кеиле освоился...

Добавлено after 5 hours 50 minutes 48 seconds:
Re: Open source plc STM32F103RBT6 source code Mitsubishi PLCFX1
это что монитор ком порта показывает. тоже самое ,что на осциллографе передается в контроллер 0Х05. а в ответ тишина...
Вложения
1234.rar
(1.73 КБ) 607 скачиваний
Новый текстовый документ (2).txt
(22.05 КБ) 617 скачиваний
Новый текстовый документ.txt
монитор ком порта
(922 байт) 494 скачивания
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

настроен COM порт в программе ПК похоже на 9600
но в исходнике по умолчанию:

Код: Выделить всё

//============== Abnormal after treatment  9600bps 8 N 1
	default:
	/* Set up UART Baud rate  38400bps */
	USART_InitStructure.USART_BaudRate = 38400;
в комментарии одно, в коде другое - может попробовать 9600. Похоже скорость порта можно изменять, только после заливки программы:

Код: Выделить всё

switch(program[0x1C])
	{

//=============No parity communication setting area ======
	case(0x01):
	/* Set up UART Baud rate  4800bps */
	USART_InitStructure.USART_BaudRate = 4800;
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

Олег спасибо,я это тоже видел игрался со скоростью. толку нет... В рун стал заходить (светодиодик светится)проблема была изначально в отсутствие еепром, а потом наличии ее ,но не пустой... стер епром ,при включении в рун переходит на переключатель рун-стоп реагирует,но связи по ком порту нету.
вот этот кусок ,я как-то слабо понимаю
if((uart0_rxptr > 4) && (uart0_time > 9))
{
LED0_ON;
LED1_ON;
if((uart0_rxbuf[0] == 0x01)&&(uart0_rxbuf[1] == 0x55)&&(uart0_rxbuf[2] == 0xaa)&&(uart0_rxbuf[11] == 0x12)&&(uart0_rxbuf[12] == 0xef)&&(uart0_rxbuf[13] == 0xff))

uart0_rxptr - это что и почему должно быть больше 4 ? подключил светодиодики при передачи с копма 0x5 не проходит ,если больше 010111 проходит,но дальше естественно нет.
как узнать ,что находится в буферах uart0_rxbuf[0], [1] и т.д. ?
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

uart0_rxptr счетчик принятых байт, прибавляется в прерывании COM порта
uart0_time временной счетчик, прибавляется в прерывании системного таймера /* SysTick interrupt each 1000 Hz with HCLK equal to 72MHz */
т.е. будет реагировать если пришло более 4 байт + прошло какое то время, похоже 10mS.
Могу ошибаться, но микроконтроллер потом ждет типа преамбулы по ком порту 0x01 0x55 0xaa и завершение передачи 0x12 0xef 0xff, между преамбулой и концом команды микроконтроллеру.
Если раскомментировать USART1->DR = 0x55;, микроконтроллер при включении пошлет байт и будет видно работает ли COM порт
Как узнать - лучше отладчик, можно в другой COM порт выдавать...
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3188717#p3188717"]uart0_rxptr счетчик принятых байт, прибавляется в прерывании COM порта
uart0_time временной счетчик, прибавляется в прерывании системного таймера /* SysTick interrupt each 1000 Hz with HCLK equal to 72MHz */
т.е. будет реагировать если пришло более 4 байт + прошло какое то время, похоже 10mS.
Могу ошибаться, но микроконтроллер потом ждет типа преамбулы по ком порту 0x01 0x55 0xaa и завершение передачи 0x12 0xef 0xff, между преамбулой и концом команды микроконтроллеру.
Если раскомментировать USART1->DR = 0x55;, микроконтроллер при включении пошлет байт и будет видно работает ли COM порт
Как узнать - лучше отладчик, можно в другой COM порт выдавать...[/uquote]
примерно из кода ,я так и предсталял... с stm32 совсем мало работаю. Но ,тогда я в курить не могу одного - какие нафиг 4 байта, если на первой странице (продублирую немного)
imitation Mitsubishi FX1N PLC communication protocol C Code Demonstration program



Baud Rate: 9600
StopBits: 1, Parity: Even, DataBits: 7
Baud Rate: 9600
StopBits: 1, Parity: Even, DataBits: 7
PC : 05 // ENQ request
PLC: 06 // PLC Receive the correct response
PC : 02 30 30 45 30 32 30 32 03 36 43 // Discover PLC Type: FX1N \ FX1S
PLC: 02 36 32 36 36 03 44 37 // '6266'PLC model FX1N;' C256'PLC model FX1S.
PC : 05 // ENQ request
PLC: 06 // PLC Receive the correct response
PC : 02 45 30 30 30 31 43 30 30 31 03 44 44 // Discover PLC Current status: suspended \ Run
PLC: 02 30 41 03 37 34 // '0A'PLC pause;' 09'PLC run
PC : 05 // ENQ request

при проверки связи в среде разработки ,мы на контроллер отправляем PC : 05 и должны получить ENQ request . Где здесь 4 байта? Тобишь даже в первый if уже не попасть... Цэ я дурной ,иль лыжи не едут...
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

да не - похоже исходник не того, не рабочий, еще можно глянуть файл "uart.c.bak" но все равно не то.
Придется, если очень надо, идти по стопам Greeds74:

Код: Выделить всё

А вот что касается реализации - я не использовал код, который тут выложен.
Всё пришлось проходить с самого начала.
Если будут вопросы по реализации - пишите, постараюсь помочь.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3188994#p3188994"]да не - похоже исходник не того, не рабочий, еще можно глянуть файл "uart.c.bak" но все равно не то.
Придется, если очень надо, идти по стопам Greeds74:[/uquote]


От тебя я подобного не ожидал.
Ну вот кто вам сказал что на первой странице выложена секвенция байт посылаемая с писюка и обратно?
Это сами команды.
Ну хоть протокол изучите https://www.google.ru/url?sa=t&rct=j&q= ... KwlaCnDTsg


yuriy m, oleg110592 вы хоть краем уха о модбас слышали? Начните с нее изучение...
Вы что всеръез решили что ПЛК будет на ваши одиночные байтики реагировать?
Для приличия хоть на структуру посылок взгляните.
№ station, № PLC ни о чем не говорит , нет?


Изображение Изображение Изображение



[uquote="oleg110592",url="/forum/viewtopic.php?p=3188994#p3188994"]Придется, если очень надо, идти по стопам Greeds74:[/uquote]

Вперед и с песнями , изобреДатели лясипедов...
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

а-а-а, Семен Семеныч - про модбас вообще не подумали, спасибо за толчек в нужном направлении :oops:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

[uquote="dosikus",url="/forum/viewtopic.php?p=3189335#p3189335"]От тебя я подобного не ожидал.
Ну вот кто вам сказал что на первой странице выложена секвенция байт посылаемая с писюка и обратно?
Это сами команды.[/uquote]
Тогда вопрос - это то ,что шлют разные среды Wecon plc Editor ,GX Developer FX, GX Works2 при нажатии кнопки коннект(проверка связи и т.д.). тоже самое я вижу на осциллографе... осциллограмма выложена выше.. Может я ошибаюсь, но PLC должен что-то ответить на 0x05 ?
Вложения
2017-09-22_17-03-35.png
(71.4 КБ) 1011 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Я вижу по протоколу что передается не только ENQ 0x05 но и номера ПЛК, станции контрольная сумма. У вас сии номера соответствуют , забитым в ПЛК и выбранным в программе?
Опять таки , в исходниках задействованы 2 UART
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

[uquote="dosikus",url="/forum/viewtopic.php?p=3189438#p3189438"]Я вижу по протоколу что передается не только ENQ 0x05 но и номера ПЛК, станции контрольная сумма. У вас сии номера соответствуют , забитым в ПЛК и выбранным в программе?
Опять таки , в исходниках задействованы 2 UART[/uquote]
В программе выбирается серия FX и все. Второй uart - 485 порт . По протоколу может быть передается не только ENQ 0x05 ,но в реале то что я выложил,то и передают программы. проверенно вин7 и ХР.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

yuriy m, вы что такое интерфейс представляете?
Что такое целостность данных и контрольная сумма?
У вас есть опыт работы хоть с каким нибудь устройством использующим протоколы?

По сабжу - смотрите в отладчике и лог анализаторе, что передается и что принимает ПЛК.
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт окт 17, 2014 12:42:38

Сообщение yuriy m »

Обычно я спорить не люблю и не участвую в ненужных спорах,но...
[uquote="dosikus",url="/forum/viewtopic.php?p=3189335#p3189335"]yuriy m, oleg110592 вы хоть краем уха о модбас слышали? Начните с нее изучение...[/uquote]
[uquote="dosikus",url="/forum/viewtopic.php?p=3189467#p3189467"]yuriy m, вы что такое интерфейс представляете?
Что такое целостность данных и контрольная сумма?
У вас есть опыт работы хоть с каким нибудь устройством использующим протоколы?[/uquote]
За 20 с лишнем лет в промышленной электроники .. ну,,, может быть :))) ....

[uquote="dosikus",url="/forum/viewtopic.php?p=3189335#p3189335"]Вы что всеръез решили что ПЛК будет на ваши одиночные байтики реагировать?[/uquote]
Посещается для "ЗНАЮЩИХ" модбас, rs232, 485... и что ПЛК не реагирует на байтики - прикрепил картинку (желтым передача от PC - 0x05 и сразу же ответ от ПЛК синим) и только после этого идет все остальное... 8) . http://img.radiokot.ru/files/100608/med ... dzb753.jpg
Дальше умываю руки... :tea:

Добавлено after 7 hours 58 minutes 51 second:
[uquote="oleg110592",url="/forum/viewtopic.php?p=3188994#p3188994"]похоже исходник не того, не рабочий, еще можно глянуть файл "uart.c.bak" но все равно не то.
[/code][/uquote]
Олег абсолютно согласен.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

не все так просто, если с учетом модбас взглянуть:
В Modbus RTU разделителем сообщений (фреймов, содержащих запросы и ответы) является тишина на линии в течение не менее 3,5 символов. С учетом того, что стандартный символ передается УАРТом 11-ю битами, получаем длительность этого периода ( называют его t3.5), равную 38,5 периодов бодрейта. Например, для 9600 бод — 4,01 мс (38,5/9600).
Изображение
эх времени мало сейчас разбираться...
нашел по теме еще - там какие то исходники для 51 и STM32 Keil:
https://github.com/KeyMove/STM32-PLC-FX1N
сходу нормально не компилится :(
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3190103#p3190103"]сходу нормально не компилится :([/uquote]
Комменты у асм вставок убери.
Ответить

Вернуться в «ARM»