现在尝试做plc与变频器之间的通信,plc是西门子s7-200,变频器是富士
编程遇到的问题,
第一:我想用触摸屏设置变频器的参数,例如“10Hz”,这个数进入plc后是十进制还是十六进制?(因为通信要十六进制的。)
第二:我现在plc接收触摸屏的频率,经过编程,例如使得变为“1FA0”,现在要把它拆分为四个字节“1”“F”“A”“0”。我尝试用一个方法,就是1FA0除1000得1,1FA0除100再减第一个数乘1000得F(即(1FA0-1000)/100),0FA0除10得A等等,,,但是我用串口工具调试发现,得到“1”“F”“0”“0”,第三和第四个字节出错。如果有其他的方法,也可以用你的方法。。。
我来回答:
1、按常规,你说的10HZ并非是在显示屏上输入10,而是1000,多出来的两位是小数,换算成16 进制就是03E8。
2、对于PLC而言,16进制与10进制是一样的结果,因为在PLC的内部,全部都以2进制运算。也就是说,你输入1000,与输入16#03E8是一样的。
3、你说的用相除来拆分16位,每4位组成一个新的ASCII(并非是4个字节),确实是一个方法,但运算太麻烦。其实PLC的自身就具备拆分功能指令,可以用“HTA”指令,如:HTA VB300, VB102, 4 //将VB300-301计2个数据,转换到VB102-115(ASCII)
上式中,VW300=16#03E8,也就是说VB300=16#03,VB301=16#E8,经过转换后,VB102=16#30(ASCII下同)、VB103=16#33、VB104=16#45、VB105=16#38