// This is a component for LinuxCNC HAL // Copyright 2014 Frank Brossette // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA component CPD17 "Ansteuerung Servoregler Berger Lahr CPD17"; // Istposition------------------------------------------------- pin in bit in00; pin in bit in01; pin in bit in02; pin in bit in03; pin in bit in04; pin in bit in05; pin in bit in06; pin in bit in07; pin in bit in08; pin in bit in09; pin in bit in10; pin in bit in11; pin in bit in12; pin in bit in13; pin in bit in14; pin in bit in15; pin in bit in16; pin in bit in17; pin in bit in18; pin in bit in19; pin in bit in20; pin in bit in21; pin in bit in22; pin in bit in23; pin in bit in24; pin in bit in25; pin in bit in26; pin in bit in27; pin in bit in28; pin in bit in29; pin in bit in30; pin in bit in31; pin in float Scale "Scalefaktor für Position"; pin out float IstPos "Istposition"; // Sollposition------------------------------------------------- pin in float SollPos "Sollposition"; pin io bit NewSetpoint "Flanke bei neuer Position"; pin out bit out00; pin out bit out01; pin out bit out02; pin out bit out03; pin out bit out04; pin out bit out05; pin out bit out06; pin out bit out07; pin out bit out08; pin out bit out09; pin out bit out10; pin out bit out11; pin out bit out12; pin out bit out13; pin out bit out14; pin out bit out15; pin out bit out16; pin out bit out17; pin out bit out18; pin out bit out19; pin out bit out20; pin out bit out21; pin out bit out22; pin out bit out23; pin out bit out24; pin out bit out25; pin out bit out26; pin out bit out27; pin out bit out28; pin out bit out29; pin out bit out30; pin out bit out31; //------------------------------------------------- function _; license "GPL"; ;; FUNCTION(_) { // Istposition------------------------------------------------- int IstPos_ = 0; int SollPos_ = 0; if(in00) {IstPos_ |= 0x00000001;}; if(in01) {IstPos_ |= 0x00000002;}; if(in02) {IstPos_ |= 0x00000004;}; if(in03) {IstPos_ |= 0x00000008;}; if(in04) {IstPos_ |= 0x00000010;}; if(in05) {IstPos_ |= 0x00000020;}; if(in06) {IstPos_ |= 0x00000040;}; if(in07) {IstPos_ |= 0x00000080;}; if(in08) {IstPos_ |= 0x00000100;}; if(in09) {IstPos_ |= 0x00000200;}; if(in10) {IstPos_ |= 0x00000400;}; if(in11) {IstPos_ |= 0x00000800;}; if(in12) {IstPos_ |= 0x00001000;}; if(in13) {IstPos_ |= 0x00002000;}; if(in14) {IstPos_ |= 0x00004000;}; if(in15) {IstPos_ |= 0x00008000;}; if(in16) {IstPos_ |= 0x00010000;}; if(in17) {IstPos_ |= 0x00020000;}; if(in18) {IstPos_ |= 0x00040000;}; if(in19) {IstPos_ |= 0x00080000;}; if(in20) {IstPos_ |= 0x00100000;}; if(in21) {IstPos_ |= 0x00200000;}; if(in22) {IstPos_ |= 0x00400000;}; if(in23) {IstPos_ |= 0x00800000;}; if(in24) {IstPos_ |= 0x01000000;}; if(in25) {IstPos_ |= 0x02000000;}; if(in26) {IstPos_ |= 0x04000000;}; if(in27) {IstPos_ |= 0x08000000;}; if(in28) {IstPos_ |= 0x10000000;}; if(in29) {IstPos_ |= 0x20000000;}; if(in30) {IstPos_ |= 0x40000000;}; if(in31) {IstPos_ |= 0x80000000;}; IstPos = (float)IstPos_ * Scale; // Sollposition------------------------------------------------- SollPos_ = (int)(SollPos / Scale); out00 = SollPos_ & 0x00000001; out01 = SollPos_ & 0x00000002; out02 = SollPos_ & 0x00000004; out03 = SollPos_ & 0x00000008; out04 = SollPos_ & 0x00000010; out05 = SollPos_ & 0x00000020; out06 = SollPos_ & 0x00000040; out07 = SollPos_ & 0x00000080; out08 = SollPos_ & 0x00000100; out09 = SollPos_ & 0x00000200; out10 = SollPos_ & 0x00000400; out11 = SollPos_ & 0x00000800; out12 = SollPos_ & 0x00001000; out13 = SollPos_ & 0x00002000; out14 = SollPos_ & 0x00004000; out15 = SollPos_ & 0x00008000; out16 = SollPos_ & 0x00010000; out17 = SollPos_ & 0x00020000; out18 = SollPos_ & 0x00040000; out19 = SollPos_ & 0x00080000; out20 = SollPos_ & 0x00100000; out21 = SollPos_ & 0x00200000; out22 = SollPos_ & 0x00400000; out23 = SollPos_ & 0x00800000; out24 = SollPos_ & 0x01000000; out25 = SollPos_ & 0x02000000; out26 = SollPos_ & 0x04000000; out27 = SollPos_ & 0x08000000; out28 = SollPos_ & 0x10000000; out29 = SollPos_ & 0x20000000; out30 = SollPos_ & 0x40000000; out31 = SollPos_ & 0x80000000; NewSetpoint = !NewSetpoint; }