RS指令是PLC作为主控方式专用指令,只能在PLC程序中出现并使用。
PLC与上位机通讯,PLC是从机,根本用不着PLC主动联系,即使PLC主动联系了,上位机也不会理睬。
上位机与PLC的通讯方式要一致,上位机只管发:“3A 01 05 05 00 FF00 F6 0D 0A ”,注意:你采用的方式是ASCII,除了3A、0D、0A以外,其余的数值全部要变成ASCII的形式,即01要转换成30、31等等。
根据其他网友的介绍,听说也有采用RTU方式通讯成功的,但也有人说只能用ASCII,请楼主测试一下是否可行。
以下是台达厂家的解释(常见问题50例):
5、各位仁兄:我想知道,上位机和台达的PLC通讯怎么设置成主从式通讯?用其自带的485口。谢谢!
答:上位机和台达的PLC通讯,多数上位机是主的。这个不用什么设置,台达PLC默认就是从站,不需要做任何设置,直接调用MODBUS协议就可以了。但我们默认的是ASCII,如果要用RTU,必须把M1143置ON。
回复内容:
对:guoqianfly关于可以用RS指令,现在plc中编好程序,在rs指令中设定接受地址,和发送地址,之后你可以用串口调试测试,你发送的数据保存在rs指令中拟设你的寄存器中,也可以用rs458口用modbus命令发送可以直接读写内容的回复:
我用的是rs485口通讯的。上位机是电脑,PLC做下位机。
1,此时也可以用RS指令吗?好像RS适用于PLC与变频器等通讯吧。
2,直接在上位机里 write(" 3A 01 xx xx xx xx 0D 0A "),比如把十进制数值100写到D区,此时写入的是16位数值吧?如果在T形图里,用的是32位指令,比如DMOV,DMUL等,是不是还牵扯到数据转换啊。谢谢。
回复内容:
对:yjig关于1、电脑里又没有个“RS”,你干吗非要扯出个“RS”来。2、你直管发送数据,通常是采用16进制的数据,PLC对所接受的脉冲数据,全都默认为16进的数据,在PLC的内部进行计算时,无论你是什么数据,都统一按2进制的处理。内容的回复:
谢谢,解答完下面的问题,我把悬赏给你。比如我发送十进制数100,也就是十六进制数64,到D100里。
而我现在在PLC里运算用的都是如,DADD、DMUL这些32位运算指令,是不是需要先把D100的数据转化为32位存放在2个地址单元里,再运算?
2 如图,在用上位机电脑对PLC内的M110,发送MOdbus通讯指令进行置位时,如果M110在PLC内是上升沿,是不是就没有动作啊? 因为我在PLC内直接对此信号强制时没有反应。
回复内容:
对:yjig关于发送十进制数100,也就是十六进制数64,到D100里,该D100是16位。如果你想进行32位运算,什么也别做,直接调用D100,不过,还有一个前提条件,就是采用32位时,D100、D101同时已经被占用,也就是说,对D101不得进行任何赋值。如以下程序:DADD D100 K50000 D102以上程序中的D100就是32位,D100的数值是K100第二个问题看不懂,不知你想做什么。内容的回复:
非常感谢啊。现在补充下问题啊:
1 现在要读取占用D100,D101的32位数据,好像D100是高位,D101是低位吧?读取的时候,也只能是读出16位数据,分别读出D100和D101,那么我所需要的这个32位的数据的十进制数,是不是通过在电脑里编程,根据D100和D101的值实现的啊?
2梯形图中M110,原来是触摸屏中的按钮,现在要改为电脑发指令,对M110置位来实现。现在不知道上述梯形图中,M110置位后DDRVi指令有输出吗