Fonction calcul Aleatoire sur TIA Portal

Forum traitant des automates industriels de marque Siemens.
Répondre
Yacub
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 102
Enregistré le : 07 févr. 2016, 18:27

Fonction calcul Aleatoire sur TIA Portal

Message par Yacub »

Bonjour,

Je souhaiterai faire une fonction qui permets de renvoyer une valeur comprise entre 0 et 20 .
Malheureusement la fonction Maths.Random() ( qui renvoi une valeur comprise entre 0 et 1 ) n'existe pas .

Quelqu'un a une idée ?
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Cyril93 »

Salut,

On en parle dans ce topic,

viewtopic.php?f=15&t=620
Yacub
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 102
Enregistré le : 07 févr. 2016, 18:27

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Yacub »

Cyril93

Niquel merci !!!!!!!!!!!!!!!!!!!!!
Yacub
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 102
Enregistré le : 07 févr. 2016, 18:27

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Yacub »

Cyril93,

J'ai un soucis ça ne fonctionne pas et je ne comprends pas pourquoi
Comme tu peux le voir sur l'imprEcran, j'ai utilisé un bit de cadence pour incrementé la variable "Increment"
deuxieme ligne je mets 0 dans l'integer "Increment" si "Increment" > 20

et deja la y a un soucis car j'ai beau avoir mis la variable a 0, dans le comparateur elle vaut toujours 1457 pourtant c'est la meme variable tu as une idée ?
Fichiers joints
valeur entre 0 et 20.png
Avatar du membre
Ulairi
Expert de l'héxadécimal
Expert de l'héxadécimal
Messages : 366
Enregistré le : 20 oct. 2015, 06:22

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Ulairi »

La lecture du programme se fait ligne par ligne et du haut vers le bas.

Donc la valeur de #increment prise au moment de la comparaison est la valeur courante du compteur (réseau 1). Comme la valeur courante du compteur n'est pas remise à zéro, celle-ci continue à s'incrémenter. C'est donc normal vu la façon dont c'est programmé.
Enseignant en BTS électrotechnique (Pas taper sur l'intru !)
Yacub
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 102
Enregistré le : 07 févr. 2016, 18:27

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Yacub »

Je ne comprends pas vraiment quel est la différence avec ce reseau ladder ?
Fichiers joints
Aleatoir.JPG
Yacub
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 102
Enregistré le : 07 févr. 2016, 18:27

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Yacub »

J'ai reussi a resoudre mon probleme mais je ne comprends pas pourquoi la 1ere version est fausse
Fichiers joints
valeur entre 0 et 20.png
Alex
Apprend le binaire
Apprend le binaire
Messages : 4
Enregistré le : 09 avr. 2016, 13:39

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Alex »

Tu peut essayer de transcrire cette implémentation en SCL vu que tu es sur le TIA v13


https://en.wikipedia.org/wiki/Multiply-with-carry

Code : Tout sélectionner

uint32_t rand32(void)
{
    uint32_t result = 0;
    result = rand();
    result <<= 16;
    result |= rand();
    return result;
}

// Init all engine parts with seed
void initCMWC(unsigned int seed)
{
    srand(seed);
    for (int i = 0; i < CMWC_CYCLE; i++) Q[i] = rand32();
    do c = rand32(); while (c >= CMWC_C_MAX);
}

// CMWC engine
uint32_t randCMWC(void)
{
    static uint32_t i = CMWC_CYCLE - 1;
    uint64_t t = 0;
    uint64_t a = 18782; // as Marsaglia recommends
    uint32_t r = 0xfffffffe; // as Marsaglia recommends
    uint32_t x = 0;

    i = (i + 1) & (CMWC_CYCLE - 1);
    t = a * Q[i] + c;
    c = t >> 32;
    x = t + c;
    if (x < c)
    {
        x++;
        c++;
    }

    return Q[i] = r - x;
}

int main()
{
    unsigned int seed = time(NULL);
    initCMWC(seed);
    printf("Random CMWC: %u\n", randCMWC());
}
Yacub
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 102
Enregistré le : 07 févr. 2016, 18:27

Re: Fonction calcul Aleatoire sur TIA Portal

Message par Yacub »

Alex,

ça a l'air un peux compliqué ton script, je vais tenter le coup quand même .
Répondre