Пробьемся,с вашей помощью.UAVpilot писал(а):Тяжело тебе будет, даже и не знаю что посоветовать...
EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Код: Выделить всё
#include <stdio.h>;
main(){
int i,k,old_in;
old_in=0;
int I[12]={3,7,11,12,15,16,18,1,5,13,17,2};
for (k=0;k<12;k++){
if (old_in > I[k]){
if ( old_in >= 11 && old_in <14 ){
if (I[k] <11){
printf("slowdown 11\n" );
}
printf("pause0.5 \n" );
printf("input= %d\n",I[k]);
old_in = I[k];
}
else if (old_in >= 14 && old_in < 17 ){
if(I[k] <14){
printf("slowdown 14\n");
}
if (I[k] <11) {
printf("slowdown 11\n");
}
printf("pause0.6 \n" );
printf("input= %d\n",I[k]);
old_in = I[k];
}
else if (old_in >= 17 ){
if (I[k] <17){
printf("slowdown 17\n");
}
if (I[k] <14) {
printf("slowdown 14\n");
}
printf("slowdown 11\n");
printf("pause0.6 \n" );
printf("input= %d\n",I[k]);
old_in = I[k];
}
else {
printf ("not acceleration %d\n", I[k]);
old_in = I[k];
}
}
printf ("---------------------------------------------\n");
//+++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++
if (I[k] >= 11 && I[k] < 14 ){
if (old_in<11){
printf("accel 11\n" );
}
printf("pause0.5 \n" );
printf("input= %d\n",I[k]);
old_in = I[k];
}
else if (I[k] >= 14 && I[k] < 17 ){
if(old_in <11){
printf("accel 11\n");
}
if (old_in<14) {
printf("accel 14\n");
}
printf("pause0.6 \n" );
printf("input= %d\n",I[k]);
old_in = I[k];
}
else if (I[k] >= 17 ){
if (old_in<11){
printf("accel 11\n");
}
if (old_in<14) {
printf("accel 14\n");
}
printf("accel 17\n");
printf("pause0.6 \n" );
printf("input= %d\n",I[k]);
old_in = I[k];
}
else {
printf ("not acceleration %d\n", I[k]);
old_in = I[k];
}
printf ("---------------------------------------------\n");
}
}
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
это примерно то,что ты описывал,с разгоном и торможением...
переписать это в полноценный компонент и прверить - тут емс надобен))
только завтра вечером
переписать это в полноценный компонент и прверить - тут емс надобен))
только завтра вечером
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
int n;
printf("\nВведите ступень:");
scanf("%d",&n);
k=n;
I[k]=n;
Вот добавил ввод с клавиатуры,так можно проверять?
printf("\nВведите ступень:");
scanf("%d",&n);
k=n;
I[k]=n;
Вот добавил ввод с клавиатуры,так можно проверять?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
попробовал в виде компонента...
надо дорасставлять задержки...
пока "работает" только переход туда-сюда через "11"
надо дорасставлять задержки...
пока "работает" только переход туда-сюда через "11"
Код: Выделить всё
component accel "1516F1";
/* sudo halcompile --install accel.comp */
pin in s32 in ;
pin out s32 out ;
pin out bit tstart ;
pin in bit tstop ;
pin out s32 old ;
function _;
license "GPL";
variable int old_in = 0;
;;
FUNCTION(_) {
old = old_in;
if (old_in > in){
if ( old_in >= 11 && old_in <14 ){
if (in < 11){
out = 11;
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = in;
old_in = in;
tstart = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else if (old_in >= 14 && old_in < 17 ){
if(in < 14){
out = 14;
}
if (in < 11) {
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = 11;
tstart = 0;
}
else{
return ;
}
//===========================
}
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = in;
old_in = in;
tstart = 0;
return ;
}
else{
return ;
}
//=======================
}
else if (old_in >= 17 ){
if (in <17){
out = 17;
}
if (in <14) {
out = 14;
}
out = 11;
//pause(1);
out = in;
old_in = in;
}
else {
out = in;
old_in = in;
}
}
//+++++++++++++++++++++++++++
if (in >= 11 && in < 14 ){
if (old_in<11){
out = 11;
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = in;
old_in = in;
tstart = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else if (in >= 14 && in < 17 ){
if(old_in <11){
out = 11;
}
if (old_in<14) {
out = 14;
}
//pause(1);
out = in;
old_in = in;
}
else if (in >= 17 ){
if (old_in<11){
out = 11;
}
if (old_in<14) {
out = 14;
}
out = 17;
//pause(1);
out = in;
old_in = in;
}
else {
out = in;
old_in = in;
}
}
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Код: Выделить всё
/* sudo halcompile --install accel.comp */
component accel "1516F1";
pin in s32 in ;
pin out s32 out ;
pin out bit tstart ;
pin in bit tstop ;
pin in bit tstop1 ;
pin out bit tstart1 ;
pin in bit tstop2 ;
pin out bit tstart2 ;
function _;
license "GPL";
variable int old_in = 0;
;;
FUNCTION(_) {
if (old_in > in){
if ( old_in >= 11 && old_in <14 ){
if (in < 11){
out = 11;
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = in;
old_in = in;
tstart = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else if (old_in >= 14 && old_in < 17 ){
if(in < 14){
out = 14;
//------------------------func_pause()
tstart1 = 1;
if (tstop1==1){
out = 11;
old_in = 11;
tstart1 = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else if (old_in >= 17 ){
if (in <17){
out = 17;
//------------------------func_pause()
tstart2 = 1;
if (tstop2==1){
out = 11;
old_in = 14;
tstart2 = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else {
out = in;
old_in = in;
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (in > old_in){
if (in >= 11 && in < 14 ){
if (old_in<11){
out = 11;
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = in;
old_in = in;
tstart = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else if (in >= 14 && in < 17 ){
if(old_in <11){
out = 11;
//------------------------func_pause()
tstart1 = 1;
if (tstop1==1){
out = 11;
old_in = 12;
tstart1 = 0;
return ;
}
else{
return ;
}
//=======================
}
if (old_in<14 && old_in>11) {
out = 14;
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = in;
old_in = in;
tstart = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else if (in >= 17 ){
if (old_in<11){
out = 11;
//------------------------func_pause()
tstart = 1;
if (tstop==1){
out = 11;
old_in = 12;
tstart = 0;
return ;
}
else{
return ;
}
//=======================
}
if (old_in<14 && old_in>11) {
out = 14;
//------------------------func_pause()
tstart1 = 1;
if (tstop1==1){
out = 14;
old_in = 15;
tstart1 = 0;
return ;
}
else{
return ;
}
//=======================
}
if (old_in>14) {
out = 17;
//------------------------func_pause()
tstart2 = 1;
if (tstop2==1){
out = in;
old_in = in;
tstart2 = 0;
return ;
}
else{
return ;
}
//=======================
}
out = in;
old_in = in;
}
else {
out = in;
old_in = in;
}
}
}
задержка в хал файле стоит 4 секунды , для отладки
код для задержки(выделенный) оформить бы в функцию полноценную...
- Вложения
-
- 4.rar
- (1.28 КБ) 262 скачивания
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Попробую вечером.nkp писал(а):код для задержки(выделенный) оформить бы в функцию полноценную...
А чем отличается в хал или в функции?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
тут я вот о чем:Валерий писал(а):А чем отличается в хал или в функции?
в компоненте много повторяющегося кода( почти одни и те же строки для паузы)
вот их можно оформить в функцию и вызывать одной строкой...
код станет чуть посжатей
а так на работу не влияет - только визуальное восприятие , читаемость ...
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
{
int x;
for (x=0 ; x<1000000 ; x++) ;
}
Так можно? Как оформить?
Как мы рассчитаем задержку,от чего она будет зависеть,не только от переменной Х ?
int x;
for (x=0 ; x<1000000 ; x++) ;
}
Так можно? Как оформить?
Как мы рассчитаем задержку,от чего она будет зависеть,не только от переменной Х ?
Последний раз редактировалось Валерий 19 сен 2016, 17:23, всего редактировалось 1 раз.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Так нельзя. Пока будет работать этот цикл весь HAL будет стоять и ждать, в том числе и всякие PID'ы.Валерий писал(а):Так можно?
P.S. Да и компилятор C соптимизит этот код в ничто.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
А сишную библиотеку нельзя использовать?
Файл 3.xml ты по правил,пока не разберусь как табло сделать
Файл 3.xml ты по правил,пока не разберусь как табло сделать
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
`Валерий писал(а):Так можно? Как оформить?Как мы рассчитаем задержку,от чего она будет зависеть,не только от переменной Х ?
не знаю - зачем это тебе...
в том коде ,который я привел выше,задержки уже есть...
они выставляются в хал файле(я тоже его прикрепил) вот этими строками:
Код: Выделить всё
setp timedelay.0.on-delay 4
setp timedelay.1.on-delay 4
setp timedelay.2.on-delay 4надо по 0.5с - пропиши так:
Код: Выделить всё
setp timedelay.0.on-delay 0.5
setp timedelay.1.on-delay 0.5
setp timedelay.2.on-delay 0.5-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Это я понял.Ты пр функцию говорилВалерий писал(а):Файл 3.xml ты по правил,
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
забейВалерий писал(а):Ты пр функцию говорил
вот панель:
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Ок.
Кнопка on как я понял не подключина,
Кнпки пуск ,стоп, и т.д. подключать в ладере или hal?
И на другие координаты писать другой компонент также, или в этом же?
Кнопка on как я понял не подключина,
Кнпки пуск ,стоп, и т.д. подключать в ладере или hal?
И на другие координаты писать другой компонент также, или в этом же?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
число компонентов устанавливается в хал:Валерий писал(а):И на другие координаты писать другой компонент также, или в этом же?
Код: Выделить всё
loadrt accel count=3
addf accel.0 servo-thread
addf accel.1 servo-thread
addf accel.2 servo-thread-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Но там другая логика включени муфт,и муфт там не 10 а 15.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
ну,очевидно,нужно написать подобное ,сообразно логике работы...Валерий писал(а):Но там другая логика включени муфт,и муфт там не 10 а 15.
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Как лучше?Валерий писал(а):Кнопка on как я понял не подключина,
Кнпки пуск ,стоп, и т.д. подключать в ладере или hal?