PC机用Window API与S7-224XP Modbus通讯 停止位的问题

我上位机用Window API与S7-224XP modbus通讯, PLC做主站,用的是modbus库指令, PC机做从站, 用Windows API来读主站指令并返回数据 (实际上是用PC机模拟传感器信号). 现在遇到一个问题,百思不得其解,请教各位高手:
当PC机读主站发的信号时,需要设成N,8,1才能正确读出;但是当返回数据需要写串口时, 却需要设成N,8,2 PLC主站才能收到并解析正确。
这里1,2是停止位位数.

这是什么原因呢?
我的电脑是笔记本,没有串口,用的是USB转485的串口。 串口号是7(可以改). 已经试过, 在设备管理器里的端口设置中设停止位不影响。
如附件所示, PLC主站发出的信息(16进制)为01 04 00 40 00 04 F0 1D
要求从地址Hx64处返回4个字的寄存器值, 如果设为N,8,1, 用Windows API读出的信息正确,但是设为N,8,2, 则读出的信息为01 10  40 04 1D.

问题补充:
又发现一个问题,如果以N,8,1打开串口,读后, 关闭串口,然后以N,8,2打开串口,写串口后。再以N,8,1打开串口,读出来的又不对了。
但是用网上的串口调试工具,就一点问题都没有

图片说明:

PC机用Window API与S7-224XP Modbus通讯 停止位的问题    PC机用Window API与S7-224XP Modbus通讯 停止位的问题    PC机用Window API与S7-224XP Modbus通讯 停止位的问题   

最佳答案

是容错设计让串口调试软件能够正常工作的。
停止位1或2都能正确读出。
我是用串口调试工具进行调试的,劝你不要浪费精力纠结这个问题了。

提问者对于答案的评价:
问题原因找到了, 因为Windows API设置停止位时, 1bit的参数是0; 1.5bit是1, 2bit是2, 从网上找的代码设置时,直接设置成1, 就相当于是用的1.5bit的停止位, 所以读串口时总是读不对。 改设成0, 也就是1bit的停止位,读写都没问题了。 经过实验,证明读PLC发出的信息时,停止位必须设置为1bit才能读出来,但是写串口(返回信息给PLC)时,设置为1bit或2bit在PLC上都可以正确地读出.
不纠结无进步。
不过还是谢谢你。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc202371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月1日 上午12:19
下一篇 2017年11月1日 上午12:20

相关推荐

  • 被简单程序难倒了,求教

    一、控制要求:1、按下启动按钮,小车启动运行(1、若小车停在左限位,则启动后向右运动;2、若小车停在右限位,则启动后向左运动;3、若小车停在左限位和右限位之间,则启动后向右运动;)…

    2017年5月31日
  • s700 USS 通信

    S7 200中如何 重复执行 读参数和写参数。因为每次只能执行一个读写参数指令,而且可能在一个扫描周期内还完不成。 问题补充:DONE位好像不行,我试…

    SIMATIC S7-200 2021年7月5日
  • 用MD720-3发送短消息,初始化的问题

    用MD720-3发送短消息,有几点疑问,希望高手指点:1、MD720-3发送短消息时,是在什么模式下,即OPC模式或终端模式,还是无所谓那种模式都可以;2、SMS-init的SMS…

    SIMATIC S7-200 2020年10月31日
  • 博途怎么建立数据类型为“数据块”的变量

    在FC或者FB参数接口区建立数据类型为“数据块”的变量 最佳答案 看下图1200数据类型http://www.ad.siemens.com.cn/productportal/pro…

    2021年7月5日
  • s7 200 端口总烧

    s7200(DC/DC/DC)的端口与文本屏连接通信没有问题,当与其他电脑连接通过PPI电缆,在几秒内电缆就发热,通信也不通,最后端口烧了,看PLC电路板两个电阻都烧了电脑串口也烧…

    SIMATIC S7-200 2019年6月11日
  • s7200正常运行,突然sf灯亮,输出停止

    一台s7200,正常运行突然故障指示灯亮,无输出,能通讯,但在线监视提示午程序,量plc的电源电压发现N和地线之间有电压,这可能是什么原因 问题补充:问题是N和地线之间电压达118…

    SIMATIC S7-200 2020年10月31日
  • S7-200程序转为S7-1200程序

    我在S7-200程序转换为S7-1200程序时,有很多东西都转换不过来,转换后提示网络无效,请问有什么办法可以解决,谢谢! 最佳答案 转换工具不是万能的,有些地方需手动来转换。参见…

    SIMATIC S7-200 2020年11月1日
  • SMB2例子程序求解释

    MAIN:OB1LD          SM0.1MOVB &nbsp…

    SIMATIC S7-200 2020年11月1日
  • smart 运行中速度无法更改

    比如,手动点动运行电机,连续运行5S后速度变为另一个速度,以前的S7-200可以实现,现在的smart无法实现是怎么回事啊? 钻石用户推荐最佳答案 你用的是那条指令,新款PLC只有…

    SIMATIC S7-200 2021年7月5日
  • PID指令向导中的

    PID指令向导中的,过程变量和给定值是什么意思??分别怎么设置。求解,谢谢 最佳答案 、过程变量和给定值是什么意思?过程变量(实时检测值)即所调节过程中调节量的反馈值。例如在压力调…

    SIMATIC S7-200 2020年11月1日