请大家帮帮我.

我有一个西门子s7-200的PLC,还有两台,台达的变频器,我要用modbus通信,但是不知道怎么编写程序.请大家帮帮我,
          谢谢!

最佳答案

1.要了解一下PLC自由口通信知识
 2.了解modbus协议.
 那就可以自己编了,要有个CRC校验程序.我提供一下吧.当然如果用modbus的库那就简单了.西门子的人已经给你编好了.

 SUBROUTINE_BLOCK CRC:SBR99
 TITLE=CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
 // CRC是先调入一值是全"1"的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。
 // CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。CRC添加到消息中时,低字节先加入,然后高字节。
 // 注意:
 //  CRC添加到消息中时,低字节先加入,然后高字节。如:
 //  MOVB CRC_Hi, VB8
 //  MOVB CRC_Lo, VB7
 // 
 // 
 // 调用实例:
 // NETWORK 1
 // LD     SM0.1                       //读W458
 // MOVB   8, VB0                      //发送8个字符
 // MOVB   16#01, VB1                  //从站地址:01, 
 // MOVB   16#03, VB2                  //命令代码:10 (写变量)
 // MOVW   +458, VW3                   //起始地址:16#01CA(W458)  DRIVECOM状态字
 // MOVW   +1, VW5                     //读写长度
 // MOVD   &VB1, VD60                  //建立指针
 // CALL   CRC, VD60, +6, MB7, MB8     //计算CRC码
 // 
 VAR_INPUT
 TabPT:DWORD; // 表头
 TabLen:INT; // 字节数
 END_VAR
 VAR_OUTPUT
 CRC_Hi:BYTE; // CRC高字节
 CRC_Lo:BYTE; // CRC低字节
 END_VAR
 VAR
 temp_Hi:BYTE;
 temp_Lo:BYTE;
 temp_Index1:INT;
 temp_Index2:INT;
 temp_CRC_LSB:BOOL;
 END_VAR
 BEGIN
 Network 1 
 // CRC初始化为FFFF
 LD     SM0.0
 MOVW   16#FFFF, LW6

 Network 2 // 第一个循环为每一个字节进行CRC
 // //外循环开始,外循环用与没个信息字节的CRC计算。
 LD     SM0.0
 FOR    LW10, +1, LW4

 Network 3 
 LD     SM0.0
 MOVB   16#00, LB8                  //高字节清零
 MOVB   *LD0, LB9                   //信息装入低字节
 XORW   LW8, LW6                    //与CRC进行异或和

 Network 4 // //CALL   SBR_1, LW6                  //CRC
 // //内循环开始,内循环用于每个字节各个位的CRC计算
 LD     SM0.0
 FOR    LW12, +1, +8                //每个字节共8位

 Network 5 
 // LSB暂存保护起来
 LD     L7.0                        //
 =      L14.0                       //

 Network 6 
 // 字右移一位
 LD     SM0.0
 SRW    LW6, 1

 Network 7 
 // 如果CRC右移前最低位是1则与多项式进行异或和
 LD     L14.0
 XORW   16#A001, LW6                //这里使用多项式16

 Network 8 
 // //内循环结束
 NEXT
 Network 9 
 // //指针加1,对下一个信息字节进行CRC计算。
 LD     SM0.0
 INCD   LD0                         //指针加1
 Network 10 
 // //外循环结束
 NEXT                               //外循环结束
 Network 11 
 // CRC添加到消息中时,低字节先加入,然后高字节.(16为的CRC加在消息的末尾占两个字节)
 LD     SM0.0
 MOVB   LB7, *LD0                   //低字节先加入
 INCD   LD0                         //
 MOVB   LB6, *LD0                   //然后高字节

 END_SUBROUTINE_BLOCK
 

提问者对于答案的评价:
ok
 

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

  • DIP开关设置

    6ES7 231-0HC22-0XA8的DIP开关设置,0-20Ma输入,一共6个开关与235一样,但手册上说的不太明白,请详细介绍下,谢谢。 最佳答案 对于4点的模块,…

    SIMATIC S7-200 2017年11月12日
  • 6ES7216-2BD23-0XB8 6AV6648-0CC11-3AX0的连接线

    6ES7216-2BD23-0XB8   6AV6648-0CC11-3AX0的连接线型号 问题补充:需要给客户下单订货,得有具体的型号才行。 最佳答…

    SIMATIC S7-200 2021年7月5日
  • MFC如何通过OPC访问S7-200PLC?

    硬件配置:S7-200 通过PPI电缆或增加以太网模块. 通过PC Access 与工控机通讯。 工控机安装 S7-20…

    SIMATIC S7-200 2021年7月5日
  • 求PLC200 CPU224XP cn的程序

    是这样,我对PLC200不是很熟悉,现在需要一个滤波程序。大致想法是用平均值的方法,比如,采样10个周期,取这10个周期的采样平均值,再输出到某个地址,供程序调用。最好能封装成一个…

    SIMATIC S7-200 2017年11月12日
  • 初学者想求西门子安全模块PLC的介绍和操作要求

    刚刚看了一下SIS是什么,但是具体不太清楚,说让我看看西门子安全模块PLC的介绍和操作要求,大佬们有人有文档之类的吗?万分感谢!! 最佳答案 F System-西门子故障…

    2021年7月5日
  • 为什么s7-200plc上电后指示灯均为红灯

    s7-200plc上电后指示灯均为红灯 最佳答案 STOP、RUN、SF 所有的灯都亮红灯,三个灯同时亮,切都是红灯,此时应该属于异常状态,至少“STOP”、“RUN”不…

    SIMATIC S7-200 2020年10月31日
  • s7 200指令

    在S7 200中有些指令下面有个小红叉是什么意思? 最佳答案 表示你的软件目前所选择的PLC的CPU型号不支持此指令! 提问者对于答案的评价:谢谢你,我明白了!

    SIMATIC S7-200 2021年7月5日
  • s7-200PLC与装有AB组态软件的PC连接通讯问题

    S7-200PLC通过profibus dp EM277模块与AB的组态软件Factroy Talk view studio&nb…

    SIMATIC S7-200 2020年10月31日
  • PLC处理的是不是2进制数

    比如15+10运算,是不是都转成了2进制数进行运算的,然后结果再转化成10进制的? 还有一问,TD400显示字符“辽”时,内部进行了16#的转换然后查中文字符集表得到了“…

    SIMATIC S7-200 2021年7月5日
  • EM231-7PF测温问题

    热电偶直接接到S200的7PF上,测得的温度不对(热电偶放在空气中测室温) 最佳答案 工业温度测量、控制中,热电偶使用的位置总是距测量、控制表(下面简称仪表)有一定的距离,因而从热…

    SIMATIC S7-200 2017年7月30日

发表回复

登录后才能评论