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

0
Answered

custom data type

Kévin 3 months ago in General Questions updated by Support 3 months ago 1

Hello,

I am working on importing signals with a custom data type like a structure using PLCSIM interface. I have an error saying that it is not supported. Do you have any method so that I can use these structure in Unity?

Answer
Support 3 months ago

Hi Kévin, 

currently we have no solution to support hat. It would require a support of this flexible data definition of the PLCInput and -Output side in Game4Automation and it would need to be implemented into the Game4Automation PLCSim Advanced Interface. There are currently no plans for that development.

Best regards

Thomas

0
Answered

S7 connection

Kévin 4 months ago in General Questions updated 4 months ago 5

Hello,

I have started to use S7 TCP-IP to connect to TIA Portal with PLCSIM advanced. When I think they are connected and I tried to force a signal at true, in the TIA program I see the corresponding signal blinking irregulary.

Do someone have this problem or how to resolve it?

Answer
Support 4 months ago

It depends what you want to do. Because of Limitations in Unity PLCSim Advanced is a little bit more complicated (external coupling exe needs to be started). S7 Interface is easier and works on all Platforms. But with S7 interface you can't write to inputs where also a hardware is configured to.

0
Answered

I can't read the plc input signals

Stupiddog 5 months ago in General Questions updated 4 months ago 6

Dear Thomas.I connect S7-1200 PLC  to unity,but when I import Outputs it is OK,when I import Inputs it doesn't work,I want to make a digital twin project.Can I just read the inputs and I can change the models depend the inputs status,I don't write it or change it.If my unity models want to know the inputs status,what should I do?

Answer
Support 4 months ago

Hard to say where your problem is. But Input and Outputs are working if the inputs don't collide with a real hardware input. If you problem still exists please create a very simple example (S7 project and Unity project) and send it to us.

0
Answered

I can't find the component(Xde Rigid Body)

Stupiddog 5 months ago in General Questions updated 5 months ago 2

Hello!Dear Thomas!

When I Enable Interact,it shows:

But I have buy it and I can't add component like the video(

Accurate Physics with Game4Automation

)My unity is 2020.3.4 and game4automation professional is running well.

0
Answered

How to install

Roberto Fonte 6 months ago in General Questions updated by Support 5 months ago 8

Hello , 

I just buy Game4automation pro and conveyor but i can´t install . 

My instalation fail . I try to follow the manual but without sucess.


According the manual  new menu should appears but on my case it dont appears :

https://game4automation.com/documentation/current/installation.html#Check-if-a-new-menu-is-available

I can import the package from the store but not like the same procedure that is on the manual .

I just press on the bottom import  on the store.


Answer
Support 5 months ago

You should have any kind of error in the console log which should point you in the right direction. 

Please always check and send us the log in case of problems.

0
Started

Share-Space for custom Behavior Scripts

carHock 7 months ago in General Questions updated by Support 7 months ago 2

Hi, 

is it possible to implement some kind of share space into the forum or website, where users can upload their custom made scripts to extend the functionality of the implemented behavior scripts?

0

S7 interface DB write bug

Дмитрий Мурашов 8 months ago in General Questions updated by ctbenergy 8 months ago 1

I write in S7 interface in DB1.DBX1.0  but on PLC it is writing in DB1.DBX1.1

0
Fixed

s7

konrad.tschurtschenthaler 9 months ago in General Questions updated by Support 7 months ago 2

Hello

I played a little bit with the conveyor and the sensor form the starter tutorial. I noticed that if a MU is occupying the sensor and then I delete the MU either manually or with a think, the sensor continues to be occupied. In order for the sensor to be free, I first need to move the MU out of the sensor collision box and then I can delete it. In my opinion the senor shouldn't remain occupied if the MU that occupies the sensor is deleted.

0
Started

Kuka VKRC , integration example.

Дмитрий Мурашов 10 months ago in General Questions updated by Support 9 months ago 5

Kuka VKRC , integration example.

Answer
Support 9 months ago

Hi,

nice work. How did you connected to KUKA. 

There seems to be still a cycle time problem. If you would like I could support you, if you support me for getting it into the Professional version ;-)

Best regards

Thomas

0
Answered

RobotDK jitter

Дмитрий Мурашов 11 months ago in General Questions updated by Support 11 months ago 2
Hello, i add RobotDK API to game4automation if check on video Comm cycle in very long, without moving in RobotDK it's 3-5ms, during movment is is 1500ms, is any possibility to make it smaller and more stable? or it is problem of RobotDK ?


Here is code od RobotDK script.

using System;
using UnityEngine;
using Sharp7;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

namespace game4automation
{
public class RoboInterfaceDK : InterfaceThreadedBaseClass
{

[ReadOnly] public string notifybar;
[ReadOnly] public string txtJoints;

public string Adress = "localhost"; //!< The ip adress of the PLC

public Drive Axis1;
public Drive Axis2;
public Drive Axis3;
public Drive Axis4;
public Drive Axis5;
public Drive Axis6;



private RoboDK RDK = null;
private bool starting = true;

// Keep the ROBOT item as a global variable
private RoboDK.Item ROBOT = null;


public bool Check_RDK()
{
// check if the RDK object has been initialised:
if (RDK == null)
{
notifybar = "RoboDK has not been started";
return false;
}

// Check if the RDK API is connected
if (!RDK.Connected())
{
notifybar = "Connecting to RoboDK OK!";
// Attempt to connect to the RDK API

if (!RDK.Connect())
{

notifybar = "Problems using the RoboDK API. The RoboDK API is not available...";
return false;
}


}
return true;
}

public string Values_2_String(double[] dvalues)
{
if (dvalues == null || dvalues.Length < 1)
{
return "Invalid values";
}
// Not supported on .NET Framework 2.0:
//string strvalues = String.Join(" , ", dvalues.Select(p => p.ToString("0.0")).ToArray());
string strvalues = dvalues[0].ToString();
for (int i = 1; i < dvalues.Length; i++)
{
strvalues += " , " + dvalues[i].ToString();
}

return strvalues;
//return "";
}
public void SelectRobot()
{
notifybar = "Selecting robot...";
if (!Check_RDK())
{
ROBOT = null;
return;
}
ROBOT = RDK.ItemUserPick("Select a robot", RoboDK.ITEM_TYPE_ROBOT); // select robot among available robots
//ROBOT = RL.getItem("ABB IRB120", ITEM_TYPE_ROBOT); // select by name
//ITEM = RL.ItemUserPick("Select an item"); // Select any item in the station
if (ROBOT.Valid())
{
ROBOT.NewLink(); // This will create a new communication link (another instance of the RoboDK API), this is useful if we are moving 2 robots at the same time.
notifybar = "Using robot: " + ROBOT.Name();
}
else
{
notifybar = "Robot not available. Load a file first";
}
}

public bool Check_ROBOT(bool ignore_busy_status = false)
{
if (!Check_RDK())
{
return false;
}
if (ROBOT == null || !ROBOT.Valid())
{
notifybar = "A robot has not been selected. Load a station or a robot file first.";
SelectRobot();
return false;
}
try
{
notifybar = "Using robot: " + ROBOT.Name();
}
catch (RoboDK.RDKException rdkex)
{
notifybar = "The robot has been deleted: " + rdkex.Message;
return false;
}

// Safe check: If we are doing non blocking movements, we can check if the robot is doing other movements with the Busy command
/*if (!MOVE_BLOCKING && (!ignore_busy_status && ROBOT.Busy()))
{
notifybar = "The robot is busy!! Try later...";
return false;
}*/
return true;
}

//! Updates all signals in the parallel communication thread
protected override void CommunicationThreadUpdate()
{
if (!Check_ROBOT(true)) { return; }

double[] joints = ROBOT.Joints();
//Mat pose = ROBOT.Pose();

// update the joints
Axis1.TargetStartMove = !Axis1.TargetStartMove;
Axis1.TargetPosition = (float)joints[0];

Axis2.TargetStartMove = !Axis2.TargetStartMove;
Axis2.TargetPosition = (float)joints[1] + 90;

Axis3.TargetStartMove = !Axis3.TargetStartMove;
Axis3.TargetPosition = (float)joints[2] - 90;

Axis4.TargetStartMove = !Axis4.TargetStartMove;
Axis4.TargetPosition = (float)joints[3];

Axis5.TargetStartMove = !Axis5.TargetStartMove;
Axis5.TargetPosition = (float)joints[4];

Axis6.TargetStartMove = !Axis6.TargetStartMove;
Axis6.TargetPosition = (float)joints[5];

string strjoints = Values_2_String(joints);
txtJoints = strjoints;

}


public override void OpenInterface()
{

if (RDK == null) { RDK = new RoboDK(); }
base.OpenInterface();
}


public override void CloseInterface()
{
//if (!Check_RDK()) { ;}
// Force to stop and close RoboDK (optional)
// RDK.CloseAllStations(); // close all stations
// RDK.Save("path_to_save.rdk"); // save the project if desired
//RDK.CloseRoboDK();
RDK = null;

base.CloseInterface();
}

private void Update()
{
//Check_RDK();
/*if (Check_RDK()) { starting = false; }

if (!Check_RDK() && !starting)
{
RDK = new RoboDK();

}*/


}
}
}

Answer
Support 11 months ago

Hi, I checked your example on my computer. It moves smoothly on my side´(RoboDK and G4A),

I think your started to implement your own RoboDK Interface because you did not purchased professional version - right?

It could save you some time to use G4A Professional. Please get in contact with me if you need an offer.