手头有块EH的PLC和04DA-EH2的模拟量输出模块。
前几天用04DA默认的通讯参数(ASCII、7、E、1)用串口调试软件发以下的代码过去,能成功通讯上。以下是给1CH传送2000,输出5V模拟电压,经过万用表的监测,完全OK。串口软件设置为9600、7、E、1
3A 30 31 30 36 34 30 33 38 30 37 44 30 41 41 0D 0A
今天想用RTU模式调试(个人感觉RTU没ASCII烦琐)。将04DA的排线插到PLC的扩展插槽,然后用TO指令修改了通讯地址 (H4051为1、H4052更改为H8002)并用FROM指令监视,确认已经更改通讯参数。然后将排线拔下,用串口软件发如下代码:
01 06 40 38 07 D0 EE 6B(CRC是软件算出)
软件提示通讯超时,然后我尝试将通讯参数设置4052更改为H8002 、8000、C000、C002四个参数都不能通讯上。串口软件设置的是9600、8、E、1
请问04DA更改哪项参数才能与串口软件通讯上呢?又或者是不支持RTU模式?
您那个PLC是EH2的,不过不要用TO指令修改CR31,CR32的值,其他参数可以用FROM,TO指令读写。
用通讯的方式去修改CR31,CR32的值,你用串口发数据把CR32的值改了才可以。就像你开始帖子发的
3A 30 31 30 36 34 30 33 38 30 37 44 30 41 41 0D 0A ,只是你现在要用CR32的地址H4052,用通讯的方式改过后试一下。
您的程序是用M1000操作后面的MOV指令,您可以用M0后用TO指令修改CR32的值,下面用M1000后用FROM指令读CR32的值,
M0强制ON后再OFF,管餐M1000后读出的CR32的值,会发现值实际上没有修改。
呵呵,阁下所言即是:我先发3A 30 31 30 36 34 30 35 32 43 30 30 30 41 37 0D 0A ,修改通讯格式为C000H,然后再发串口软件就通讯不上了。再联上PLC监视CR32的时候发现此时CR32的数据不是C000H,而是C002H,可能是PLC自动识别到最高位为1的时自动设置的通讯格式吧!
此时 -----------------------------13:36:16发送(H):1 6 40 3B 7 D0 EE 6B
-----------------------------13:36:16接收(H):1 6 40 22 50
万用表监视到4CH为5V。OK
您真厉害!谢谢!