Search the Community

Showing results for tags 'function blocks'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Found 38 results

  1. Hello. I'm trying to use index addressing inside function block.  The command *D200 doesn't work. Is it necessary to use IR0, ID0,... inside function block? Thanks. Best regards
  2. in Citect i use the following function to associate various Tags with the next popup window, in the previous versions the tags passed to the trend fine since upgrading to 7.4 the trend pens dont display but all the values display fine.  FUNCTION // function AssPIDPopup // Expand a full set of PID tags and open // the PID block supergenie AssPIDPopUp(STRING sSGenie,STRING sBasePIDTag)     AssVarTags(-2,0,sBasePIDTag + "_PV");      AssVarTags(-2,1,sBasePIDTag + "_SP");      AssVarTags(-2,2,sBasePIDTag + "_OP");      AssVarTags(-2,3,sBasePIDTag + "_MAN");      // Now the tags for the PID tuning SG     AssVarTags(-2,4,sBasePIDTag + "_KP");      AssVarTags(-2,5,sBasePIDTag + "_KI");      AssVarTags(-2,6,sBasePIDTag + "_KD");      AssPopUp(sSGenie);      END I added a button to run the following code FUNCTION Loadtrend()     TrnSetPen(19, 1,  AssInfoEx(1,0));     TrnSetPen(19, 2,  AssInfoEx(2,0));     TrnSetPen(19, 3,  AssInfoEx(3,0));     Prompt("Test");      END     when clicked the pens set to the trend fine, i tried to run the code from a function but it did not work. i am new to citect and am sure i am missing something stupid.
  3. Enable bit in function block

    There are a lot of instructions in function block that are missing the enable input that is present when programming in ladder logic, such as  ADD or MOV.  It seems to be very limiting. The only way around it that I know of is to write your own function block in ladder logic or statement list and use that. I seems rather limiting of a language if it relies on other languages for it to be usable. Does anyone know why the enable bit was left out in many function blocks when it is so useful in ladder logic? Pat
  4. I'm having trouble with some very basic programming using function blocks. Specifically Connect Components FB programming, but I think it is a general, common application. Using ladder logic, it is easy to set a value based on the status of a bit. If the bit is false, move a zero into the variable. If the bit is true, move and 88.0 into the value. This relies on the enable bit of the mov instruction in ladder logic. Many function block instructions do not have enable bits. How would I change the value of a variable based on the status of a bit using function block programming? A real world example: You have a two position selector switch. If it is turned to the left, the drive runs at 0 Hz. (off) if it is to the right, it runs at 88.0 Hz. Or if you have a 4 position selector and want to select between 4 speeds. This should be a simple task, right? I've called the tech connect support line a few times and sent them a few emails and they haven't been able to figure it out. This is such a basic task. Thanks, Pat
  5. Hi there I'm an embedded software engineer mostly programming C/C++ in Linux and have very little knowledge of the PLC environment.  Recently my attention was diverted towards integrating C/C++ (Linux software) into PLC and then presumably as a function block which is supported with something called PLCOpen. Is that right ? How is multithread support in PLC in general ? and/or with the these function blocks or what ever might become instead when integrating/porting C/C++ code into PLC.  The current situation is purely embedded Linux environment with open-source 3rd party userland that our code relies heavily on. How feasible is to port such environment over to PLC (given that the system supports it) ? I've been looking into B&R Automation Studio 4 and having a hard time to establish concrete feeling on how difficult/easy it is to port the code.  Hope anyone can give me a slight insight into this.  Kind regards Einar
  6. PAROCK1 for HMI/SCADA View File Now a software solution is available for your Modbus (MB) needs in Rockwell/Allen-Bradley Control Logix or Compact Logix (Clgx) family processors, instead of a traditional 3rd party hardware like Prosoft MVI-56, Molex SST-SR4-CLX-RLL etc.  It is an Add-on instruction (AOI) for PLC/PAC firmware v16 or later, (other solutions are available for pre v16 systems).  For hardware interface, use PLC’s channel 0 (serial) or TCP/IP Interface module(s) to have as many MB TCP/IP devices or serial devices.  (Some limits apply based on system configurations, Comm. settings depending on HW used.) Connect any MB Client/Master or Server/Slave device(s) to your CLgx PLC, including flow computers, analyzers, VFDs, Power Monitors, Level gauges, Smart I/O, etc.  All the MB public/native function codes are supported.  32-Bit integers/floats as single entity are supported with byte and word level swapping. A separate utility automates the data mapping to your PLC logic.  Features -Serial Master (BASIC required Option); TCP; Slave; Redundancy; More than 5000 accumulative registers; MB CFC (Custom/Private Function Code) Support; Data mapping too – Between PAROCK1 & your PLC logic; Packaged with Rockwell; TCP/IP Interface Module; Volume Discounts; Annual Support Requirements -Rockwell/AB-CLgx processor with v16 or later.  Contact PCI for earlier versions. -If using CPU’s Chan0, you cannot use Chan0 for any other user mode activity. You can use it for non-user mode activities -TCP/IP Interface Modules from Rockwell/AB supported, are: -1756-EN2xx ControlLogix® Ethernet/IP communication modules, firmware revision 5.007 or later -1756-EWEB ControlLogix Ethernet/IP web server module, firmware revision 4.006 or later -1768-EWEB CompactLogix Ethernet/IP web server module, firmware revision 1.002 or later -1769-L30ER, 1769-L30ERM, 1769-L30ER-NSE, 1769-L33ER, 1769-L33ERM, and 1769-L36ERM CompactLogix controllers, firmware revision 20.011 or later -1769-L24ER-QB1B, 1769-L24ER-QBFC1B, 1769-L27ERM-QBFC1B CompactLogix controllers, firmware revision 20.011 or later -1769-L16ER, 1769-L18ER, 1769-L18ERM CompactLogix controllers, firmware revision 20.011 or later Other Related Services/Items -Custom PLC Add-on instructions building -PLC upgrades, troubleshooting, applications -PC Windows, iOS5, Linux, Mobile devices Comm. Drivers -Custom development, Technology Transfer Services  -Other Non-AB communication drivers for serial or TCP  -Full control system integration, training, architecture design This driver can be conviniently used with Visual Studio in development of complete large scale complex HMI/SCADA Systems. It can be used to perform advanced reporting MES, analytics, IoT, Big data type apps. One example is available to download here For More Info Overview of Parijat Drivers: Click here  Additional supporting Info about Parijat Drivers:Click here Complete Related Driver options: Click here     Submitter Scadadoctor Submitted 03/10/16 Category Other PLC Demo Software
  7. Function Block or any other method

    Hello, I am a student that has been taught ladder logic for three years( on many different plc's ) but, I would like to learn an alternative method is there any way to convert ladder into Function Block or some other type of programming in RS logic 5000 or any other controller? If not can some one explain the basics of Function Block programming.
  8. Siemens S7-1500 and SICK

    Hello all, Let me start by saying that although I have been working with PLCs for 20+ years I am very (as in brand) new to the Siemens world (my wheelhouse is AB). That being said I have a Siemens S7-1500 (1511 specifically) CPU with a couple of SICK multi-turn Profi-Net encoders (AFM60A-S4NB018x12) that I need to talk to. - I am using TIA v13 with all of the updates. - I have the GSD file from SICK for the encoder. - I have no clue what I am doing - I can see the encoder values update in the watch table as I move the encoder. All fine and dandy so far... Here's where the white flag is going up.... - I am of the belief that there are existing function blocks out there 'somewhere' that can read and write to the base parameters. I have contacted our local rep who deferred me to SICK. I have emailed and left messages with them and have not gotten a return anything thus far. Here's our application... We are attaching each encoder to its own rotary gear mechanism. The rotary will need to turn in the CW direction approximately 400 degrees then return to its start point by rotating in the CCW direction by the same amount. If/When production/maintenance needs to 'rehome' the assembly, the expectation is that they 'pin' the drive in a known location then a bit would be set within the CPU that would assign a specific value to the encoder's actual position. In the SICK manual (8015078/YIX6/2015-01-16) on page 31 (section 3.6.3) there is reference to Preset control. This is what I believe we need to perform the aforementioned function. Does anyone have any examples that they could share on how to read/write to these encoders by use of a Function Block or other? Relatively desperate for help at this point. Can post test code if need be. Thank you in advance, TLAF
  9. Recipe function : factory talk view 6

    Hi!!! Could anyone please tell me how can i make my recipe function working having : 1. SQL database linkage 2. VBA programme 3. Without making new recipe tags (want to use actual plc tags only, no new recipe tags) I am new to factory talk so please tell me from the scratch. It would be highly appreciable. Thank You.
  10. Move Function Not Working

    I am very new to PLC's, I work in a power plant and we have an ABB DCS. We have some vendors that use PLC's and they try to make them work with our system. Currently I am working on a project were I am trying to add 8 analog outputs to the PLC. I am working with two 1756-L71 controllers (redundant) and the rev for the program that was written 20.01. Basically I have 8 analog inputs that I want to bring to the spare analog outputs that I have. I want to see these inputs in our DCS. I wrote simple logic that at the end of the rung has a move block moving the source which is the input and taking it to the destination which I made an alias tag for the output channel that would correspond. Problem is I can see the source number moving, but the destination number stays at 0. I can type a number into the destination and it will work. I can see my 4-20 signal I am sending out in the DCS. Everything before the move function is true, I have and open contact, and a closed contact and they both are green. This is happening on all eight of my outputs that I am working on. Please help I have learned a lot from this experience but I cannot figure out what has me stuck this time.
  11. Hi friends, Can anybody tell me when to use a local-Static variable and when to use a Local Temp variable whilst creating a Function-Block in S7 -1500 using TIA portal. Thanks for looking in. Best wishes.
  12. In my program, I have about 100 rungs for 100 faults. Each rung looks very similar. I thought I could make the code more maintainable by using function blocks, to avoid having to change each rung individually (if I needed to). Would it be best practice to create a new instance for each fault, or to reuse the same instance for each fault? I come from a C and java background, so I am confused as to whether a function block is supposed to be like a function (in C), or supposed to be like a class (in Java), or neither...
  13. Let me set the scene. I am inside my function block. I would like move an internal integer into an integer that belongs to my program symbol table. I would like to do it inside the function block, so that the function block is self contained. i.e. it does not need any extra inputs/outputs in the function block call. Is this possible? If I was writing this in Object Oriented code, I would just write this within my method: myGlobalVariable = myLocalInteger; and that would be that...