EtherCAT - problem z przyciskiem stopu awaryjnego

Dyskusje dotyczące działania obsługi programu LinuxCNC

Autor tematu
marcin2458
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 2
Posty: 4
Rejestracja: 13 sie 2018, 22:20

EtherCAT - problem z przyciskiem stopu awaryjnego

#1

Post napisał: marcin2458 » 17 sty 2019, 00:39

Witam!

Próbuję sterować serwonapędem poprzez falownik Stober mds 5015 za pomocą linuxcnc po ethercat'cie. Stowrzyłem już pliki .xml .ini i .hal. Wywołuję program za pomocą terminala, otwiera się okno linuxcnc ale nie mogę "odłączyć" przycisku stopu awaryjnego aby załączyć maszyne. Konfigurację utworzyłem na podstawie gotowych już konfigracji pod ethercat m.in. A Schiflera. Szukałem rozwiązania mojego problemu w internecie ale o ile coś jest na ten temat to tylko przy konfiguraci stepconf a nie typowo pod ethercat.

Z góry dziękuję za pomoc.

Mój sprzęt:
falownik stober mds 5015
serwonapęd stober ed401u
===============================
#XML
<masters>
<master idx="0" appTimePeriod="999936" refClockSyncCycles="1000">
<slave idx="0" type="generic" vid="000000B9" pid="0001388" configPdos="true">
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="20b4" subIdx="00" bitLen="8" halPin="drivecontrol" halType="bit"/>
<pdoEntry idx="30d3" subIdx="00" bitLen="8" halPin="motioncommand" halType="float" scale="100"/>
<pdoEntry idx="30d2" subIdx="00" bitLen="16" halPin="poscommand" halType="float" scale="100"/>
<pdoEntry idx="30d5" subIdx="00" bitLen="32" halPin="poscontrol" halType="bit"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="28c8" subIdx="00" bitLen="8" halPin="drivestatus" halType="bit"/>
<pdoEntry idx="30c9" subIdx="00" bitLen="8" halPin="motion" halType="float" scale="100"/>
<pdoEntry idx="30c8" subIdx="00" bitLen="16" halPin="pos" halType="float" scale="100"/>
<pdoEntry idx="30cb" subIdx="00" bitLen="32" halPin="signalstatus" halType="bit"/>
</pdo>
</syncManager>
<dcConf assignActivate="300" sync0Cycle="1" sync0Shift="0"/>
</slave>
</master>
</masters>

===============================
#HAL
loadusr -W lcec_conf moja-frezarka.xml
loadrt lcec
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt scale
loadrt conv_s32_float
loadrt conv_float_s32

addf lcec.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf lcec.write-all servo-thread

net ec_up lcec.state-op => iocontrol.0.emc-enable-in => lcec.0.0.drivecontrol-0

setp lcec.0.0.drivecontrol-1 1
setp lcec.0.0.drivecontrol-2 1

net Xachse_AF axis.0.amp-enable-out => lcec.0.0.drivecontrol-3
net Xachse_fb lcec.0.0.pos => axis.0.motor-pos-fb
net Xachse_cmd axis.0.motor-pos-cmd => lcec.0.0.poscommand

===========================================
#INI
[EMC]
MACHINE = moja-frezarka
DEBUG = 0

[DISPLAY]
DISPLAY = axis
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 0
SERVO_PERIOD = 1000000

[HAL]
HALFILE = moja-frezarka.hal

[TRAJ]
AXES = 1
HOME = 0
COORDINATES = X
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 100
MAX_VELOCITY = 400

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100

[AXIS_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 375.0
MAX_ACCELERATION = 2000.0
STEPGEN_MAXACCEL = 0
SCALE = 1
FERROR = 1
MIN_FERROR = 2000
MIN_LIMIT = -200
MAX_LIMIT = 500.0
HOME DELAY = 5
HOME_VEL = 1
HOME_OFFSET = 100.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
==================================

#plik XML utworzony w programie PosiTool

<EtherCATInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EtherCATInfo.xsd" Version="1.2">
<Vendor>
<Id>185</Id>
<Name>STOEBER Antriebstechnik GmbH &#38; Co. KG</Name>
<ImageData16x14>424DE6000000000000007600000028000000100000000E000000010004000000000070000000C40E0000C40E00000000000000000000000000000000BF0000BF000000BFBF00BF000000BF00BF00BFBF0000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00CCCCCFFCCFFCCCCCCCCFFCCCCCFFFCCCCCFCCCCCCCCFFFCCCFCCCCCCCCCCFFFCCCCCCCCCCCCCCFFCCFFFFCFFFFFFCFFCCFFCFCFCFFFFFFFCCFFFFFFFFFCFFFCCCFFCCCFCFCCCCCCCCFFCCCCCCCCCCCFCCCFFCCCCCCCCCFCCCCCFFFCCCCCFFCCCCCCCFFFCCFFCCCCCCCCCCCFFFCCCCCCC</ImageData16x14>
</Vendor>
<Descriptions>
<Groups>
<Group>
<Type>Drive</Type>
<Name>Drives</Name>
<Image16x14>DRIVE</Image16x14>
</Group>
</Groups>
<Devices>
<Device Physics="YY">
<Type ProductCode="#x0001388" RevisionNo="#x000001F6">POSIDRIVE(R) xDS 5000</Type>
<Name><![CDATA[ComPos]]></Name>
<Comment><![CDATA[E120: I1]]></Comment>
<Comment><![CDATA[E121: MarcinAdamiak]]></Comment>
<Comment><![CDATA[E50: MDS 5015]]></Comment>
<Comment><![CDATA[E51: ]]></Comment>
<Comment><![CDATA[E53: 23_EtherCAT]]></Comment>
<Comment><![CDATA[E59: user]]></Comment>
<GroupType>Drive</GroupType>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Fmmu>MBoxState</Fmmu>
<Sm MinSize="40" MaxSize="1486" DefaultSize="1024" StartAddress="#x1800" ControlByte="#x26" Enable="1">MBoxOut</Sm>
<Sm MinSize="40" MaxSize="1486" DefaultSize="1024" StartAddress="#x1C00" ControlByte="#x22" Enable="1">MBoxIn</Sm>
<Sm StartAddress="#x1000" ControlByte="#x64" Enable="1">Outputs</Sm>
<Sm StartAddress="#x1100" ControlByte="#x20" Enable="1">Inputs</Sm>
<RxPdo Fixed="0" Sm="2">
<Index>#x1600</Index>
<Name>Channel 1</Name>
<Entry>
<Index>#x20b4</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>A180 device control byte</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<Index>#x30d3</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>I211 motion command byte</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<Index>#x30d2</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>I210 posi. control word</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<Index>#x30d5</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>I213 target postition</Name>
<DataType>DINT</DataType>
</Entry>
</RxPdo>
<TxPdo Fixed="0" Sm="3">
<Index>#x1A00</Index>
<Name>Channel 1</Name>
<Entry>
<Index>#x28c8</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>E200 device status byte</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<Index>#x30c9</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>I201 motion status byte</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<Index>#x30c8</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>I200 posi.status word</Name>
<DataType>UINT</DataType>
</Entry>
<Entry>
<Index>#x30cb</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>I203 current position</Name>
<DataType>DINT</DataType>
</Entry>
</TxPdo>
<Mailbox DataLinkLayer="1">
<CoE SdoInfo="0" PdoAssign="1" PdoConfig="0"/>
</Mailbox>
<Dc>
<OpMode>
<!--Distributed Clock off-->
<Name>DcOff</Name>
<Desc>Distributed Clock not enabled</Desc>
<AssignActivate>#x0000</AssignActivate>
</OpMode>
<OpMode>
<!--Faktor = 1, Shift Time =0-->
<Name>DcSync X1</Name>
<Desc>DC enabled (multiplier = 1)</Desc>
<AssignActivate>#x0300</AssignActivate>
<CycleTimeSync0 Factor="1">0</CycleTimeSync0>
<ShiftTimeSync0>0</ShiftTimeSync0>
</OpMode>
<OpMode>
<!--Faktor = 2, Shift Time =0-->
<Name>DcSync X2</Name>
<Desc>DC enabled (multiplier = 2)</Desc>
<AssignActivate>#x0300</AssignActivate>
<CycleTimeSync0 Factor="2">0</CycleTimeSync0>
<ShiftTimeSync0>0</ShiftTimeSync0>
</OpMode>
<OpMode>
<!--Faktor = 3, Shift Time =0-->
<Name>DcSync X3</Name>
<Desc>DC enabled (multiplier = 3)</Desc>
<AssignActivate>#x0300</AssignActivate>
<CycleTimeSync0 Factor="3">0</CycleTimeSync0>
<ShiftTimeSync0>0</ShiftTimeSync0>
</OpMode>
</Dc>
<Eeprom>
<ByteSize>2048</ByteSize>
<ConfigData>090c00cc88130000010000000000</ConfigData>
</Eeprom>
<ImageData16x14>424DE6000000000000007600000028000000100000000E000000010004000000000070000000C40E0000C40E00000000000000000000000000000000BF0000BF000000BFBF00BF000000BF00BF00BFBF0000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCC88C99988FFFFFCCC88C99988FFFFFCCCCCCCC888FFFFFCCFFFFCC888FFFFFCCFFFFCC888FFFFFCCCCCCCC888FFFFFC777777C88FFFFFFC777777C8FFFFFFFCCCCCCCCFFFFFF</ImageData16x14>
</Device>
</Devices>
</Descriptions>
</EtherCATInfo>




gniazdo
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 1
Posty: 61
Rejestracja: 24 gru 2008, 22:09
Lokalizacja: Limanowa

Re: EtherCAT - problem z przyciskiem stopu awaryjnego

#2

Post napisał: gniazdo » 17 sty 2019, 10:08

brakuje ci tego w halu o ile dobrze widze

Kod: Zaznacz cały

#  ---estop signals---

net estop-out     <=  iocontrol.0.user-enable-out
net estop-out     =>  iocontrol.0.emc-enable-in


Autor tematu
marcin2458
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 2
Posty: 4
Rejestracja: 13 sie 2018, 22:20

Re: EtherCAT - problem z przyciskiem stopu awaryjnego

#3

Post napisał: marcin2458 » 18 sty 2019, 12:43

Wielkie dzięki za pomoc

Jednak teraz napotkałem kolejny program. Zmieniłem plik xml ponieważ okazało się że ty StMDS nie może używać sync manager'a. Więc zmieniłem odpowiednio plik xml konfigurując przykładn swm-fm45a dołączony jako przykład do linuxcnc-ethercat-master, ale teraz wyskakuje błąd związny z modułem czasu rzeczywistego.
Przy poprzedniej konfiguracji pliku xml nie wyskakiwał taki probelam,otwierało się okno linuxcnc, jednak linuxcnc ethercat nie mógł sterować serwnoapędem. Poza tym zmieniłem wgrany w falownik plik xml.
Plików ini i hal nie zmieniałem


===========================================
#komunikat błedu:
Found file(REL): ./moja-frezarka.hal
Error: could not insert module /usr/realtime-3.4-9-rtai-686-pae/modules/linuxcnc/lcec.ko: Invalid parameters
./moja-frezarka.hal:2: exit value: 1
./moja-frezarka.hal:2: insmod for lcec failed, returned -1
See the output of 'dmesg' for more information.
Shutting down and cleaning up LinuxCNC...
LinuxCNC terminated with an error. You can find more information in the log:
/root/linuxcnc_debug.txt
and
/root/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal


==========================
# plik xml w falowniku:
<EtherCATInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EtherCATInfo.xsd" Version="1.2">
<Vendor>
<Id>185</Id>
<Name>STOEBER Antriebstechnik GmbH &#38; Co. KG</Name>
<ImageData16x14>424DE6000000000000007600000028000000100000000E000000010004000000000070000000C40E0000C40E00000000000000000000000000000000BF0000BF000000BFBF00BF000000BF00BF00BFBF0000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00CCCCCFFCCFFCCCCCCCCFFCCCCCFFFCCCCCFCCCCCCCCFFFCCCFCCCCCCCCCCFFFCCCCCCCCCCCCCCFFCCFFFFCFFFFFFCFFCCFFCFCFCFFFFFFFCCFFFFFFFFFCFFFCCCFFCCCFCFCCCCCCCCFFCCCCCCCCCCCFCCCFFCCCCCCCCCFCCCCCFFFCCCCCFFCCCCCCCFFFCCFFCCCCCCCCCCCFFFCCCCCCC</ImageData16x14>
</Vendor>
<Descriptions>
<Groups>
<Group>
<Type>Drive</Type>
<Name>Drives</Name>
<Image16x14>DRIVE</Image16x14>
</Group>
</Groups>
<Devices>
<Device Physics="YY">
<Type ProductCode="#x0001388" RevisionNo="#x000001F6">POSIDRIVE(R) xDS 5000</Type>
<Name><![CDATA[SAT-EC-XML- 23_EtherCAT_ 0_FastRefValue]]></Name>
<Comment><![CDATA[E120: I1]]></Comment>
<Comment><![CDATA[E121: MarcinAdamiak]]></Comment>
<Comment><![CDATA[E50: MDS 5007]]></Comment>
<Comment><![CDATA[E51: ]]></Comment>
<Comment><![CDATA[E53: 23_EtherCAT]]></Comment>
<Comment><![CDATA[E59: user]]></Comment>
<GroupType>Drive</GroupType>
<Fmmu>Outputs</Fmmu>
<Fmmu>Inputs</Fmmu>
<Fmmu>MBoxState</Fmmu>
<Sm MinSize="40" MaxSize="1486" DefaultSize="1024" StartAddress="#x1800" ControlByte="#x26" Enable="1">MBoxOut</Sm>
<Sm MinSize="40" MaxSize="1486" DefaultSize="1024" StartAddress="#x1C00" ControlByte="#x22" Enable="1">MBoxIn</Sm>
<Sm StartAddress="#x1000" ControlByte="#x64" Enable="1">Outputs</Sm>
<Sm StartAddress="#x1100" ControlByte="#x20" Enable="1">Inputs</Sm>
<RxPdo Fixed="0" Sm="2">
<Index>#x1600</Index>
<Name>Channel 1</Name>
<Entry>
<Index>#x20b4</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>A180 device control byte</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<Index>#x26e6</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>D230 n-reference value relative</Name>
<DataType>INT</DataType>
</Entry>
<Entry>
<Index>#x24e6</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>C230 torque limit</Name>
<DataType>INT</DataType>
</Entry>
</RxPdo>
<TxPdo Fixed="0" Sm="3">
<Index>#x1A00</Index>
<Name>Channel 1</Name>
<Entry>
<Index>#x28c8</Index>
<SubIndex>0</SubIndex>
<BitLen>8</BitLen>
<Name>E200 device status byte</Name>
<DataType>USINT</DataType>
</Entry>
<Entry>
<Index>#x2864</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>E100 n-motor</Name>
<DataType>INT</DataType>
</Entry>
<Entry>
<Index>#x2802</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>E02 M-motor filtered</Name>
<DataType>INT</DataType>
</Entry>
<Entry>
<Index>#x26c8</Index>
<SubIndex>0</SubIndex>
<BitLen>16</BitLen>
<Name>D200 speed reference value statuts word</Name>
<DataType>UINT</DataType>
</Entry>
</TxPdo>
<Mailbox DataLinkLayer="1">
<CoE SdoInfo="0" PdoAssign="1" PdoConfig="0"/>
</Mailbox>
<Dc>
<OpMode>
<!--Distributed Clock off-->
<Name>DcOff</Name>
<Desc>Distributed Clock not enabled</Desc>
<AssignActivate>#x0000</AssignActivate>
</OpMode>
<OpMode>
<!--Faktor = 1, Shift Time =0-->
<Name>DcSync X1</Name>
<Desc>DC enabled (multiplier = 1)</Desc>
<AssignActivate>#x0300</AssignActivate>
<CycleTimeSync0 Factor="1">0</CycleTimeSync0>
<ShiftTimeSync0>0</ShiftTimeSync0>
</OpMode>
<OpMode>
<!--Faktor = 2, Shift Time =0-->
<Name>DcSync X2</Name>
<Desc>DC enabled (multiplier = 2)</Desc>
<AssignActivate>#x0300</AssignActivate>
<CycleTimeSync0 Factor="2">0</CycleTimeSync0>
<ShiftTimeSync0>0</ShiftTimeSync0>
</OpMode>
<OpMode>
<!--Faktor = 3, Shift Time =0-->
<Name>DcSync X3</Name>
<Desc>DC enabled (multiplier = 3)</Desc>
<AssignActivate>#x0300</AssignActivate>
<CycleTimeSync0 Factor="3">0</CycleTimeSync0>
<ShiftTimeSync0>0</ShiftTimeSync0>
</OpMode>
</Dc>
<Eeprom>
<ByteSize>2048</ByteSize>
<ConfigData>090c00cc88130000010000000000</ConfigData>
</Eeprom>
<ImageData16x14>424DE6000000000000007600000028000000100000000E000000010004000000000070000000C40E0000C40E00000000000000000000000000000000BF0000BF000000BFBF00BF000000BF00BF00BFBF0000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCCCCCCC888FFFFFCCC88C99988FFFFFCCC88C99988FFFFFCCCCCCCC888FFFFFCCFFFFCC888FFFFFCCFFFFCC888FFFFFCCCCCCCC888FFFFFC777777C88FFFFFFC777777C8FFFFFFFCCCCCCCCFFFFFF</ImageData16x14>
</Device>
</Devices>
</Descriptions>
</EtherCATInfo>


==========================


========================================

#plik xml na linuxie:
<masters>
<master idx="0" appTimePeriod="999944" refClockSyncCycles="1000">
<slave idx="0" type="StMDS5k" name="SAT-EC-XML-EtherCAT_FastRefValue"/>
</master>
</masters>

=========================

=========================
#plika hal:

oadusr -W lcec_conf moja-frezarka.xml
loadrt lcec
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt scale
loadrt conv_s32_float
loadrt conv_float_s32


addf lcec.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf lcec.write-all servo-thread





setp lcec.0.0.drivecontrol-1 1
setp lcec.0.0.drivecontrol-2 1

net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in

net Xachse_AF axis.0.amp-enable-out => lcec.0.0.drivecontrol-3
net Xachse_fb lcec.0.0.pos => axis.0.motor-pos-fb
net Xachse_cmd axis.0.motor-pos-cmd => lcec.0.0.poscommand

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”