西门子私服控制器采用报文方式控制,与PLC通讯。组态如下
I address O address
SI motion monitoring 6724~6747 6724~6747
Siemens telegram 136 PZD-15/19 4140~4177
Siemens telegram 136 PZD-15/19 4140~4169
程序:(注:此程序是这个项目中随便找的sfc20程序,可能与上面组态地址不一致)
// Disassenble Any-pointer
L P##Barcode
LAR1
L B [AR1,P#1.0]
T #tmp_Any_DataType
L W [AR1,P#2.0]
T #tmp_Any_Length
L W [AR1,P#4.0]
T #tmp_Any_DBNo
L D [AR1,P#6.0]
T #tmp_Any_Pointer
// Assemble temporary Any-pointer
LAR1 P##tmp_AnySRCBLK
L B#16#10
T B [AR1,P#0.0]
L #tmp_Any_DataType
T B [AR1,P#1.0]
L #BarcodeLength
T W [AR1,P#2.0]
L #tmp_Any_DBNo
T W [AR1,P#4.0]
L #tmp_Any_Pointer
T D [AR1,P#6.0]
CALL "BLKMOV" //sfc20
SRCBLK :=#tmp_AnySRCBLK
RET_VAL:=#tmp_RetVal
DSTBLK :=#tmp_Telegram.HeadData.Barcode
描述:我学习设备程序,寻找plc读取私服控制器的方式过程中,不能找到读取的硬件地址。不知道是如何实现通讯的。
问:
1. 上面的《SI motion monitoring》这有什么功能,输入地址,输出地址的作用? 报文的输入、输出地址是控制电机的状态字和控制器呀。 monitoring那这有什么意义?
2.sfc20指令如何使用?因为状态字,控制字的起始地址同样为4140.程序如何知道是读操作。还是写操作?(我程序标注的是使用sfc20实现的报文通讯)
sfc20功能块,仅仅是复制存储区的指令呀。我怎么知道是读操作?还是写操作?
《输入过程映像分区》是指:外部输入地址?
外部硬件的实际输入地址,将数据传输给《输入映像存储区》才对吧?
可以来个sfc20例子?带有解释的例子,帮助手册里有,但我不能充分理解。
3.难道是是私服控制器的数据直接输入,输出到DB块?我怎么知道那个程序规定的db块对应的是哪个私服轴?
4.是否还有其他的读写报文指令,如sfc14,sfc15.。。。。?
看到楼下网友:我想从硬件地址读取数据。我知道组态的硬件地址4140~4177。但我不知道程序是如何读取的。(咱们要控制电机,必须对电机的地址进行通讯操作吧。利用那个指令往这个4140硬件地址里读写东西呢?)读写的内容是第2步动作。如何实现第1步的读写动作呢??
问题补充:我这个nc新人,在程序里并没有找到读写报文的地址。看到其他高手的回答。
个人理解如下:
5.nc数控电机其实不需要报文控制。因为私服电机是被数控G代码指令控制的。电机的动作等。。。都是由相应的G代码指令实现动作的。我在程序里根本就不应该纠结报文的读取地址。
6.我在程序里,只要满足:电机使能信号的全部正确,就可以实现电机的工作了(有这些是能信号后,G代码就可以控制电机的具体动作了。)
不知道这样理解对不对?
7。我如何才能知道私服控制器需要的使能信号,都有哪些。有这方面的手册?