恭喜,你发布的帖子
发布于 2024-05-28 11:39:16
11楼
有知识产权协议,无法公开。
大致讲一下思路:
高速缓存区允许使用文中的所有数据类型,即使用前NC并不区分什么地址是什么数据,输入还是输出,整个缓存区的大小可以按$A_DBR[1024]计算需要4096个字节。
在PLC中定义一个数据块, 例如DB221, 在此数据块中必须根据需要提前规划输入和输出区大小以及输入输出区中各种数据类型,例如,0~100(通讯控制预留), 100~3000(NC→PLC), 3000~4096(PLC→NC),这些可以采用结构体,例如,名称R结构体为输入,名称W结构体为输出,其中再定义各种数据类型,例如,从地址300开始是NC发送到PLC各轴的坐标,可以简单用REAL型数组定义
这样整个数据区,所有地址都有确定的物理含义,例如,轴坐标首地址=100(R(NC→PLC)首地址)+300=400, $A_DBR[400]~$A_DBR[492]可以用于从NC将轴坐标发送至PLC,在我们的案例中这些轴坐标具有非常多的用途,例如:双横梁龙门机床防碰撞,当然还需要发送轴移动的剩余距离。
简单地应用可以仅写一个FB,此FB一般在OB1的开始调用,确保此FB在PLC的每个周期执行,在此FB中用FC21不断刷新上述R区和W区,例如:
老外做的比较复杂,自建功能块,用于每种数据传输时确认数据的有效性,在R区和W区各分出100个$A_DBB[...]作为旗语码,每次每种数据传输完成(收到相同旗语码)时,旗语码在自建的功能块中自动+1,这样,旗语码始终在1~255变化,不会重复。
在NC宏程序中用静态同步动作,根据旗语码($A_[3300])不等于0(通讯正常),发送新的轴坐标,并回复相同旗语码($A_[200]=$A_[3300])确认,例如:
这里$A_DBB[3300]是PLC发送的旗语码,后面NC发送轴坐标,最后将相同的旗语码发送的PLC,这样确保坐标的实时性和有效性,一旦PLC在要求的时间内未收到相同的旗语码,会立即发出通讯错误报警并停机。
特别提示,一个非常重要的问题,NC与PLC数据的字节顺序不同,数据不能直接使用,必须进行字节顺序转换,各种数据字节顺序转换的方法不同,因此,必须调用不同数据字节顺序转换专用FC,例如上述轴坐标,必须用浮点数字节顺序转换FC.
不能再说了,否则就涉嫌侵权了,主要还是出于爱国情怀,为提高国产机床使用水平出一份绵薄之力。
这个说明够详细了,很受益。
请填写推广理由:
分享
只看
楼主