PLC编程:MODBUS通讯程序的交叉引用怎么用

发布时间:2023-12-15  

前几天,有群友在群中提了一个疑问。

他做的MODBUS通讯的程序,原本只需要从通讯中读来1个字/位,然而却发现交叉引用中提示占用了4个字节, 即一个DWORD,问是怎么回事。

大致如图所示。

d055e796-98c3-11ee-8b88-92fbcf53809c.png

d062330c-98c3-11ee-8b88-92fbcf53809c.png

然后群友们的回答各种各样,有猜测变量在别的地方占用的,也有其它各种猜测,莫衷一是。

我就回复提醒说, 你把上面的count改为20,或者100,看看会怎么样。

他改过之后更懵逼了,交叉引用提示的还是只有4个BYTE被使用。我都要读写100多个字了,怎么还提示4呢, 其它的占用咋不提示呢?         

我就把文章的题目作为总结和忠告告诉了提问题的网友和所有群友们,以及再次忠告所有的同行。       

即, PLC编程软件中提供了交叉引用工具,便于你查找变量的使用情况。然而,这个工具的统计是不精确的。你不可以把他当成智能的读程序机器人,甚至还指望它帮你检查程序对错。         

尤其对指针等的应用,通常交叉引用是无能为力的。比如上面的程序段,其实调用的就是指针。这就要求程序的设计者,在设计规划程序时,对指针的访问区域必须自己有严格清晰的限定,而不能全指望交叉引用帮你管理和发现问题。         

对于指针使用,除了上述的直接使用&VB100之外,还可以先将其送到寄存器比如AC0中,而程序块的管脚使用这个寄存器AC0,得到的运行效果是一样的。

如图:

d0697734-98c3-11ee-8b88-92fbcf53809c.png

更进一步,你还可以在程序运行中监控这里的数值,比如读到的会是类似16#8000064之类。我这里PLC没有在线,就不验证具体数值了, 有志者自行在线验证数值正确。         

然后我们再用这个数值替代程序中的&VB100或者AC0, 再次运行, 程序的运行结果仍然是相同的。         

然而,这时候再去检索交叉引用里的字节使用,会发现别说4个字节了, 完全找不到使用的痕迹了。

这是一个技巧。如果之前没有掌握的人,可以趁机了解一下。

这项技巧是个双刃剑。即可以实现正反两方面的功能。    

比如你要在程序中做点手脚,不希望后面读程序的人轻易发现,就可以使用这种方式。

而另一个方面,程序的功能中,需要使用一整片的V区数据,然而使用完了以后会立即恢复其原貌,所以本质上并没有使用,只是暂时借用。那么也可以用这种手法来实现。这样正常审查程序时程序会比较干净,自己也不会被交叉引用中大片无效的变量使用而干扰。         

最后这一段比较绕,对SMART 200编程使用不深的用户可能难于理解。不过我的新书《西门子S7-200 SMART PLC编程技巧精粹》副标题:“给SMART插上FB的翅膀”,书中有对这一技能做了比较详尽的描述。         

书稿是在6月底交给出版社的,最近反馈的消息已经在复审阶段,到正式出版还需要一段时间,读者们再稍微耐心等待。         

上面碎片的技术话题到此结束。         

后面是讲道理的环节。本来按照常规的定式,应该是先把道理讲完,然后再讲案例的。然而咱们有一些同行,不喜欢看道理,大篇幅的逻辑的话会因为不耐烦而看不下去。那就可以现在就关闭不看了。  

我为什么要把这点技术细节专门拿出来讲解?因为这个话题又再次印证了我讲过的标准化编程可以不使用交叉引用的观点。见文章《【万泉河】PLC高级编程:抛弃交叉索引》         

同时,这也是我总结的工控行业五连鞭技能的1/5的内容。

万线圈, 不用MT, 不用交叉索引, 不用IO映射, 不用UDT。……工控行业五连鞭

五连鞭中的第一条万线圈,本质上是不畏惧双线圈,如何避免双线圈错误的方法。所以5条技能的主题全部是否定式的 “不”。          

而有的同行可能是只读题目,根本不会去仔细阅读理解全文的内容。然后就在后面各种回复:UDT挺好的呀, 你是不是不会用啊!是不是不会用交叉索引啊?厂家设计了M和T你还不用,还不让人用,太霸道了。你咋不去跟厂家建议把这些功能取消呢!         

这些同行们都是基本逻辑理解能力有问题。忽略了我在讲到这些技能的时候,都有基本的前提条件:标准化编程烟台方法。         

而这些被我摒弃的功能中,有的是隐含了杀鸡不用宰牛刀,有的是因为技能提高后,可以废弃不用的工具,其中一些工具的使用带来便捷的同时还带来了更多麻烦。         

比如老祖宗讲杀鸡不用宰牛刀的时候,他听不到前半句杀鸡的前提,只看到了不用宰牛刀,就觉得很惊讶,为什么不用宰牛刀,我家里要杀牛, 你不让用,是不是坏?你有牛刀而不用,是不是傻?         

另外还有一个道理:质疑和否定别人的观点, 并不会使自己显得更高明更伟大。         

我这儿写几千字的文章, 有人在后面回复区区几十个字不认可不接受,只能表示他自己的理解能力还没有达到水平。有的时候我的回复,只是在帮助他, 或者帮助其他的围观读者,以防他们被误导。而其实我对这些杂音压根儿都不当回事的。         

要想引起我的重视,很简单,对等的写和我一样长度的旗帜鲜明观点的文章或者案例故事,发表在你自己的专栏,博客,公号,或者只不过是一篇论坛帖子,也可以。         

就像我的导师(爷爷)钱伟长先生,曾经和他的弟子胡海昌院士关于《广义变分原理》的学术观点有过长达十几年的论战,都是通过在科学期刊上长篇论文的形式。学术的观点对错与我们无关,是否有个人误会也无所谓,但这种论战方式至少是对等的。         

比如最近就有一些文章发表的观点,比如“我为什么要用T”, “我为什么也不用M”,“我为什么也不用IO映射”,“我为什么用了IO映射”等等,虽然有个别的并不是在讲普遍道理,而只是讲述了他遇到的特殊应用需求。或者有的是跟我的观点相左,有的则是跟我观点相同。         

这些都很好,都很令我欣赏。         

经常有人拿这些同行的文章转发给我看,看看又有人反对我了,支持我了,或者直接在复制转发我的文章而不署名,我说,不管是反对还是支持这些都无所谓。         

编程技术,是个极易验证的行业。正确的方法可以很容易验证正确,错误的方法也很容易被证伪。(题外话,这不是一个非常高深莫测的高科技行业)。那些发表的和我相同的言论,可以从时间间隔长度上可以看到差距。比如是相差1年,2年还是5年6年?当然,如果一直没人发表同样观点, 那也只是在不断增加这种差距:5,10,15,20 ….         

而那些相反的言论,有没有拿出证伪我的观点或者方法不可行的证据?如果没有, 那也只是给他自己立了个标签,证明XXXX年XX月XX日,XX人还未掌握XX技能。所以有人以为我遇到了反对意见会很生气到跳脚,那是误会。恰恰相反,我会很高兴。这是证明差距的最好的证据了,我乐都来不及呢!         

而有能力对我所有文章所有观点证伪的最有力的一击是,比如某位烟台方法的学员,在阅读了我的资料或者讲座教程后,跳出来反水,证明我文章所述是空话,我自己都没能实现的技能,自己先在文章中吹牛逼了。     

有没有这种可能?是不是有人很期待这种情况的发生?         

别闹了, 我写这些文章,更大的用处在于帮助烟台方法的学员学习理解和提高。他们通过学习我给的例程,我写的书, 毕竟所涵盖的行业范围还是有限,有时候一些细节没能提及,那么通过这些小短文,可以给他们多重印证的机会。         

而外人不知道的是, 在学员群中,经常有学员不堪忍受所在的公司所在的行业,被逼迫使用一些所谓的行业模板框架,而被其中海量的多层嵌套的UDT给恶心到,或者为了读垃圾程序被交叉索引给绕到头晕,跑学员群中发牢骚发泄,然后其他学员们在同情的同时,发出不怀好意的笑声。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    如何实现C51单片机和PLC之间通讯;1、 HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。 它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有......
    的步伐。PLC与上位机之间通讯,也是由于各个厂家的PLC通讯协议不一致,我们在做网络通讯时,往往被一大堆的通讯协议报文格式所阻碍。目前OPC 协议规范的出现打破了这种局面,但是要彻底解决不同品牌PLC......
    三菱PLC和变频器通讯案例;Modbus是Modicon公司为其PLC与主机之间的通讯而发明的串行通讯协议。其物理层采用RS232、485等异步串行标准。由于其开放性而被大量的PLC及RTU厂家......
    动态控制。 PLC是可以编程序的,用来控制电气元件或完成功能、通信等任务。 PLC与变频器之间通信需要遵循通用的串行接口协议(USS),按照串行总线的主从通信原理来确定访问的方法。总线......
    网络图 工业交换机之间通过无线PN通讯的示意图 PLC控制系统中常见的电气元件组成 主要......
    DCM与S7-1500 PN是如何进行通讯的?;概述 S7-1500与SINAMICS DCM之间通过 PROFINET IO可进行周期性通讯,通过TIA组态,该通讯......
    所有数据。 最后,我需要在 PLC 中启用 PUT/GET 通信。这是用于 PLC 和 RS PRO HMI 之间通信的通信协议。 为了启用 PUT/GET 通信,我打开“连接机制”页面并激活“允许......
    浅析S7-200 PLC支持的几种通讯协议;在开始这个问题之前,我们应该了解一个比较容易混淆的问题。 RS485和MODBUS的区别: RS485是一个物理接口,简单的说是硬件。 MODBUS是一种国际标准的通讯......
    PN,6ES7 515-2RM00-0AB0 选择完成后就会出现2个CPU。 点击PLC-1的PROFINET 接口_1[X1] 建立接口通讯,设置IP为192.168.0.10 同时设置切换通讯......
    。丰田在 2015 年时在皇冠(Crown)车款上推出的车间通讯则与两者不同,采用车对车直接通讯,同时可与交通设施沟通,如可知道红绿灯何时会变换灯号等等。 凯迪拉克(Cadillac......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>