Teilen Sie Ihre Erfahrunge und Wünsche mit uns und anderen Usern!

0
Answered

Pick up cube and conveyer belt stop at sensor

Kadir 2 years ago updated by Support 2 years ago 3

Image 673

what is the best way to pick up the cube on the conveyer ? Should i use the grip or gripper script?

and how can i make the conveyer stop, when the cube is detected by the sensor? is there an alternative solution for stopping the conveyer at a certain destination?

Answer
Support 2 years ago

Please check the demo model or this demo which shows several ways for gripping parts: Assets/game4automation/Scenes/DemoGripping.unity

To make the conveyor stop you can use a script (you need to check the property occupied of the sensor and you can stop the drive by Drive.JogForward = false.


Or you can use Unitys Visual Scripting:

https://realvirtual.io/documentation/current/unityvisualscripting.html

Another possiblity (only with Professional Version) is to use LogicSteps:

https://realvirtual.io/documentation/current/logicsteps.html


You can stop the Conveyor (in a script or by using visual scripting) as soon as Drive.CurrentPosition is greater than a certain value.


0
Answered

DllNotFoundException

Kadir 2 years ago updated 2 years ago 6

I was trying to import the game4automation asset but got that error: 

DllNotFoundException: 3DConnexionWrapperU5 assembly: type: member:(null)

how can i solve it?

Answer
Support 2 years ago

You seem to work on a non Windows Plattform. I think the space navigator drivers are the problem. Please delete the whole SpaceNavigator folder after importing the asset and select again "Apply Standard Settings"


Assets/game4automation/private/RuntimeUI/SpaceNavigator

0
Under review

Import signals error in Twincat Interface

Stupiddog 2 years ago updated by Support 2 years ago 5

Hello Thomas,I build a Test program with Twincat3,after I press Active configration button thePLC turns green then I press Import Signals in Unity it shows:TypeLoadException: Could not resolve type with token 0100000a (from typeref, class/assembly I18N.Common.MonoSafeEncoding, I18N, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756) assembly:I18N, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 type:I18N.Common.MonoSafeEncoding member:(null) signature:
System.RuntimeType.GetConstructors_internal (System.Reflection.BindingFlags bindingAttr, System.RuntimeType reflectedType) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.GetConstructorCandidates (System.String name, System.Reflection.BindingFlags bindingAttr, System.Reflection.CallingConventions callConv, System.Type[] types, System.Boolean allowPrefixLookup) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.GetConstructors (System.Reflection.BindingFlags bindingAttr) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.CreateInstanceImpl (System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes, System.Threading.StackCrawlMark& stackMark) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.Activator.CreateInstance (System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.Activator.CreateInstance (System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.InvokeMember (System.String name, System.Reflection.BindingFlags bindingFlags, System.Reflection.Binder binder, System.Object target, System.Object[] providedArgs, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParams) (at <695d1cc93cca45069c528c15c9fdd749>:0)
I18N.Common.Manager.Instantiate (System.String name) (at <6abb78bbc2d24347bb608e81ff4eb73b>:0)
I18N.Common.Manager.GetEncoding (System.Int32 codePage) (at <6abb78bbc2d24347bb608e81ff4eb73b>:0)
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <695d1cc93cca45069c528c15c9fdd749>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.

System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.InvokeMember (System.String name, System.Reflection.BindingFlags bindingFlags, System.Reflection.Binder binder, System.Object target, System.Object[] providedArgs, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParams) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.Text.EncodingHelper.InvokeI18N (System.String name, System.Object[] args) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.Text.Encoding.GetEncoding (System.Int32 codepage) (at <695d1cc93cca45069c528c15c9fdd749>:0)
TwinCAT.Ads.Internal.SymbolUploadInfo.get_StringEncoding () (at <23b243ab6b58458a8536a564d2211fbc>:0)
TwinCAT.Ads.TcAdsSymbolInfoLoader.onUploadSymbols () (at <23b243ab6b58458a8536a564d2211fbc>:0)
TwinCAT.Ads.TcAdsSymbolInfoLoader.initializeUploadSymbols (System.Boolean forceReload) (at <23b243ab6b58458a8536a564d2211fbc>:0)
TwinCAT.Ads.TcAdsSymbolInfoLoader.GetSymbols (System.Boolean forceReload) (at <23b243ab6b58458a8536a564d2211fbc>:0)
game4automation.TwinCatAdsInterface.ImportSignals (System.Boolean simstart) (at Assets/game4automation/private/Interfaces/TwinCAT/TwinCatAdsInterface.cs:351)
game4automation.TwinCatAdsInterface.Import () (at Assets/game4automation/private/Interfaces/TwinCAT/TwinCatAdsInterface.cs:747)
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <695d1cc93cca45069c528c15c9fdd749>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <695d1cc93cca45069c528c15c9fdd749>:0)
NaughtyAttributes.Editor.NaughtyEditorGUI.Button (UnityEngine.Object target, System.Reflection.MethodInfo methodInfo) (at Assets/game4automation/private/Tools/NaughtyAttributes/Editor/Utility/NaughtyEditorGUI.cs:179)
NaughtyAttributes.Editor.NaughtyInspector.DrawButtons (System.Boolean drawHeader) (at Assets/game4automation/private/Tools/NaughtyAttributes/Editor/NaughtyInspector.cs:188)
NaughtyAttributes.Editor.NaughtyInspector.OnInspectorGUI () (at Assets/game4automation/private/Tools/NaughtyAttributes/Editor/NaughtyInspector.cs:52)
UnityEditor.UIElements.InspectorElement+<>c__DisplayClass59_0.b__0 () (at :0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Image 643

Image 644

Image 645

Image 646

Image 647

My Unity is 2020.3.4 and G4A is Version 2020.15 - February 10, 2022,Thank you Thomas。

Answer
Support 2 years ago

could it have to do with some non english letters in the symbol naming. I know that this problem exists and we need to fix it in one of the next releases.

0
Fixed

cant download demo project, link is brocken.

david jung le 2 years ago updated by Support 2 years ago 1
Answer
Support 2 years ago

Thanks for your information. Should be fixed now.

0
Answered

PLC WinMoD G4A

Lgcontrol 2 years ago updated by Support 11 months ago 4

Hi

I would like to use G4A to get WinMoD behavior signal and then according signal to  display in U3D  and also get feedback from G4A. WinMoD other side contion a physical PLC.

What kind of automation interface would be best select in G4A side ? OPC-UA?

0
Answered

Allen‑Bradley, Rockwell PLC Framework

kkellner 2 years ago updated by Support 2 years ago 18

Gibt es nativ eine direkte Schnittstelle zum Rockwell PLC Framework?

Ich konnte keine explizierte Erwähnung (wie für Siemens oder Beckhoff)

finden.

Answer
Support 2 years ago

All of them have the basic function of signal exchange with the PLC. The functionality essentially depends on what the interface to the PLC of the manufacturer enables.

The most comprehensive - including signal import via the interface - is the TwinCAT ADS interface.

With S7, the signals must be exported from Step7 via a standardized text file and imported into G4A.

With EthernetIP there is no standard for this. The signals must be created manually or imported via a non-standard text file.


0
Answered

Bibliothek

je-a-s 2 years ago updated by Support 2 years ago 1

Ich habe eine weile mit eine anderen Simulation System gearbeitet. Daher folgende Fragen

Kann man in Game4Automation sich eine Bibliothek anlegen und sich  die Erstellung einer Szene (fuer Kunden) automatisieren.

Bei dem anderen System kann via einer I/O Liste und einen externen Tool Marcos ausgewählt  und die Verlinkung zu diesen erzeugt werden.

0
Answered

ABB Word mapping

Bo Adam 2 years ago updated 2 years ago 2

Hello,

A small time ago we had a conversation about adding bytes into the device mapping of ABB, now i needs words (16bits). 

We are trying to get the Word option to work as well, we have changed the code to the following:

Only thing we are not sure about is the line with accessor.Write(posheader, (byte) 10).

Is this correct or should we change it?

Sorry for the formatting, couldn't find the code button.

if (signal.OriginDataType.ToUpper() == "BYTE")

{

if (signal.GetType() == typeof(PLCInputInt) || signal.GetType() == typeof(PLCOutputInt))

{

if (lastbit)

posmemory = posmemory + 1;

bit = 0;

shm.bit = 0;

lastbit = false;

signal.Comment = $"M{posmemory}";

accessor.Write(posheader, (byte) 8);

shm.type = SIGNALTYPE.BYTE;

posmemory = posmemory + 1;

}

}

else if (signal.OriginDataType.ToUpper() == "WORD")

{

if (signal.GetType() == typeof(PLCInputInt) || signal.GetType() == typeof(PLCOutputInt))

{

if (lastbit)

posmemory = posmemory + 1;

bit = 0;

shm.bit = 0;

lastbit = false;

signal.Comment = $"M{posmemory}";

accessor.Write(posheader, (byte) 10);

shm.type = SIGNALTYPE.WORD;

posmemory = posmemory + 2;

}

}

else

{ if (signal.GetType() == typeof(PLCInputInt) || signal.GetType() == typeof(PLCOutputInt))

{

if (lastbit)

posmemory = posmemory + 1;

bit = 0;

shm.bit = 0;

lastbit = false;

signal.Comment = $"M{posmemory}";

accessor.Write(posheader, (byte) 10);

shm.type = SIGNALTYPE.INT;

posmemory = posmemory + 4;

}

}

Sorry if you saw my answer on the last message, but i thought it would be good to make a new topic! 

Answer
Support 2 years ago

I will add this in one of the next release. For Words you need to write a 9 as Type ID.

0
Not a bug

Build

Filip D 2 years ago updated 2 years ago 2

UnityEnginy 2020.2.6f1

Building the project end with error. "ArgumentException: The Assembly ZeroFormatter is referenced by PREspective ('Assets/Plugins/PREspective/PREspective.dll'). But the dll is not allowed to be included or could not be found.

UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List`1[T] alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary`2[TKey,TValue] cache, UnityEditor.BuildTarget target) (at <8c48e4bc2ff34638b69095cbb65e2e27>:0)

UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List`1[T] alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary`2[TKey,TValue] cache, UnityEditor.BuildTarget target) (at <8c48e4bc2ff34638b69095cbb65e2e27>:0)

UnityEditor.AssemblyHelper.FindAssembliesReferencedBy (System.String[] paths, System.String[] foldersToSearch, UnityEditor.BuildTarget target) (at <8c48e4bc2ff34638b69095cbb65e2e27>:0)

UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)"

I Change Global functions "public static List GetGroups()" and "GetAllWithGroup(string group)" But, In corpasion it was witout differences.

I tried to build with differed API settings .NET 2.0 ant .NET 4.x

Probably there is probably problem with PREspective.dll, that doesn't properly connected to Unity, but I am not sure.

Do anybody has an idea ? thank you all.

Answer
Support 2 years ago

You have PREspective in your project (Prespective is another Digital Twin product). It is not a part of Game4Automation which is causing your problems. Please delete everything of Prespective or start with an empty project.

0
Answered

Device Mapping in ABB

Bo Adam 3 years ago updated 2 years ago 14

Hello,

I am working on connecting ABB robotstudio to game4automation, and I have a question about the device mapping. I have device mappings that go to +-120, How can I make this in robotstudio? I can only see it go up to 9 and then it becomes 1,1, 1,2 etc, does this count as 11,12 etc? 

Another question, Do I have to create empties in robotstudio for every missing device map? I saw the page but didnt understand why you had to create that much empties.

Answer
Support 3 years ago

Please try do do this. I am not able to test because currently I have not an ABB Robotstudio with your configuration. Hope it works.

Add Byte to Origin Data Type 

and replace Line 167 following in ABBRobotStudioInterface by this:

if (signal.OriginDataType.ToUpper() != "BYTE")
{
if (signal.GetType() == typeof(PLCInputInt) || signal.GetType() == typeof(PLCOutputInt))
{
if (lastbit)
posmemory = posmemory + 1;
bit = 0;
shm.bit = 0;
lastbit = false;
signal.Comment = $"MD{posmemory}";
accessor.Write(posheader, (byte) 10);
shm.type = SIGNALTYPE.INT;
posmemory = posmemory + 4;
}
}
else
{ if (signal.GetType() == typeof(PLCInputInt) || signal.GetType() == typeof(PLCOutputInt))
{
if (lastbit)
posmemory = posmemory + 1;
bit = 0;
shm.bit = 0;
lastbit = false;
signal.Comment = $"M{posmemory}";
accessor.Write(posheader, (byte) 8);
shm.type = SIGNALTYPE.BYTE;
posmemory = posmemory + 1;
}
}