182 lines
11 KiB
Go
182 lines
11 KiB
Go
package types
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
"unsafe"
|
|
|
|
"git.espin.casa/albert/cml04-gdm-int/pkg/api"
|
|
)
|
|
|
|
type L2Uf struct {
|
|
TelegramHeader *TelegramHeader
|
|
UfRollSetId [20]byte /* roll set identification */
|
|
UfRollSetType int32 /* roll set type, 1=DUO,2=UNI */
|
|
UfTonnageAccum [10]float32 /* tonnage accumulated per groove */
|
|
UfChangeSleeveLength float32 /* length of the roll changing ca */
|
|
UfChangeSleeveDepth float32 /* depth of the roll changing car */
|
|
UfHrChangedFlag int32 /* changed flag horizontal roll, */
|
|
UfVrChangedFlag int32 /* changed flag vertical roll, 0= */
|
|
UfRollMaterialH [20]byte /* roll material horizontal rolls */
|
|
UfRollMaterialV [20]byte /* roll material vertical rolls */
|
|
UfHNomGap float32 /* nominal gap (from roll drawing */
|
|
UfRollDiamActHbo float32 /* actual nominal diameter bottom */
|
|
UfRollDiamActHtp float32 /* actual nominal diameter top ro */
|
|
UfRollBarrelWidthHbo float32 /* barrel width bottom roll */
|
|
UfRollBarrelWidthHtp float32 /* barrel width top roll */
|
|
UfRollChamWidthHbo float32 /* chamber width bottom roll */
|
|
UfRollChamWidthHtp float32 /* chamber width top roll */
|
|
UfRollAngleHbo float32 /* angle roll flange face bottom */
|
|
UfRollAngleHtb float32 /* angle roll flange face top rol */
|
|
UfRollDiamActVds float32 /* actual nominal vertical roll d */
|
|
UfRollDiamActVos float32 /* actual nominal vertical roll d */
|
|
UfRollAngleVds float32 /* roll angle flange face (vertic */
|
|
UfRollAngleVos float32 /* roll angle flange face (vertic */
|
|
UfActualShimpsHbo float32 /* thickness shimplate hor. botto */
|
|
UfActualShimpsHtp float32 /* thickness shimplate hor. top r */
|
|
UfActualShimpsVDS1 float32 /* thickness shimplate 1 drive si */
|
|
UfActualShimpsVDS2 float32 /* thickness shimplate 2 drive si */
|
|
UfActualShimpsVOS1 float32 /* thickness shimplate 1 oper. Si */
|
|
UfActualShimpsVOS2 float32 /* thickness shimplate 2 oper. Si */
|
|
UfPasslineOffset float32 /* passline offset */
|
|
UfPinVChock float32 /* pin between horizontal and ver */
|
|
UfDummyVal1 float32 /* Placeholder for Extensions */
|
|
UfDummyVal2 float32 /* Placeholder for Extensions */
|
|
UfDummyVal3 float32 /* Placeholder for Extensions */
|
|
UfDummyVal4 float32 /* Placeholder for Extensions */
|
|
UfDRollMaterial [20]byte /* roll material type (H = Hard, */
|
|
UfDRollDiamNomActTop float32 /* actual nominal diameter of top */
|
|
UfDRollDiamNomActBot float32 /* actual nominal diameter of bot */
|
|
UfDRollNominalGap float32 /* nominal roll gap */
|
|
UfDRollGrooves int32 /* number of grooves (equal for t */
|
|
UfDRollGrooveWidth [10]float32 /* groove width of each groove (e */
|
|
UfDRollGrooveStiffnessTop [10]float32 /* stiffness of each groove (top */
|
|
UfDRollGrooveStiffnessBot [10]float32 /* stiffness of each groove (bott */
|
|
UfDRollGroovePos [10]float32 /* groove position, the position */
|
|
UfDRollGrooveSharp [10]int32 /* groove sharpened, 1= no, 2=yes */
|
|
UfDRollActualShimpsTop float32 /* thickness chock shim top roll */
|
|
UfDRollActualShimpsBot float32 /* thickness chock shim bottom ro */
|
|
UfDRollThrustPlate float32 /* thickness of thrust plate betw */
|
|
}
|
|
|
|
func (uf *L2Uf) FillTelegram(rolldata *api.UfRollData) {
|
|
size := unsafe.Sizeof(uf)
|
|
uf.TelegramHeader = &TelegramHeader{
|
|
MessageLength: int16(size),
|
|
TelegramID: 9001,
|
|
SequenceCounter: 0,
|
|
Flags: 0,
|
|
TimeStamp: [8]int16{},
|
|
}
|
|
copy(uf.UfRollSetId[:], []byte(rolldata.GetUfRollSetId()))
|
|
uf.UfRollSetType = int32(rolldata.GetUfRollSetType())
|
|
uf.UfTonnageAccum[0] = float32(rolldata.GetUfTonnageAccum0())
|
|
uf.UfTonnageAccum[1] = float32(rolldata.GetUfTonnageAccum1())
|
|
uf.UfTonnageAccum[2] = float32(rolldata.GetUfTonnageAccum2())
|
|
uf.UfTonnageAccum[3] = float32(rolldata.GetUfTonnageAccum3())
|
|
uf.UfTonnageAccum[4] = float32(rolldata.GetUfTonnageAccum4())
|
|
uf.UfTonnageAccum[5] = float32(rolldata.GetUfTonnageAccum5())
|
|
uf.UfTonnageAccum[6] = float32(rolldata.GetUfTonnageAccum6())
|
|
uf.UfTonnageAccum[7] = float32(rolldata.GetUfTonnageAccum7())
|
|
uf.UfTonnageAccum[8] = float32(rolldata.GetUfTonnageAccum8())
|
|
uf.UfTonnageAccum[9] = float32(rolldata.GetUfTonnageAccum9())
|
|
uf.UfChangeSleeveLength = float32(rolldata.GetUfChangeSleeveLength())
|
|
uf.UfChangeSleeveDepth = float32(rolldata.GetUfChangeSleeveLength())
|
|
uf.UfHrChangedFlag = 0 // ????????????????????????????????????????????
|
|
uf.UfVrChangedFlag = 0 // ????????????????????????????????????????????
|
|
copy(uf.UfRollMaterialH[:], []byte(rolldata.GetUfRollMaterialH()))
|
|
copy(uf.UfRollMaterialV[:], []byte(rolldata.GetUfRollMaterialV()))
|
|
uf.UfHNomGap = float32(rolldata.GetUfHNomgap())
|
|
uf.UfRollDiamActHbo = float32(rolldata.GetUfRollDiamActHbo())
|
|
uf.UfRollDiamActHtp = float32(rolldata.GetUfRollDiamActHtp())
|
|
uf.UfRollBarrelWidthHbo = float32(rolldata.GetUfRollBarrelWidthHbo())
|
|
uf.UfRollBarrelWidthHtp = float32(rolldata.GetUfRollBarrelWidthHtp())
|
|
uf.UfRollChamWidthHbo = float32(rolldata.GetUfRollChamWidthHbo())
|
|
uf.UfRollChamWidthHtp = float32(rolldata.GetUfRollChamWidthHtp())
|
|
uf.UfRollAngleHbo = float32(rolldata.GetUfRollAngleHbo())
|
|
uf.UfRollAngleHtb = float32(rolldata.GetUfRollAngleHtb())
|
|
uf.UfRollDiamActVds = float32(rolldata.GetUfRollDiamActVds())
|
|
uf.UfRollDiamActVos = float32(rolldata.GetUfRollDiamActVos())
|
|
uf.UfRollAngleVds = float32(rolldata.GetUfRollAngleVds())
|
|
uf.UfRollAngleVos = float32(rolldata.GetUfRollAngleVos())
|
|
uf.UfActualShimpsHbo = float32(rolldata.GetUfActualShimpsHbo())
|
|
uf.UfActualShimpsHtp = float32(rolldata.GetUfActualShimpsHtp())
|
|
uf.UfActualShimpsVDS1 = float32(rolldata.GetUfActualShimpsVds_1())
|
|
uf.UfActualShimpsVDS2 = float32(rolldata.GetUfActualShimpsVds_2())
|
|
uf.UfActualShimpsVOS1 = float32(rolldata.GetUfActualShimpsVos_1())
|
|
uf.UfActualShimpsVOS2 = float32(rolldata.GetUfActualShimpsVos_2())
|
|
uf.UfPasslineOffset = float32(rolldata.GetUfPasslineOffset())
|
|
uf.UfPinVChock = float32(rolldata.GetUfPinVChock())
|
|
uf.UfDummyVal1 = 0
|
|
uf.UfDummyVal2 = 0
|
|
uf.UfDummyVal3 = 0
|
|
uf.UfDummyVal4 = 0
|
|
copy(uf.UfDRollMaterial[:], []byte(rolldata.GetUfRollMaterialH())) // ????????????????????
|
|
uf.UfDRollDiamNomActTop = float32(rolldata.GetUfRollDiamActHtp())
|
|
uf.UfDRollDiamNomActBot = float32(rolldata.GetUfRollDiamActHbo())
|
|
uf.UfDRollNominalGap = float32(rolldata.GetUfHNomgap())
|
|
uf.UfDRollGrooves = int32(rolldata.GetUfRollGrooves())
|
|
uf.UfDRollGrooveWidth[0] = float32(rolldata.GetUfRollGrooveWidth0())
|
|
uf.UfDRollGrooveWidth[1] = float32(rolldata.GetUfRollGrooveWidth1())
|
|
uf.UfDRollGrooveWidth[2] = float32(rolldata.GetUfRollGrooveWidth2())
|
|
uf.UfDRollGrooveWidth[3] = float32(rolldata.GetUfRollGrooveWidth3())
|
|
uf.UfDRollGrooveWidth[4] = float32(rolldata.GetUfRollGrooveWidth4())
|
|
uf.UfDRollGrooveWidth[5] = float32(rolldata.GetUfRollGrooveWidth5())
|
|
uf.UfDRollGrooveWidth[6] = float32(rolldata.GetUfRollGrooveWidth6())
|
|
uf.UfDRollGrooveWidth[7] = float32(rolldata.GetUfRollGrooveWidth7())
|
|
uf.UfDRollGrooveWidth[8] = float32(rolldata.GetUfRollGrooveWidth8())
|
|
uf.UfDRollGrooveWidth[9] = float32(rolldata.GetUfRollGrooveWidth9())
|
|
uf.UfDRollGrooveStiffnessTop[0] = float32(rolldata.GetUfRollGrooveStiffnessTop0())
|
|
uf.UfDRollGrooveStiffnessTop[1] = float32(rolldata.GetUfRollGrooveStiffnessTop1())
|
|
uf.UfDRollGrooveStiffnessTop[2] = float32(rolldata.GetUfRollGrooveStiffnessTop2())
|
|
uf.UfDRollGrooveStiffnessTop[3] = float32(rolldata.GetUfRollGrooveStiffnessTop3())
|
|
uf.UfDRollGrooveStiffnessTop[4] = float32(rolldata.GetUfRollGrooveStiffnessTop4())
|
|
uf.UfDRollGrooveStiffnessTop[5] = float32(rolldata.GetUfRollGrooveStiffnessTop5())
|
|
uf.UfDRollGrooveStiffnessTop[6] = float32(rolldata.GetUfRollGrooveStiffnessTop6())
|
|
uf.UfDRollGrooveStiffnessTop[7] = float32(rolldata.GetUfRollGrooveStiffnessTop7())
|
|
uf.UfDRollGrooveStiffnessTop[8] = float32(rolldata.GetUfRollGrooveStiffnessTop8())
|
|
uf.UfDRollGrooveStiffnessTop[9] = float32(rolldata.GetUfRollGrooveStiffnessTop9())
|
|
uf.UfDRollGrooveStiffnessBot[0] = float32(rolldata.GetUfRollGrooveStiffnessBot0())
|
|
uf.UfDRollGrooveStiffnessBot[1] = float32(rolldata.GetUfRollGrooveStiffnessBot1())
|
|
uf.UfDRollGrooveStiffnessBot[2] = float32(rolldata.GetUfRollGrooveStiffnessBot2())
|
|
uf.UfDRollGrooveStiffnessBot[3] = float32(rolldata.GetUfRollGrooveStiffnessBot3())
|
|
uf.UfDRollGrooveStiffnessBot[4] = float32(rolldata.GetUfRollGrooveStiffnessBot4())
|
|
uf.UfDRollGrooveStiffnessBot[5] = float32(rolldata.GetUfRollGrooveStiffnessBot5())
|
|
uf.UfDRollGrooveStiffnessBot[6] = float32(rolldata.GetUfRollGrooveStiffnessBot6())
|
|
uf.UfDRollGrooveStiffnessBot[7] = float32(rolldata.GetUfRollGrooveStiffnessBot7())
|
|
uf.UfDRollGrooveStiffnessBot[8] = float32(rolldata.GetUfRollGrooveStiffnessBot8())
|
|
uf.UfDRollGrooveStiffnessBot[9] = float32(rolldata.GetUfRollGrooveStiffnessBot9())
|
|
uf.UfDRollGroovePos[0] = float32(rolldata.GetUfRollGroovePos0())
|
|
uf.UfDRollGroovePos[1] = float32(rolldata.GetUfRollGroovePos1())
|
|
uf.UfDRollGroovePos[2] = float32(rolldata.GetUfRollGroovePos2())
|
|
uf.UfDRollGroovePos[3] = float32(rolldata.GetUfRollGroovePos3())
|
|
uf.UfDRollGroovePos[4] = float32(rolldata.GetUfRollGroovePos4())
|
|
uf.UfDRollGroovePos[5] = float32(rolldata.GetUfRollGroovePos5())
|
|
uf.UfDRollGroovePos[6] = float32(rolldata.GetUfRollGroovePos6())
|
|
uf.UfDRollGroovePos[7] = float32(rolldata.GetUfRollGroovePos7())
|
|
uf.UfDRollGroovePos[8] = float32(rolldata.GetUfRollGroovePos8())
|
|
uf.UfDRollGroovePos[9] = float32(rolldata.GetUfRollGroovePos9())
|
|
uf.UfDRollGrooveSharp[0] = int32(rolldata.GetUfRollGrooveSharp0())
|
|
uf.UfDRollGrooveSharp[1] = int32(rolldata.GetUfRollGrooveSharp1())
|
|
uf.UfDRollGrooveSharp[2] = int32(rolldata.GetUfRollGrooveSharp2())
|
|
uf.UfDRollGrooveSharp[3] = int32(rolldata.GetUfRollGrooveSharp3())
|
|
uf.UfDRollGrooveSharp[4] = int32(rolldata.GetUfRollGrooveSharp4())
|
|
uf.UfDRollGrooveSharp[5] = int32(rolldata.GetUfRollGrooveSharp5())
|
|
uf.UfDRollGrooveSharp[6] = int32(rolldata.GetUfRollGrooveSharp6())
|
|
uf.UfDRollGrooveSharp[7] = int32(rolldata.GetUfRollGrooveSharp7())
|
|
uf.UfDRollGrooveSharp[8] = int32(rolldata.GetUfRollGrooveSharp8())
|
|
uf.UfDRollGrooveSharp[9] = int32(rolldata.GetUfRollGrooveSharp9())
|
|
uf.UfDRollActualShimpsTop = float32(rolldata.GetUfActualShimpsHtp())
|
|
uf.UfDRollActualShimpsBot = float32(rolldata.GetUfActualShimpsHbo())
|
|
uf.UfDRollThrustPlate = float32(rolldata.GetUfRollThrustPlate())
|
|
}
|
|
|
|
func (uf *L2Uf) ToBytes() ([]byte, error) {
|
|
bs := make([]byte, unsafe.Sizeof(uf))
|
|
buffer := bytes.NewBuffer(bs)
|
|
if err := binary.Write(buffer, binary.LittleEndian, uf); err != nil {
|
|
return nil, err
|
|
}
|
|
return buffer.Bytes(), nil
|
|
}
|