component sew "Drehen von Lowbyte zu Highbyte und andersrum"; // Eingangspins pin in float SEWistposition; pin in float SEWistgeschw; pin in float SEWiststrom; pin in float SEWistbelastung; pin in float SPSsollposition; pin in float SPSsollgeschw; pin in float SPSsollbeschl; pin in float SPSsollabbrems; pin in float vorschubfaktor; // Ausgangspins pin out float SPSistposition; pin out float SPSistgeschw; pin out float SPSiststrom; pin out float SPSistbelastung; pin out float SEWsollposition; pin out unsigned SEWsollgeschw; pin out unsigned SEWsollbeschl; pin out unsigned SEWsollabbrems; license "GPL2+"; author "andreklien"; function _; ;; #include "rtapi_math.h" FUNCTION(_){ // Section Istposition (SEWistposition) lesen und an Steuerung (SPSistposition) übergeben // int oder long int istposition, istposition1, istposition2, istposition3, istposition4; long istposition5; istposition = SEWistposition *1; istposition1 = istposition & 0xFF000000; istposition1 = istposition1 >> 24; istposition1 = istposition1 & 0x0000FF; istposition2 = istposition & 0x00FF0000; istposition2 = istposition2 >> 8; istposition3 = istposition & 0x0000FF00; istposition3 = istposition3 << 8; istposition4 = istposition & 0x000000FF; istposition4 = istposition4 << 24; istposition5 = istposition1 | istposition2 | istposition3 | istposition4; SPSistposition = istposition5 /1000.0; // Section Istgeschwindigkeit (SEWistgeschw) lesen und an Steuerung (SPSistgeschw) übergeben int istgeschw, istgeschw1, istgeschw2, istgeschw3; istgeschw = abs(SEWistgeschw); istgeschw1 = istgeschw >> 8; istgeschw1 = istgeschw1 & 0x000000FF; istgeschw2 = istgeschw << 8; istgeschw2 = istgeschw2 & 0x0000FF00; istgeschw3 = istgeschw1 | istgeschw2; SPSistgeschw = istgeschw3; // Section Iststrom (SEWiststrom) lesen und an Steuerung (SPSiststrom) übergeben int iststrom, iststrom1, iststrom2, iststrom3; iststrom = SEWiststrom; iststrom1 = iststrom & 0xFF00 >> 8; iststrom2 = iststrom & 0x00FF << 8; iststrom3 = iststrom1 | iststrom2; SPSiststrom = iststrom3; // Section Istbelastung (SEWistbelastung) lesen und an Steuerung(SPSistbelastung) übergeben int istbelastung, istbelastung1, istbelastung2, istbelastung3; istbelastung = SEWistbelastung; istbelastung1 = istbelastung & 0xFF00 >> 8; istbelastung2 = istbelastung & 0x00FF << 8; istbelastung3 = istbelastung1 | istbelastung2; SPSistbelastung = istbelastung3; // Section Sollposition (SPSsollposition) an Umrichter (SEWsollposition) übergeben // init oder long ? int sollposition, sollposition1, sollposition2, sollposition3, sollposition4, sollposition5; sollposition = SPSsollposition *1000; sollposition1 = sollposition & 0xFF000000; sollposition1 = sollposition1 >> 24; sollposition1 = sollposition1 & 0x0000FF; sollposition2 = sollposition & 0x00FF0000; sollposition2 = sollposition2 >> 8; sollposition3 = sollposition & 0x0000FF00; sollposition3 = sollposition3 << 8; sollposition4 = sollposition & 0x000000FF; sollposition4 = sollposition4 << 24; sollposition5 = sollposition1 | sollposition2 | sollposition3 | sollposition4; SEWsollposition = sollposition5; // Sollgeschwindigkeit (SPSsollgeschw) an Umrichter (SEWsollgeschw) übergeben int sollgeschw, sollgeschw1, sollgeschw2, sollgeschw3; sollgeschw = abs(SPSsollgeschw); sollgeschw = sollgeschw *vorschubfaktor; // sollgeschw = sollgeschw +10; sollgeschw1 = sollgeschw >>8; sollgeschw1 = sollgeschw1 & 0x000000FF; sollgeschw2 = sollgeschw << 8; sollgeschw2 = sollgeschw2 & 0x0000FF00; sollgeschw3 = sollgeschw1 | sollgeschw2; SEWsollgeschw = sollgeschw3; // Beschleunigungsrampe (SPSsollbeschl) an Umrichter (SEWsollbeschl) übergeben int sollbeschl, sollbeschl1, sollbeschl2, sollbeschl3; sollbeschl = SPSsollbeschl; sollbeschl1 = sollbeschl >> 8; sollbeschl1 = sollbeschl1 & 0x000000FF; sollbeschl2 = sollbeschl << 8; sollbeschl2 = sollbeschl2 & 0x0000FF00; sollbeschl3 = sollbeschl1 | sollbeschl2; SEWsollbeschl = sollbeschl3; // Abbremsrampe (SPSsollabbrems) an umrichter (SEWsollabbrems) übergeben int sollabbrems, sollabbrems1, sollabbrems2; long sollabbrems3; sollabbrems = SPSsollabbrems; sollabbrems1 = sollabbrems >> 8; sollabbrems1 = sollabbrems1 & 0x000000FF; sollabbrems2 = sollabbrems << 8; sollabbrems2 = sollabbrems2 & 0x0000FF00; sollabbrems3 = sollabbrems1 | sollabbrems2; SEWsollabbrems = sollabbrems3; }