Some starting for automatic production

Hallo,

in our student lab we want to realize an automatic production in a model smartfactory. The students should plan a production based on simulated customer orders and the manufacturing of the products will be running on a real production line with robots, which are PLC controlled.
The smartfactory with the robots is working, that’s simple engineering stuff we are doing every day, BUT …

  • how can we start the production when the manufacturing orders have been planned and released
  • how can we acknowledge that the manufactoring is running « in progress » and that it is « finished » ?

I assume the usage of the REST interface with views, models and actions to us is not very clear, as we are not from business informatics, but more in hardcore programming of PLCs and microprocessors and realtime automation systems.

I think the same way we could also automatize material orders and deliveries to the model storage places, if we would like to …

To make this more widely available, we could think about a learning environment built in factory-i/o, a great tool for learning PLC programming, what could be controlled by AXELOR as well.

Thanks for some hints,
Jürgen

1 « J'aime »

Hello,

after 24h, I’m sorry to not see an answer from Axelor team.

I think Axelor is good for your case.

Your post is to large for a precise answer from the community.
And I’m not competent for the manufacturing part (my company is just a distributor)

About API, I begin to be more expert
If you think you need an app/interface between your factory and Axelor, I suggest n8n for handle data.
(n8n is open-source, free and easy to you in docker)

(I use n8n, my post here explain to you how to have data from axelor or send and update to Axelor)

REST API with documentation : REST Services :: Axelor Documentation

Do you handle a simple curl commande for getting information from an app via API ?

The follow information depends on your version of Axelor, please remember this
I give you some information, but before you will need few hours of learn about API, cURL, and data information of Axelor :stuck_out_tongue:

All tables of "production"
com.axelor.apps.production.db.BillOfMaterial
com.axelor.apps.production.db.ConfiguratorBOM
com.axelor.apps.production.db.ConfiguratorProdProcess
com.axelor.apps.production.db.ConfiguratorProdProcessLine
com.axelor.apps.production.db.CostSheet
com.axelor.apps.production.db.CostSheetGroup
com.axelor.apps.production.db.CostSheetLine
com.axelor.apps.production.db.Machine
com.axelor.apps.production.db.MachineTool
com.axelor.apps.production.db.MachineType
com.axelor.apps.production.db.ManufOrder
com.axelor.apps.production.db.MpsCharge
com.axelor.apps.production.db.MpsWeeklySchedule
com.axelor.apps.production.db.ObjectDescription
com.axelor.apps.production.db.OperationOrder
com.axelor.apps.production.db.OperationOrderDuration
com.axelor.apps.production.db.ProdHumanResource
com.axelor.apps.production.db.ProdProcess
com.axelor.apps.production.db.ProdProcessLine
com.axelor.apps.production.db.ProdProduct
com.axelor.apps.production.db.ProdResidualProduct
com.axelor.apps.production.db.ProductApproval
com.axelor.apps.production.db.ProductionBatch
com.axelor.apps.production.db.ProductionConfig
com.axelor.apps.production.db.ProductionOrder
com.axelor.apps.production.db.RawMaterialRequirement
com.axelor.apps.production.db.Sop
com.axelor.apps.production.db.SopLine
com.axelor.apps.production.db.TempBomTree
com.axelor.apps.production.db.UnitCostCalcLine
com.axelor.apps.production.db.UnitCostCalculation
com.axelor.apps.production.db.WorkCenter
com.axelor.apps.production.db.WorkCenterGroup
com.axelor.apps.production.db.WorkshopSequenceConfigLine

Inside this one : com.axelor.apps.production.db.Machine, name columns are :
operatingDuration
importOrigin
setupDuration
code
stockLocation
buyingCurrency
description
numberOfStations
createdOn
machineToolLineList
archived
buyingPrice
id
brand
machineType
manufReference
processInstanceId
serialNumber
startingDuration
updatedBy
maintenanceCost
buyingDate
updatedOn
weeklyPlanning
version
endingDuration
picture
attrs
importId
createdBy
disposalDate
name
manufDate

So with n8n or cURL command

GET https://yourAxelorURL/ws/rest/com.axelor.apps.production.db.Machine/:id

yourAxelorUrl = you know this, maybe a localhost, or 192.168.1.200 …

ws/rest = this is standard for a GET - read the documentation REST Services :: Axelor Documentation

com.axelor.apps.production.db.Machine = the domain, you can change for the list a give you before

:id = you can find the ID of the machine when you are in the interface of Axelor, in edition of the machine. Just add the number of the id like 30

=> GET https://localhost:8080/ws/rest/com.axelor.apps.production.db.Machine/30
And you will have a json information about the machine number 30.

Have fun with your students !

1 « J'aime »

Hello,

thanks for the long posting and apologies for the long delay, we had some other urgent other things to do and I had to postpone my work on AXELOR and our PLC demo factory …
Yes, in some intermediate system we are actually using CURL and JQ to collect data from AXELOR.

I will go through your example post with n8n, what somehow looks familiar, as we are using NODERED for some IoT-stuff in our projects. When I am finished with that I surely will come back to you :slight_smile:

Regards,
Jürgen

1 « J'aime »

Jaa, your n8n posts looks great, I still have no idea to get data from the production plant back into AXELOR. By example, I can read from AXELOR some order for parts from a supplier. In the model factory I can take some parts as delivery and put them into the goods intake, but how can I message to AXELOR that the parts are there i.e. that the supply delivery is fulfilled?
Or when we have automatically build our model cars, how can our PLC controlled factory message back that the cars have been produced and put on the outgoing warehouse, while in AXELOR all stock moves etc are registered?
Here ist a big black area in front of my eyes …
In 5 weeks we have an open house at our university where a lot of companies and other visitors are coming and inform themselves about our study programmes and research or counselling offers, and I wanted to show a running fully automated demo factory :-))), what is not running for $$$$$$$ with SAP, but economically $$$$$ with AXELOR…

I would say, I know now enough to trigger the PLC in the plant that it builds a model car or order in a simulated process parts for the stock, but I do not know how the finished processed and parts could be messaged back to AXELOR …

Hello

Before answer you, I talk to you about n8n, but Axelor do « the same » but inside, it’s « BPM module »
You can find here a discussion recently I have with other French : Stratégie et feuille de route d'Axelor
Some questions and situation I asked kind of similar to you for specific automation.
(only french sorry. Translate all the conversation)

Axelor BPM could be an answer to you (probably not in 5 weeks). I won’t be useful for this, I don’t use BPM. But people here can help you.

I use n8n apps, because its external, so you can call everything with GET, PUT, POST, DELETE and change whatever you want from another app. Automatically and do a small interaction or a big one.
In you case, for a list of pieces to use for a production that is not standard, it could be very useful (I come back on it later :wink: )

I think you don’t use the stock module. You have to define stock location, it can be virtual (like when you buy pieces, it come from you manufacturer, but it a virtual one because you don’t have to handle it).
it can be physical (your storage1, your production place, your storage2 …).

If a delivery is validate, you should see the stock in you inventory (depend of the manufacturer parameter, product parameter, deliveryOrder …)
And you will have all the StockMove and StockMoveLine per product you want. Me, I use trackingNumber for my medical device.

All the documentation Axelor is here about stock :
https://docs.axelor.com/abs/5.0/functional/stock.html



I just made a test, I didn’t do it before (I will update my thread of n8n :smiley: ) : we can validate a step with the variable « satusSelect ».
I did it on accounts entry (com.axelor.apps.account.db.Move).
GET http ://localhost/ws/rest/com.axelor.apps.account.db.Move/1000 //Delete the space after http
it was a draft Move (accounts entry I create manualy)
POST http ://localhost/ws/rest/com.axelor.apps.account.db.Move/1000 //Delete the space after http
Body Parameters : { « data »: { « version »: 1, « statusSelect »:2 }}

And now the state of this document is not a draft anymore, « Count status » (or something like that)
StatusSelect: 3 will be « validate status » (or something like that)

→ So if axelor had already the production send and you want confirm it, juste update the satusSelect

I don’t know what the difference between :
ManufOrder/ProdProduct/ProdProcess/OperationOrder

I don’t use production module
So I will say « manufacturing » and manufacturingOrder


you have to decide who manages what, define every step. Everything should be possible, but you have to define your way to do it. My vision :

Axelor is you principal app for all logistic, manage manufacturing. information product, resupplying,…
your PLC don’t handle stock or information product, but for product a car, you have to make a manufacturingOrder, clearly the list of your pieces to product the car.
how handle this list ? for my point of view (not an expert),
If it’s standard so Axelor with template production
If depend and change few time in a day, it’s your PLC.

In case it’s your PLC, you will have to do a spreasheet, and try to send this data to your Axelor.
Axelor will inform you if there are no stock for some piece.
When the production are done, update the statusSelect of manufacturingOrder, or just valid it manualy (human confirmation).

1 « J'aime »

Hello,

thanks for your answer, looks great and I will try next days. Week was full of lectures and no much time for programming and/or testing …
At least I have implemented a WEBSERVICE in the SIEMENS PLCs, so that I can stay within n8n and exchanging just REST messages back and forth. Therefore, hope my tests will become easier to implement and follow …

1 « J'aime »

Hello,

after some days of experimenting I can report some success. I decided to use some REST API on the PLC side as well and updated my PLC here. In some 3D industrial environment I have setup a simple storage place (in factory-io), where some parts are automatically appearing as incoming deliveries when they have been ordered. The parts are transported into a high rise storage and when they are there, I am updating the PO at statusSelect and receiptState. This is workling now well and I can see now the changed status of the PO in AXELOR and the activated stock move.
Basically the next step will be to realize the stock move as well automatically …
After that I will have a look into the manufactoring, as I will simulate some production of parts after a sale order.
I used the REST API in n8n on both sides now, AXELOR and the PLC. If you are interested I can make a short live screen video of the setup and can show my n8n flows …
Send me a PM with your email adress then.
Your suggestions were a big help, still hoping to get something ready for the demonstration in 4 weeks :slight_smile:

2 « J'aime »

Good work !
I’m very happy that you find your way of handling your data.

Don’t worry for doing a video, I imagine very well your structure !

You motivate me to do a specific node in n8n for Axelor, but I will need time, I’ll let you know when I’m done.

If you have any question, just ask :wink:

1 « J'aime »